エンジニアリングの必須図書 40冊 2023年版
はじめに
今回の記事では、私の独断と偏見でエンジニアリングにおける必須の書籍を、以下の分野に分けて40冊共有する。
- Web開発
- 行動経済学
- ソフトスキル
- その他
対象とする読者
- プログラミング初心者
- どの書籍から読み進めればいいかわからないプログラマー
- なにか新しい書籍を読みたいひと
- なんとなくタイトルが気になったひと
Web開発
『リーダブルコード』
良質なコードの原則と具体的なテクニックを丁寧に解説している。プログラミング初心者はまずこれを読むべき。良質なコード―要は、メンテナンスしやすいコードを書く上で重要なヒントを教えてくれる。コーディングで一生役立つ知識が満載だ。何度読んでも決して色褪せることのない不朽の古典である。
『14歳からのプログラミング』
図解付きでプログラミングの基礎(例:変数、関数、条件分岐)を理解できる。小難しい専門用語が一切なく、初心者でも問題なく理解できるように書かれている。わかりやすさとカジュアルさ、正確さの三拍子揃った良書。コンピュータサイエンスの入門としても最適である。まったくの未経験者はまずこちらの書籍から読むべきだ。
『プリンシプル オブ プログラミング』
タイトルの通り、プログラミングの原則をこの一冊で徹底解説している。本書は『リーダブルコード』や『14歳からのプログラミング入門』と比較して、内容が抽象的なのが特徴だ。良質なプログラミングを行うには、日々の行動習慣から見直すことの重要性を教えてくれる。やや専門的だが、初心者はとりあえず買って損はないだろう。
『プログラマーは世界をどう見ているのか』
本書はプログラミングを学ぶ上で身につけておきたい思考術や基本的な知識や文法を学べる。新書なので200ページにも満たず、さっと読めるので初心者でも問題なく読み進められるのがポイントだ。
著者は2ちゃんねる創設者の西村博之である。
『レガシーコードからの脱却』
レガシーコード―言いかえれば、テストのない変更が難しいコードを改善するための原理原則を丁寧に解説している。ソフトウェア開発を根本から問い直してくれる良書だ。しかし、『リーダブルコード』のように具体的なソースコードを修正するテクニックがないので初心者には難しいかもしれない。
本書は、普段私達が書いているコードを根本的に見直すきっかけを与えてくれるだろう。
『図解即戦力 Web技術が これ1冊でしっかりわかる教科書』
本書は図解と易しい解説でWebの基本的な知識が丁寧に解説されている良書である。初心者がWebの基本的な仕組みを学ぶ上で最初におすすめできる。Web技術に関することならすべてが解説されており、初心者から上級者まで幅広い層に役立つ画期的な書籍だ。
『Webを支える技術』
先ほど紹介した『Web技術が これ1冊でしっかりわかる教科書』と同様に、Webに関する基礎知識が解説されている。一度読んだだけで理解できなくても、Webサービスの設計や実装を経験して再度読み直すとWebの仕組みがわかる。一度読むだけでは決して理解できず、何度も読んで理解を深めるように設計されている。
本書は主に中上級者向けだ。
『Web API: The Good Parts』
Web APIの設計や開発、運用に必要な基礎知識や原則、具体的なテクニックが本書1冊に丁寧に解説されている。Web APIは設計次第では使いにくいものになるだけではなく、後悔した後のメンテナンスも困難になる。ゆえに、Web APIを美しく設計するスキルが必要になる。
本書はWeb APIを設計する上で重要な減速や具体的なテクニックを学ぶ上で必要不可欠だ。Web API設計・開発で生計を立てたいなら絶対に読むべきである。
『オブジェクト指向でなぜつくるのか』
本書はPythonやJavaなどのオブジェクト指向プログラミング言語を実務で扱っているプログラマーなら全員読むべきだ。特に、オブジェクト指向はプログラミング初心者が躓きやすいポイントの一つ。オブジェクト指向を学ぶなら本書から理解することから始めよう。
『IT用語図鑑[エンジニア編] 開発・Web制作で知っておきたい頻出キーワード256』
本書は我々プログラマーが実務で頻繁に耳にする256の専門用語を徹底解説している。IT分野は日進月歩で新しい用語が頻繁に登場し、経済学や簿記のように体系的に学ぶのは非常に難しい。本書は分野ごとに頻出する用語にまとめてあり、解説が非常に丁寧だ。イラストも豊富で視覚的に用語をイメージしやすい。
本書は専門用語ではなく、エンジニアが実際のコミュニケーションで使う言葉(「叩く」や「キックする」など)とその使い方を丁寧に解説している。本書を読んでプログラミングの概要やIT業界をイメージしておこう。
『達人プログラマー』
本書はDRY等の実務で取り扱うコーディングのテクニックだけではなく、開発の進め方や重要なマインドセットを解説している。422ページと、市販で売られている書籍の中ではボリュームが多いが、優秀なプログラマーの立ち振舞いやソフトウェア開発のフローのエッセンスがすべて書かれている。
プログラマーとして必要なマインドセットや思考術を学べる。
『インターフェイスデザインの心理学』
本書はアプリケーションを開発したり、サイトを制作したりする上で必要なデザインの知識や考え方が心理学の観点から説明している。
- ユーザはどのようにアプリケーションやサイトを見るのか
- ユーザはどう情報を読むのか
- ユーザはどう記憶するのか
- ユーザはどう決断するのか
主にこれらの内容を図解やイラストを駆使して徹底解説している。良質なデザインは論理で説明できることを学べる。
『ソフトウェアアーキテクチャの基礎』
本書はソフトウェアアーキテクチャを図解やイラスト、具体例を的確に用いて徹底解説している。曖昧な言葉として語られることが少なくない「ソフトウェアアーキテクチャ」を位置からr定義して初心者にもわかりやすく解説している。ソフトウェアアーキテクチャの意義や設計のテクニック、具体的なソフトウェアアーキテクチャの特徴や課題点、重要なマインドセットが本書1冊で学べる。
これからアーキテクトとしてIT業界に貢献したいなら必携だ。
『ソフトウェア設計のトレードオフと誤り』
本書はソフトウェア開発で遭遇する問題をソースコードや図解で解説し、その対処法とセットで解説している。現役で活動しているプログラマーたちが試行錯誤して生み出した問題解決へのヒントは非常に読み応えがあり、良質な問題解決へのヒントを提供する。
ソフトウェア設計・開発で困っているプログラマー全員に共有したい渾身の技術書である。
『良いコード/悪いコードで学ぶ設計入門――保守しやすい 成長し続けるコードの書き方』
本書は一言で言えば、『リーダブルコード』の内容をより実務に特化して解説した技術書である。リファクタリングや設計、メンテナンスのしやすさにこだわりたい職人気質のプログラマーにおすすめしたい。リファクタリングやデバッグで困ったなら真っ先に目を通しておくべきだろう。
余談だが、本書はリファクタリングやデバッグだけではなく、現場のエンジニアリングで重宝するコミュニケーションの方法、特に交渉術にも一部言及している。
『はじめてのSQL』
SQLをはじめて学ぶプログラマーを対象に、SQLの基本を徹底解説している。データベースの概念等の基本的な知識から、データベースの作成やクエリの基本、トランザクション等、実務で必要なポイントをコンパクトにまとめている。SQLをこれから学ぶ上で絶対に欠かせない。
『入門 モダンLinux』
Linuxコマンドのその意味、具体的な使い方を画像やソースコードを駆使して丁寧に解説している。O'Reillyは主に実務向けの技術書を出版しているものの。こちらは初心者でもわかりやすく親切な設計がなされている。LinuxはWeb開発の生活必需品の一つと言っても過言ではない。深く学びたいなら本書を買って実践するべき。
『ノンデザイナーズ・デザインブック』
デザインの参考書の原点にして頂点である書籍である。デザインの原理原則を「近接」「反復」「整列」「コンストラクト」の4つに分割して解説している。デザインの基本的な知識はこれさえ読んでおけば正直問題ない。WebやUI等のデザインは勿論、スライド資料にも本書の考え方を応用できる。本書を読めば、デザインの良し悪しを区別できるだろう。
"A Philosophy of Software Design"
ソフトウェア開発における原則を簡潔に解説している洋書だ。『リーダブルコード』よりも設計に焦点を当てており、小手先のテクニックだけではなく原則もセットで解説している。
本書は初心者から上級者まで使える。貪欲にソフトウェア開発を学びたいなら絶対に購入して損はないだろう。
"Design Patterns: Elements of Reusable Object-Oriented Software"
ソフトウェア開発で必須の「デザインパターン」を丁寧に解説している。デザインパターンの実例だけではなく、それを学ぶ理由もセットで解説している。
本書は、ソフトウェア開発の分野において特に専門的なデザインパターンを取り扱っているので非常に専門的である。それ故に初心者にはおすすめできない。ただ、本書の内容を理解できればデザインパターンで苦労することはないだろう。
『データ指向アプリケーションデザイン』
本書はデータベースやストリーム処理等、アプリ開発に関連する幅広いトピックを扱っている。CassandraやMongoDB等の大量のデータを扱う技術やツールにも言及している。アプリ開発に関連する原則、技術やテクニックが包括的に解説されている。
内容は非常に難しいが、アプリケーション開発の原理原則を学ぶ上で決して外せない。
行動経済学
『影響力の武器[第三版]:なぜ、ひとは動かされるのか』
本書は人間の心理の特徴を踏まえた悪質な詐欺や手口の正体、その対処法を丁寧に解説している。巷で出回っているWebサービスは人間の心理の特徴を研究して設計されることが多い。人間の心理を学ぶという観点で、ソフトウェア開発で生計を立てるプログラマー全員におすすめできる。
余談だが、本書は行動経済学と言うよりは、むしろ心理学の古典である。
『ファスト&スロー』
本書は行動経済学の古典だ。人間の意思決定や無意識に潜む正体やバイアスを解説している。本書の特徴は人間の思考を二種類に分けて、意思決定のからくりを説明している点にある。
人間は完全に合理的に判断できないことを学べる。『影響力の武器』とセットで読んでおきたい。
『NOISE』
本書も『ファスト&スロー』と同様に、人間のバイアスや非合理的な行動にフォーカスし、そのメカニズムを解説している。私たちが考えている、公平かつ均一な判断でもばらつきや偏りが生じることを学べる。良質な意思決定へのヒント、人間の非合理的な行動に対する対処法を学べる。
余談だが、本書の著者は『ファスト&スロー』の著者でもあるダニエル・カーネマンだ。
『情報を正しく選択するための認知バイアス事典』
本書は行動経済学や心理学等の様々な分野に基づいて、人間の非合理的な行動とその対処法を丁寧に解説している。認知バイアスを学ぶことは人間の行動を正しく理解することにつながる。イラストや図解付きで解説されており、初心者でも問題なく学びやすい。
本書はエンジニアリングで役立つ行動経済学を学ぶという観点だけではなく、私たちの日常生活における行動習慣や思考習慣を改善するという観点でも絶対に読んでおくべき書籍だ。
余談だが、本書の帯にある以下の印象的なメッセージはエンジニアリングに関係なく、私たちの行動習慣や思考習慣を改善するヒントが隠されている。(続編も同様)
賢い人・偉い人も、「見たいもの」だけ見るとバカになる。
思っているほど、あなたは賢くないし、あなた以外は愚かじゃない。
『予想どおりに不合理──行動経済学が明かす「あなたがそれを選ぶわけ」』
本書は行動経済学の面白さ、奥深さを教えてくれる。「具体的なエピソード+エピソードから学ぶ対処法」というシンプルな論理構成で書かれている。専門用語がそこまで多くないので、初心者でも問題なく読み進められる。
『FACTFULNESS』
本書はデータや真実に基づいて世界や身の回りの出来事を観察することの重要性が強調されている。思い込みではなく事実をもとに行動することの重要性や、意見と事実を分離して考えることの重要性を学べる。誤った思い込みの原因である人間のバイアスの特徴と、その対処法を丁寧に教えてくれる。
ソフトスキル
『人を動かす』
コミュニケーションや人間関係の原理原則を解説している。良好な人間関係を構築したいなら真っ先に読むべきだ。他者の「人格」を攻撃しない重要性を説いている。人間関係に苦悩しているなら絶対に読むべき。
『なぜ人と組織は変われないのか』
本書は「わかっているのにできない、行動に移せない」ことの原因とその対処法を解説している。免疫マップで行動できない原因をあぶり出すアプローチが非常に斬新だ。「わかること」と「できること」には雲泥の差があることを学べる。行動できずに苦しんでいるなら絶対に読むべきだ。
『他者と働く――「わかりあえなさ」から始める組織論』
「組織」に焦点を当てて、人間関係やコミュニケーションの原則とそのテクニックを徹底解説。特に会社や組織でのコミュニケーションで悩んでいるなら絶対に読むべき。読むだけで人間関係の悩みがなくなると言っても過言ではない。
人間関係で苦しみ、悩んでいる人全員に本書を推す。
『限りある時間の使い方』
4,000週間しかない貴重な人生の時間の有意義な使い方を、人間の内面にフォーカスして徹底解説している。時間に余白や余裕をもたせることの重要性を学べる。生産性や効率性に忙殺されがちな令和時代の新しい時間の使い方が、本書にある。
『エッセンシャル思考 最小の時間で成果を最大にする』
本書は、人生の取り組み方を大きく変えるための指南書として独自の思考法「エッセンシャル思考」を紹介している、選択と集中をテーマに、人生の無駄を取り除いて本当にやるべきことに専念する方法を徹底解説している。重要なことは、「今大切なこと」にフォーカスして習慣を整えることである。
『エフォートレス思考 努力を最小化して成果を最大化する』
本書は『エッセンシャル思考』の続編だ。人生で取り組むべき重要な物事に対するアプローチを軸に解説している。『エッセンシャル思考』では、「重要な物事を判断する」ことに焦点を当てて解説されている一方で、本書では「重要な物事をシンプルに、かつ簡単に取り組む」ことに焦点を当てている。
日々の行動習慣を改善する上で、『エッセンシャル思考』とセットで目を通すべき。
『複利で伸びる 1つの習慣』
本書は、私たちの人生における習慣の役割、習慣の特徴やよい習慣を身につけるための原理原則やテクニックを解説している。本書の内容を実践すれば、あなたの人生が100倍好転するだろう。日々の小さな習慣が大きな成果を生むための布石になるのだ。
人生は毎日の習慣で決まることを教えてくれる偉大な書籍。
『「後回し」にしない技術』
本書では、心理学に基づいた「後回し」せずに「すぐやる人」になるための原理原則や実勢に的なテクニックを網羅的に解説している。たとえ才能や知識、アイデアが優れていてもそれを実行しなければ意味がない。実行力は資質に依存する能力ではなく、後天的に鍛えられる能力だ。
本書を読んで、「後回し」という言葉をあなたの人生から今すぐ取り除こう。
その他
本書はあくまで私の独断と偏見によるおすすめの書籍の紹介になるが、エンジニアリングに影響を与えた書籍を4冊紹介する。
『任天堂"驚き"を生む方程式』
本書は、日本が世界に誇る企業である任天堂や、ニンテンドーDS、Wii等のハードの誕生秘話を中心に解説。本書に書かれている以下の二つの文が、私のエンジニアリングに多大な影響を与えていたので紹介する。
現代に蘇る、枯れた技術の水平思考。
「本来、娯楽って枯れた技術を上手に使って人が驚けばいいわけです。別に最先端かどうかが問題ではなくて、人が驚くかどうかが問題なのだから」
娯楽とIT業界は関係ないように思えるが、上述の引用文にある「人が驚くかどうかが問題」という言葉はソフトウェア開発にも通じるものがあるのではないだろうか。これは、どのような技術でも人を驚かせたり、感動させたりする素質を持つことを暗示しているかもしれない。
本書にある「枯れた技術の水平思考」という言葉は、私のエンジニアリングに多大な影響を与えた。
『コンテナ物語 世界を変えたのは「箱」の発明だった』
本書は物語形式でコンテナの発明が世界の歴史を一変させたことを解説している。誰かの発明やものづくりが世界に影響を与える可能性があることを物語で学べるのが非常に面白い。発明の恐るべき能力と凄まじさが本書に凝縮している。
『失敗の本質』
本書は第二次世界大戦の日本軍の敗因を現在の組織における問題点に還元して、その解決策を丁寧に解説している。戦争の研究そのものが面白い。本書の最大の特徴は、負けた原因を明らかにして改善することの重要性を学べる点にある。
ところが、内容が非常に専門的なので初心者にはおすすめできない。昭和史や地政学に関する前提知識がなければ入門版の書籍をおすすめする。
『銃・病原菌・鉄』
詳細な説明等は割愛するが、本書はヨーロッパの繁栄が環境によってもたらされていることを人類史の視点で解説している。読み返すたびに新しい気付きや学びを得られる。
私が本書で学んだことは、個人の鍛錬と努力でできることには限界があることと、この世の中に絶対的な正解がないことの2点だ。
本書は私の人生に最も影響を与えた書籍である。上巻と下巻両方とも揃えて読むべき。
参考記事一覧
Discussion
「横井軍平ゲーム館」に枯れた技術の水平思考がとことん書かれているので非常におすすめです。