- 武田大輝
- 約 10,400 文字
目次
はじめに
『ソフトウェアエンジニアリングの基礎 ―コーダーからエンジニアになるための実践ガイド』(村上列訳、オライリー・ジャパン、2026年9月)を読了しました。
ジュニアなエンジニアが成長するために知っておくべきことが非常によくまとまっており、共感する部分が多かったので、読んでみての感想を残しておきたいと思います。また、この書籍は各章の末尾で「関連リソース」として書籍をいくつか紹介しています。これだけよく整理された本なのでここから良質な読書マップが作れるのではないかと思い、整理してみました。
書籍概要
原書は O’Reilly Media の 『Fundamentals of Software Engineering: From Coder to Engineer』(2025年11月)で、著者は Nathaniel Schutta と Dan Vega の2人です。
序文によれば、想定読者は新人のソフトウェアエンジニアで、大学やブートキャンプで教わることと、現場で必要になることのギャップを埋める「オンボーディングガイド」として書かれています。私自身はエンジニアとしてのキャリアが約15年になりますが、まさに新人のころ(新人研修を終えて現場に出たばかりのころ)に読んでおきたかったなと思いながら読んでいました。
全体は4部構成の全15章です。第1部はコードを読む・書くといったコアスキル、第2部はモデリングやテストなどの技術的なプラクティス、第3部は UI、データ、アーキテクチャ、本番環境といった設計と開発、第4部は生産性、学び方、ソフトスキル、キャリア、AI というプロフェッショナルとしての能力開発と成長を扱います。
各章のページ数は次の通りです。
| 章 | タイトル | ページ数 |
|---|---|---|
| 1章 | プログラマからエンジニアへ | 14 |
| 2章 | コードを読む | 22 |
| 3章 | コードを書く | 20 |
| 4章 | モデル | 18 |
| 5章 | 自動テスト | 18 |
| 6章 | 初めて触れるシステムの調査と変更 | 32 |
| 7章 | ユーザーインターフェース設計 | 30 |
| 8章 | データの取り扱い | 48 |
| 9章 | ソフトウェアアーキテクチャ | 20 |
| 10章 | 本番環境へ | 40 |
| 11章 | 生産性を向上させる | 14 |
| 12章 | 学び方を学ぶ | 18 |
| 13章 | テクノロジー業界でソフトスキルを磨く | 20 |
| 14章 | キャリアマネジメント | 38 |
| 15章 | AI を駆使するソフトウェアエンジニア | 29 |
ソフトウェアエンジニアリングという広いテーマを1冊にまとめるにあたって、何をどこまで書くかはかなり悩ましいと思います。そう考えると、ページ数が多い章ほど、著者が相対的に重要だと見ている章だと受け取ってよさそうです。中でも8章のデータと10章の本番環境は、ほかの章の2倍程度の分量があります。どちらもそれ単体で1冊の本が書けるトピックであり、重要な内容が多い領域なので納得です。
読み終えた感想
全体を通して良いなと思った点を紹介します。
テーマの選び方とそれぞれに割く分量のバランスがすばらしい。
技術的なテーマのポイントの押さえ方(モデリング、テストピラミッド、トランザクション、キャッシュなど)もさることながら、ないがしろにされがちなソフトスキルまで丁寧に扱っている点が良い。ジュニアを育てる立場から読んでも、最低限押さえておいてほしいことのエッセンスが高い密度で詰まっている。リアルな現場を前提として書かれている。
大学や新人研修で実施するようなゼロからの開発(グリーンフィールド開発)ではなく、既存のシステムに向き合うこと(ブラウンフィールド開発)を前提として書かれている。これに合わせて「コードを書く」より先に「コードを読む」の章を置いている点も良い。座学と現場のギャップがわかり、新人エンジニアの視野をぐっと広げてくれる一冊になっている。なぜそれが必要なのかがわかる。
バージョン管理、自動テスト、CI/CD など実際の現場では当たり前になっているプラクティスについて、なぜ必要なのかが明確に説明されている。私のように、なぜ必要かを教わらないまま、現場で言われるがままにいろいろなツールを入れさせられた人も少なくないはず。あまり人から教わらないようなことを教えてくれる。
生産性の高め方(ショートカットを使う話とか)やナレッジの管理方法、コミュニケーションの取り方や学習方法といった細かい話ではあるが、かゆいところに手が届くようなトピックが盛り込まれている。新人のころにこれを知れたらどれだけ楽だっただろうかというネタが多い。
著者について
読みながら共感するところが多かったので、著者の2人のキャリアについて調べてみました。
Nathaniel Schutta
Nathaniel Schutta は Thoughtworks のソフトウェアアーキテクトです。Ryan Asleson との共著 『Foundations of Ajax』(2005年)をはじめとし、Neal Ford と Matthew McCullough との共著 『Presentation Patterns』(2012年)があります。O’Reilly のレポートとしては 『Thinking Architecturally』(2018年)と 『Responsible Microservices』(2020年)を執筆しています。『Thinking Architecturally』は本書のさまざまな章で関連リソースとして挙げられています。2023年には Java Champion の称号を得ました。Java コミュニティへの貢献が認められた開発者に贈られるものです。講演の機会も多く、米国各地で開かれる開発者向けカンファレンス No Fluff Just Stuff の常連です。本業と並行して、ミネソタ大学の非常勤教授として「技術の変化を受け入れ、評価する姿勢」を学生に教えています。
Dan Vega
Dan Vega は Broadcom の Spring Developer Advocate です。2000年に2年制の技術系カレッジを卒業しました。在学中から独学で Web アプリケーションを作り、仕事として請け負っていたそうです。卒業後はカリフォルニアのスタートアップ Five9 でテクニカルサポートとして働き、その後クリーブランドに戻って複数の企業で開発の仕事に就きました。途中、コーディングブートキャンプの Tech Elevator でカリキュラム開発を担当しています。2022年1月から VMware の Spring Developer Advocate を務め、Broadcom による買収後も同じ役割を続けています。2024年には Java Champion に選ばれました。YouTube チャンネル の登録者は2026年10月時点で約32万人、Udemy の受講者は約16万人で、週刊のニュースレターも発行しています。Spring Office Hours というポッドキャストでは共同ホストを務めています。
2人の経歴をみて
本書のコード例は Java が中心で、テストの例は JUnit と Mockito で書かれており、Spring Boot や Spring Data の話も何回か登場します。2人とも Java Champion だと知って、Java の例が多いことにも納得できました。
また、2人とも現役のエンジニアでありながら、人に教える立場にもいます。Schutta は大学で教え、Vega はブートキャンプでカリキュラムを作り、今は YouTube や講座で Spring を教えています。現場で手を動かし続けながら、人を育てる仕事にも長く関わってきたからこそ、若手にとって必要なことを解像度高く書けたのだと思います。
関連する書籍
各章の「関連リソース」では、書籍のほかにブログ記事、講演、Web サイトなどが挙げられています。ここでは書籍だけをピックアップして一覧化してみます。
書籍は全部で55冊でした。なお、同じ本が複数の章で挙がることがあります。3つの章で挙がるのは『達人プログラマー』、『情熱プログラマー』、そして Schutta 自身の『Thinking Architecturally』の3冊でした。
1章 プログラマからエンジニアへ
The Pragmatic Programmer(David Thomas、Andrew Hunt、20周年記念版 2019、初版 1999)
邦訳:達人プログラマー(オーム社、第2版 2020)
職業プログラマーの心構えと習慣を網羅した定番書(掲載章:1章・12章・14章)The Mythical Man-Month(Fred Brooks、記念版 1995、初版 1975)
邦訳:人月の神話(丸善出版、新装版 2014)
人と月を交換できるとみなす『人月』の考え方を幻想だと指摘し、大規模開発の困難さを説いたソフトウェア開発の名著(掲載章:1章・3章)Design Patterns(Erich Gamma ほか、1994)
邦訳:オブジェクト指向における再利用のためのデザインパターン(SBクリエイティブ、改訂版 1999)
オブジェクト指向設計で繰り返し現れる23の設計パターンを体系化したデザインパターンの原典、通称 GoF 本Practices of an Agile Developer(Venkat Subramaniam、Andy Hunt、2006)
邦訳:アジャイルプラクティス(オーム社、2007)
アジャイルな開発者が日々実践したい45の習慣を悪い例と良い例の対比で紹介する実践書The Productive Programmer(Neal Ford、2008)
邦訳:プロダクティブ・プログラマ(オライリー・ジャパン、2009)
コマンドライン、自動化、ショートカットなど、開発者個人の生産性を道具と習慣の両面から高める方法をまとめた本(掲載章:1章・11章)Software Engineering at Google(Titus Winters ほか編、2020)
邦訳:Googleのソフトウェアエンジニアリング(オライリー・ジャパン、2021)
Google がソフトウェアを長期にわたって維持するための文化、プロセス、ツールを解説した、大規模開発の実践知The Staff Engineer’s Path(Tanya Reilly、2022)
邦訳:スタッフエンジニアの道(オライリー・ジャパン、2024)
マネジメントに進まず技術職として上を目指すスタッフエンジニアの役割と、その仕事の進め方を解説したガイドCode Complete(Steve McConnell、第2版 2004)
邦訳:CODE COMPLETE 上・下(日経BP、第2版 2005)
命名から設計、デバッグまで、コードを書く工程の実践を網羅したコーディングの古典的な教科書
4章 モデル
User Story Mapping(Jeff Patton、2014)
邦訳:ユーザーストーリーマッピング(オライリー・ジャパン、2015)
ユーザの行動に沿ってストーリーを地図のように並べ、何をどの順で作るかを決める手法を、提唱者自身が解説した定番書Communication Patterns(Jacqui Read、2023)
邦訳:開発者とアーキテクトのためのコミュニケーションガイド(オライリー・ジャパン、2025)
図、文書、会話で技術的な内容を伝えるためのパターンとアンチパターンをまとめた本(掲載章:4章・9章)Creating Software with Modern Diagramming Techniques(Ashley Peacock、2023)
邦訳:なし
Mermaid などのツールで図をテキストとして書き、コードと一緒に管理する方法を解説した本(掲載章:4章・9章)UML Distilled(Martin Fowler、第3版 2003)
邦訳:UMLモデリングのエッセンス(翔泳社、第3版 2005)
UML のうち実務でよく使う部分に絞って要点を解説した、薄くて読みやすい入門書(掲載章:4章・9章)
5章 自動テスト
- Clean Code(Robert C. Martin、2008)
邦訳:Clean Code(KADOKAWA、2017、初刊 2009)
命名、関数、コメント、テストなど、読みやすく保守しやすいコードを書くための規律をまとめた定番書
6章 初めて触れるシステムの調査と変更
Refactoring(Martin Fowler、第2版 2018)
邦訳:リファクタリング(オーム社、第2版 2019)
振る舞いを変えずにコードの構造を改善する手法を手順付きのカタログとしてまとめたリファクタリングの原典Working Effectively with Legacy Code(Michael Feathers、2004)
邦訳:レガシーコード改善ガイド(翔泳社、2009)
テストのない既存コードに安全に手を入れるため、依存を断ち切ってテストを追加する技法を解説した、レガシーコード対応の定番書Getting to Know IntelliJ IDEA(Trisha Gee、Helen Scott、2022)
邦訳:なし
IntelliJ IDEA の機能と使いこなし方を、JetBrains のデベロッパーアドボケイト2人が体系的に解説した本
7章 ユーザーインターフェース設計
The Design of Everyday Things(Don Norman、増補改訂版 2013、初版 1988)
邦訳:誰のためのデザイン?(新曜社、増補・改訂版 2015)
使いやすいデザインとは何かを、アフォーダンスなど認知科学の観点から論じたデザインの古典The Non-Designer’s Design Book(Robin Williams、第4版 2014)
邦訳:ノンデザイナーズ・デザインブック(マイナビ出版、第4版 2016)
近接、整列、反復、コントラストの4原則で、デザインの専門家でなくても見やすいレイアウトを作る方法を解説した定番の入門書About Face(Alan Cooper ほか、第4版 2014)
邦訳:ABOUT FACE インタラクションデザインの本質(マイナビ出版、2024)
ユーザのゴールを起点にインタラクションを設計する、ゴール指向設計を体系化した大著Designing Interfaces(Jenifer Tidwell ほか、第3版 2019)
邦訳:デザイニング・インターフェース(オライリー・ジャパン、第2版 2011)
ナビゲーションやフォームなど、UI 設計で繰り返し使われるパターンを集めたカタログ
8章 データの取り扱い
Designing Data-Intensive Applications(Martin Kleppmann、Chris Riccomini、第2版 2026)
邦訳:データ指向アプリケーションデザイン(オライリー・ジャパン、初版 2019)。第2版 は2026年11月刊行予定
レプリケーション、パーティショニング、トランザクションなど、データを扱う分散システムの原理を解説した名著Seven Databases in Seven Weeks(Luc Perkins ほか、第2版 2018)
邦訳:7つのデータベース 7つの世界(オーム社、初版 2013)
リレーショナル、key-value、ドキュメント、グラフなど7種のデータベースを、実際に動かしながら比較する本Refactoring Databases(Scott Ambler、Pramod Sadalage、2006)
邦訳:データベース・リファクタリング(ピアソン・エデュケーション、2008)
稼働中のデータベースのスキーマを、移行期間を設けながら段階的に変更する手法をカタログ化した本Fundamentals of Data Engineering(Joe Reis、Matt Housley、2022)
邦訳:データエンジニアリングの基礎(オライリー・ジャパン、2024)
データの生成から保存、変換、提供までのライフサイクル全体を見渡す、データエンジニアリングの入門書NoSQL Distilled(Pramod Sadalage、Martin Fowler、2012)
邦訳:なし
key-value、ドキュメント、カラムファミリー、グラフといった NoSQL データベースの分類と使い分けを短くまとめた入門書
9章 ソフトウェアアーキテクチャ
Thinking Architecturally(Nathaniel Schutta、2018)
邦訳:なし
本書の著者 Schutta による無料のレポート。次々に現れる新しい技術をどう評価し、どう取り入れるかを論じる(掲載章:9章・12章・13章)Head First Software Architecture(Raju Gandhi、Mark Richards、Neal Ford、2024)
邦訳:なし
イラストやクイズを多用する Head First シリーズのソフトウェアアーキテクチャ入門書Fundamentals of Software Architecture(Mark Richards、Neal Ford、2020)
邦訳:ソフトウェアアーキテクチャの基礎(オライリー・ジャパン、2022)。第2版の邦訳は 2026年3月
アーキテクチャ特性の洗い出し、トレードオフ分析、主要なアーキテクチャスタイルを体系的に解説した入門書How to Win Friends and Influence People(Dale Carnegie、1936)
邦訳:人を動かす(創元社、改訂新装版 2023)
人に好かれ、人を動かすための原則をまとめた、対人関係の古典(掲載章:9章・13章)Building Evolutionary Architectures(Neal Ford ほか、第2版 2022)
邦訳:進化的アーキテクチャ(オライリー・ジャパン、初版 2018)
適応度関数でアーキテクチャ特性を継続的に検証し、変化に耐えるアーキテクチャを作る方法を解説した本Influence, New and Expanded(Robert Cialdini、2021)
邦訳:影響力の武器(誠信書房、新版 2023)
返報性や社会的証明など、人が説得に応じる心理的な原理を解説した、説得の心理学の古典(掲載章:9章・13章)
10章 本番環境へ
Continuous Delivery(Jez Humble、David Farley、2010)
邦訳:継続的デリバリー(KADOKAWA、2017、初刊 2012)
ビルド、テスト、デプロイを自動化するパイプラインを体系化した、継続的デリバリの原典The Phoenix Project(Gene Kim ほか、2013)
邦訳:The DevOps 逆転だ!(日経BP、2014)
炎上中の IT 部門を舞台に、DevOps の考え方を小説仕立てで描いたベストセラーHead First Git(Raju Gandhi、2022)
邦訳:なし
Git のしくみを図解とクイズで学ぶ、Head First シリーズの入門書Learning GitHub Actions(Brent Laster、2023)
邦訳:なし
GitHub Actions でワークフローを組み、CI/CD を自動化する方法を解説した入門書Feature Flags(Ben Nadel、2024)
邦訳:なし
フィーチャーフラグの導入と運用に絞り、著者の実務経験をもとにまとめた自費出版の本
11章 生産性を向上させる
Flow(Mihaly Csikszentmihalyi、1990)
邦訳:フロー体験 喜びの現象学(世界思想社、1996)
時間を忘れて没頭する「フロー」状態を提唱した、心理学の古典Building a Second Brain(Tiago Forte、2022)
邦訳:SECOND BRAIN(東洋経済新報社、2023)
デジタルのメモを整理して活用し、自分の外にもう1つの脳を作る、個人の知識管理の方法論The Passionate Programmer(Chad Fowler、第2版 2009)
邦訳:情熱プログラマー(オーム社、2010)
開発者が自分のキャリアを主体的に築くための53の助言をまとめたエッセイ集(掲載章:11章・12章・14章)
12章 学び方を学ぶ
The First 20 Hours(Josh Kaufman、2013)
邦訳:たいていのことは20時間で習得できる(日経BP、2014)
新しいスキルを最初の20時間で一定の水準まで身につけるための、練習の進め方を説いた本Pragmatic Thinking and Learning(Andy Hunt、2008)
邦訳:リファクタリング・ウェットウェア(オライリー・ジャパン、2009)
脳のしくみや認知科学の知見をもとに、エンジニアの学習法と思考法を解説した本
14章 キャリアマネジメント
Developer Career Masterplan(Heather VanCura、Bruno Souza、2023)
邦訳:なし
コミュニティへの参加や情報発信を軸に、開発者がキャリアを伸ばす方法を解説した本The Manager’s Path(Camille Fournier、2017)
邦訳:エンジニアのためのマネジメントキャリアパス(オライリー・ジャパン、2018)
テックリードから CTO まで、エンジニアリングマネジメントの各段階で求められる役割を解説した定番書Developer, Advocate!(Geertjan Wielenga、2019)
邦訳:なし
デベロッパーアドボケイトとして活躍する人たちへのインタビュー集Help Your Boss Help You(Ken Kousen、2021)
邦訳:なし
上司との関係を自分から築き、うまく協力してもらうための方法を解説した本Never Eat Alone(Keith Ferrazzi、Tahl Raz、2014、初版 2005)
邦訳(2005年版):一生モノの人脈力(パンローリング、2012)
相手の役に立つことを起点に人脈を築く方法を説いた、人脈づくりの実用書
15章 AI を駆使するソフトウェアエンジニア
AI Engineering(Chip Huyen、2024)
邦訳:AIエンジニアリング(オライリー・ジャパン、2025)
基盤モデルを使ったアプリケーションの開発、評価、運用を体系的に解説した本Beyond Vibe Coding(Addy Osmani、2025)
邦訳:バイブコーディングを超えて(オライリー・ジャパン、2025)
AI を使ったコーディングの実践と、AI 時代のエンジニアの役割を論じた本Prompt Engineering for LLMs(John Berryman、Albert Ziegler、2024)
邦訳:LLMのプロンプトエンジニアリング(オライリー・ジャパン、2025)
GitHub Copilot の開発に携わった著者による、LLM を組み込んだアプリケーションのプロンプト設計の解説書Rebooting AI(Gary Marcus、Ernest Davis、2019)
邦訳:なし
深層学習だけでは信頼できる AI は作れないと論じ、常識や推論の必要性を説いた本Co-Intelligence(Ethan Mollick、2024)
邦訳:これからのAI、正しい付き合い方と使い方(KADOKAWA、2024)
AI を「共同知能」として扱い、仕事や学びで協働するための4つの原則を示した本Human Compatible(Stuart Russell、2019)
邦訳:AI新生(みすず書房、2021)
人間の価値観と両立する AI をどう設計し、制御するかを論じた本Artificial Intelligence: A Modern Approach(Stuart Russell、Peter Norvig、第4版 2020)
邦訳:エージェントアプローチ人工知能(共立出版、原著第4版 2026)
探索、推論、機械学習まで AI 全体を網羅した、世界中の大学で使われる AI の教科書Deep Learning with Python(François Chollet、第2版 2021)
邦訳:Pythonによるディープラーニング(マイナビ出版、2022)
Keras の作者自身による、Python で深層学習を実装しながら学ぶ入門書Taming Silicon Valley(Gary Marcus、2024)
邦訳:AIテックを抑え込め!(日経BP、2025)
大手 AI 企業の問題点を指摘し、AI に必要な規制と市民の取り組みを論じた本
読書マップ
55冊を一覧で見てもどこから手をつければよいかわかりづらいため、独自に再カテゴライズし、初版の年代別に分類してみました。そのうえで、独断と偏見により「次の一歩としてお勧めする書籍(黄色)」と「さらに深く学ぶためにお勧めする書籍(紫色)」を色付けしています。すべての書籍を読んでいるわけではないので、あくまで私が手に取ったり読んだりしたことがある書籍の中からよさそうと判断したものに対して色付けしている点はご了承ください。
全体を俯瞰してみると、1990年代以前の古い書籍も多く含まれています。ただ、その多くは、コーディングや開発の原則のような、技術の流行の影響を受けにくいカテゴリの本です。反対に、DevOps と AI の書籍はほとんどが2010年代以降で、変化の速い分野ほど新しい本が挙がっています。トレンドの書籍を読むことはもちろん重要ですが、それと同じくらい古典的名著に触れることも私としてはお勧めしたいです。
おわりに
あらためて、『ソフトウェアエンジニアリングの基礎』は良書でした。現場に出たばかりの若手はもちろん、若手を育てる立場の人にもお勧めです。
読書マップに対するフィードバックもお待ちしています。次の1冊を選ぶ参考になれば幸いです。
