新米Webエンジニアにオススメの基礎教材

自分も気付けば社会人のエンジニアとして2年目になったので、ここらで自分が読んでよかったWebエンジニアとしての基礎教材をまとめてみたいと思います。なお、本記事で扱う「Webエンジニア」という言葉は、具体的には「Web技術を扱うバックエンドを軸としたエンジニア」という意味を指しています。本記事で挙げる教材の多くは学生時代に読みましたが、社会人となった今でも折に触れて読む返す機会の多い、自分の基礎となっている教材です。と言っても定番の教材ばかりですが。

設計

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

メソッドの命名方針のようなソフトウェア開発におけるミクロの視点の設計指南書です。この手の書籍にはCODE COMPLETEという名著がありますが、かなり重厚(その分内容も重厚)なので、それに比べるとページ数的にもあっさりとした本書は手に取りやすくオススメです。

Rubyを題材にOOPの思想や作法について書かれた書籍。コードをリファクタリングしていく形式で説明が展開していく形式で書かれており分かりやすいです。

増補改訂版Java言語で学ぶデザインパターン入門

増補改訂版Java言語で学ぶデザインパターン入門

Javaを題材に書かれたOOPデザインパターンの書籍。これ以外だとGang Of FourによってC++smalltalkで記された書籍などが古典的名著として有名です。GoやRustなどが流行りつつある現代のソフトウェア開発におけるOOPデザインパターンの有用性には議論があります(以下URL参照)し、この書籍でJavaで書かれたデザインパターンRubyなどの別のOOP言語でそのまま全て書き換えられるわけでもありません。それでも、OOPの思想や作法の理解を助けてくれるという点においてデザインパターンを学ぶことは今尚価値があると個人的には思います。 一時期プログラミングのデザインパターンというものが大流行しましたが、現在ではどのように評価されているのでしょうか? - Quora

Clean Architecture 達人に学ぶソフトウェアの構造と設計

Clean Architecture 達人に学ぶソフトウェアの構造と設計

ソフトウェアアーキテクチャの設計指南書。前半でコンポーネントの原則などの説明がなされ、後半でやっとアーキテクチャパターンとしてのクリーンアーキテクチャが登場します。説明がくどい個所もありますが非常に良書。

データベース

Webエンジニアのための データベース技術[実践]入門 (Software Design plus)

Webエンジニアのための データベース技術[実践]入門 (Software Design plus)

Webエンジニアのためのデータベース概論といった感じの書籍。MySQLを中心にSQL、DBの冗長化、運用、パフォーマンスチューニングといったRDBに纏わる一通りのトピックを扱っています。データベース技術を俯瞰する上で良い書籍。NoSQLにも少し言及しています。

SQL 第2版 ゼロからはじめるデータベース操作 (プログラミング学習シリーズ)

SQL 第2版 ゼロからはじめるデータベース操作 (プログラミング学習シリーズ)

SQLの教材。RDBの種類の違いによる文法や機能の違いにも言及されています。

達人に学ぶDB設計 徹底指南書

達人に学ぶDB設計 徹底指南書

有名なRDBの設計指南書。説明がわかりやすいです。

SQLアンチパターン

SQLアンチパターン

実際の開発現場で出会う様々なデータのユースケースからそのためのDB設計のアンチパターンを列挙しつつ、より良い設計のための指針を解説してくれる良書です。

インフラ

