WEBエンジニアになるために読んだ技術書14選
WEBエンジニアになって9年目になりますが、これまで読んで、ためになった技術書を紹介します。
1.Webサーバを作りながら学ぶ 基礎からのWebアプリケーション開発入門
WEBを理解するのが難しいのは、それが概念だからだと思います。WEBだけを説明しようとすると抽象的になりがちです。そのため、どれか一つのプログラミング言語を選んでWEBをプログラムとして記述する必要がありますが、この本はJavaを使ってそれを説明しています。
最初はテキストファイルの送受信という最も単純なプログラムから始まり、徐々にWEBの要素(HTTP、ステータスコード、HTTPメソッド、Cookie、セッション)を追加し、最終的にはWEBサーバーそのものを作成する構成になっています。
この本を読む前は、ブラウザやWEBサーバー(Apache、Nginx)は設定が多くて理解が難しいものでした。しかし、読んだ後は「テキストファイルの送受信プログラム」に過ぎないと考え、気楽に取り組めるようになりました。このメンタルモデルの獲得こそが、この本をおすすめする理由です。
2.リーダブルコード
綺麗で読みやすいコードを書くためノウハウが詰まった本。特定の言語にフォーカスされておらず、どんな言語でも当てはまる普遍的なノウハウが書かれています。私はこの本を人生で2回(2年目と7年目)読みましたが、読むたびに印象が変わりました。2年目の時は単なるコーダーでしたが、7年目にはレビューをする立場になっていました。そのため、役割の違いも影響していると思います。2回目以降は折に触れて読むようにしています。
ただし、2024年現在ではGitHub Copilotを使えば、変数名の提案やリファクタリングが可能です。そのため、読みやすいコードを書く技術は以前ほど必要ないかもしれません。
3.独習Git
今の時代、どんなエンジニアでもGitを呼吸するように使いこなせる必要があります。この本は、全てコマンドベースで解説されており、Gitの根本を学ぶことができます。Gitをコマンドレベルで理解しておけば、どんなクライアントツールを使っても「裏であのコマンドが動いているんだな」と想像でき、Gitに対する恐怖心を払拭することができます。
4.Docker/Kubernetes実践コンテナ開発入門
この本も、すべてのエンジニアが知っておくべき基礎教養としてのDockerを、コマンドレベルで解説してくれます。
5.オブジェクト指向UIデザイン──使いやすいソフトウェアの原理
「マニュアル不要で直感的に使いやすい画面を設計するにはどうすればよいか?」の回答が体系化されており、その手順と豊富な練習問題が備わっている書籍。小手先のテクニックではなく、人間が道具(システム)を使うとはどういうことか?を突き詰められており、UIデザインをする上で拠り所となる哲学・概念を学ぶことができる。必須ではないが下記の書籍とセットで読むとより理解が深まる。
6.体系的に学ぶ 安全なWebアプリケーションの作り方
「徳丸本」として知られるこの本は、セキュリティ界の巨人、徳丸浩氏によるWebアプリケーションの脆弱性を体系的にまとめたものです。この本は「読むべき」ではなく、「読んでいないと話にならない」一冊です。各脆弱性について、PHPで書かれた簡単なサンプルコードが用意されており、座学だけでなく実際に手を動かして脆弱性を学ぶことができます。
7.ハッキングAPI ―Web APIを攻撃から守るためのテスト技法
徳丸本が防御に特化しているのに対し、こちらは攻撃の仕方に特化した本です。攻撃ツールや学習用の脆弱性があるWEBアプリが多数紹介されています。特に、Burp Suiteは自分がWEBアプリケーションを作成する際のペネトレーションテストに非常に有効です。徳丸本が最低限のセキュリティの教養なら、この本はその次のステージの一冊です。
8.フロントエンド開発のためのテスト入門 今からでも知っておきたい自動テスト戦略の必須知識
フロントエンドの自動テストを検討するなら、まず最初に読みたい一冊です。単体テスト、インテグレーションテスト、E2Eテストに使用するツールが紹介されています。また、テスト戦略についても従来のピラミッド型だけでなく、最近Kent C. Doddsが提唱したテストトロフィー型と、それを実践するためのReact Testing Libraryも説明されています。サンプルコードが付いており、わかりやすく手を動かして学べます。
9.雰囲気でOAuth2.0を使っているエンジニアがOAuth2.0を整理して、手を動かしながら学べる本 +2冊
設定手順を見ながらOAuthやOIDCを設定して動かせたけれど、裏でどう動いているのか、設定したパラメーターの意味や安全性がわからずにモヤモヤしている人向けの3冊です。この3冊はセットで読んでほしい内容です。Googleサービスでのチュートリアルもあり、手を動かして理解できるようになっています。
10.うずうずカレッジ(CCNA試験対策講座、LinuC試験対策講座)
書籍の紹介に見せかけて、動画コンテンツも紹介したいと思います。私は情報系の大学を出ていないため、ネットワークやLinuxについては業務で必要になったときに都度調べる程度の知識しかありませんでした。エラーメッセージをググって解決策を実施するだけでしたが、この方法だと解決策が見つからないときに困ってしまいます。そこで、体系的に理解したいと思い受講したのがこの2つのUdemyの講座です。
CCNAやLinuCの資格を受けなくても、講座を受けるだけで知識の整理になります。特に、Cisco Packet Tracerというネットワークシミュレーションツールを使うことで、座学だけになりがちなネットワークの学習を実際に手を動かして理解できます。
11.モダンJavaScript講座
続いてもも動画コンテンツ、こちらはYouTubeなので無料で見ることができます。javaScriptの誕生からECMAScript、CommonJS、jQuery、Node.jsといったjavaScriptの歴史をクイックに知ることができます。特にNode.jsを使用すると、必ずぶつかるECMAScriptやCommonJSがどのような経緯で生まれたかを知ることができます。歴史を知ることで、より深くjavaScriptを理解することができます。
12.実践Next.js —— App Routerで進化するWebアプリ開発 エンジニア
フロントエンドの世界は移り変わりが激しいため、この本の内容はすぐに時代遅れになるかもしれません。しかし、キャッシュを存分に使ったハイパフォーマンスなWebアプリを作成するための方法が記載されています。2024年時点でフロントエンドの最前線をキャッチアップするために最適な一冊です。
13.イノベーターズ1/2 天才、ハッカー、ギークがおりなすデジタル革命史
コンピューター、プログラミング、インターネット、ソフトウェア、検索エンジン、WEBエンジニアのツールがどのように生まれたかを知ることができる、上下巻の本です。イノベーションがどのような条件下で生まれるのかを詳細に記述しています。この本は必読書ではありませんが、ある程度スキルがついて俯瞰できるタイミングで読むと知識に深みが出ます。概念を学ぶ際、思わぬところで知識がつながることがあります。例えば、「オブジェクト指向UIデザイン──使いやすいソフトウェアの原理」を読んだ際、「UIデザインはタスク指向からオブジェクト指向に進化してきた」という言葉が出てきましたが、イノベーターズを読んでいたおかげでタスク指向の解像度が高くイメージすることができました。
14.もしアドラーが上司だったら
最後の一冊は技術に関する本ではありませんが、仕事をしていると、結果が出なかったり、何のために働くのかわからなくなる時が来ます。そんな時に、もしかしたらヒントがもらえるかもしれません。この本ではなくても、「アドラー心理学」というキーワードは覚えておいて損はないと思います。