[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識

[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識

OSについて実際のコードを使った実験やイラストを用いてわかりやすく説明した書籍。

マスタリングTCP/IP 入門編 第5版

マスタリングTCP/IP 入門編 第5版

ネットワーク関連技術に関する定番書。自分の場合大学の授業の指定教科書だったのでこれで勉強しましたが、もっと良い書籍がありそうな気もしています。

Goならわかるシステムプログラミング

Goならわかるシステムプログラミング

Goのサンプルコードを使ってOSやネットワークを学ぶ書籍です。上2冊を読んだ後に読むと更に理解が深まります。近年Goを使って低レイヤーを学べる書籍がたくさん出てきています。

はじめてUNIXで仕事をする人が読む本

はじめてUNIXで仕事をする人が読む本

実際に業務で扱うという視点でUNIXの機能と使い方について解説した書籍。

新しいシェルプログラミングの教科書

新しいシェルプログラミングの教科書

シェルスクリプトに関する書籍。古い書籍では扱われていないbash連想配列なども扱っています。

Docker/Kubernetes 実践コンテナ開発入門

Docker/Kubernetes 実践コンテナ開発入門

コンテナ技術が開発現場で広く使われるようになったのはここ数年ですが間違いなくこれからますます使われていくであろう技術でありエンジニアの必須科目となりつつあります。本書はDockerとKubernetesについて実際の開発現場の視点を踏まえつつ基本から解説した書籍です。コンテナオーケストレーションとしてDocker Swarmは実際の開発の現場ではほとんど使われておらず、kubernetesデファクトスタンダードとなりつつありますが、一般的な開発現場でよく使われているMySQL、ninx、jenkinsなどの技術を使った構成のWebアプリの構築も学べるのでSwarmの章もやっておいて損はないと思います。

これだけでOK! AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座

クラウド技術の知識は現代のエンジニアの必須項目です。Udemyの本講座はAWSの認定ソリューションアーキテクトの資格試験突破を想定した講座ですがAWSの基礎的な考え方や使い方を一通り抑えることができます。また、AWSはterraformなどのツールを使わない限り、GUI上でポチポチ操作することになりますが、その点書籍より動画の教材の方が適していると思います。

dev.classmethod.jp AWSを用いたterraformに関する貴重な書籍。技術書典で販売されたものだがBOOTH - 創作物の総合マーケットでpdf版を購入できます。 Infrastructure as Codeによる構造的な記述に加えてAWSのベストプラクティスに関する解説もついているため、AWSに関する知識の整理にもなり、非常にオススメです。

入門 監視 ―モダンなモニタリングのためのデザインパターン

入門 監視 ―モダンなモニタリングのためのデザインパターン

監視について体系的にまとめた貴重な書籍です。インフラからフロントエンドまで広くカバーされています。

Web技術

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

定番書。HTML, HTTPの仕組みやAPIの設計といったWebの基本知識を広く扱っています。

ビジュアルデザインではなくコードとしてのCSSの設計指南書。プログラミング言語同様、CSSもまたCSSなりの作法があり、それを弁えないとソフトウェア開発と同じような負債を産むことになるため、少しでもCSSを扱う場面があるのであれば読んでおいて損はないと思います。

セキュリティ

www.ipa.go.jp webセキュリティといえば徳丸本が定番ですが、いかんせん重厚で読み切るのには根気が必要です。とはいえ、事業を再起不能にさせる自体も起こしかねないセキュリティに関する基礎知識は真っ先に押さえておくべきです。徳丸本を読む前に一先ず最低限の知識を抑えたい、という人にはIPAが無料で配布している上記のURLの資料及びその別冊は必要な知識がコンパクトにまとまっているのでオススメです。

組織・チーム

DevOps導入指南 Infrastructure as Codeでチーム開発・サービス運用を効率化する (DEV Engineer’s Books)

DevOps導入指南 Infrastructure as Codeでチーム開発・サービス運用を効率化する (DEV Engineer’s Books)

DevOpsに関する書籍で思想だけではなく具体的にどのツールをどのように使えば実現できるのか記した数少ない書籍です。最先端とは言えませんが比較的モダンなツールで説明がなされています。

昨年話題になった書籍。開発チームのマネージャーだけではなくエンジニアにとっても良い書籍です。

アジャイルサムライ−達人開発者への道−

アジャイルサムライ−達人開発者への道−

アジャイル開発の入門書です。Web業界で自社サービスに携わる以上、アジャイルの知識は最低限押さえておきたいところです。