ソフトウェアアーキテクチャを体系的に学びたい人に向けて、入門から実践まで役立つ12冊を段階別にまとめた。いずれもこのブログで個別にレビューした本であり、各項目からレビュー記事へ移動できる。設計の基礎、トレードオフ、ドメイン駆動設計、マイクロサービス、API設計という順で、学習の道筋に沿って並べた。
なぜソフトウェアアーキテクチャを学ぶのか
アーキテクチャの良し悪しは、システムの拡張性や保守性を長期にわたって左右する。個々の技術やフレームワークは移り変わるが、構造を設計する力は分野を超えて通用する。体系立った書籍で基礎から学べば、場当たり的な設計から脱却できる。
1. 基礎を固める
ソフトウェアアーキテクチャの基礎 第2版
アーキテクチャ特性やトレードオフなど、土台となる概念を体系的に整理した一冊である。用語の定義から丁寧に解説するため、最初の一冊に向いている。詳細はレビューにまとめた。
Clean Architecture 達人に学ぶソフトウェアの構造と設計
依存関係の向きを制御し、変更に強い構造を作る原則を説く古典である。SOLID原則やレイヤーの考え方を、実務の視点で理解できる。個別の感想はレビューに書いた。
Design It
アーキテクトの発想と設計プロセスを、具体的な手法とともに紹介する一冊である。設計の進め方に迷ったときの指針になる。内容はレビューで掘り下げた。
2. 設計判断とトレードオフ
進化的アーキテクチャ 絶え間ない変化を支える
変化し続けるシステムを前提に、アーキテクチャを継続的に進化させる考え方を示す。適応度関数という指標で、設計の劣化を検知する発想が学べる。詳しくはレビューで紹介した。
ソフトウェアアーキテクチャ Hardparts
分割の粒度やデータの扱いなど、正解のない難所を扱った実践的な一冊である。トレードオフを言語化し、判断の軸を持つための材料になる。詳細はレビューで取り上げた。
ソフトウェアアーキテクトのための意思決定術
技術に加えて、リーダーシップやプロダクトの観点から意思決定を扱う。アーキテクトが組織のなかで成果を出すための立ち回りが学べる。感想はレビューにまとめた。
3. ドメイン駆動設計
ドメイン駆動設計をはじめよう
DDDの入り口として、実装と事業戦略を結びつける実践技法をやさしく解説する。専門用語につまずくことなく、ドメイン駆動設計へ入門できる。詳細はレビューに書いた。
エリック・エヴァンスのドメイン駆動設計
DDDの原典であり、モデルを中心に複雑さへ立ち向かう思想を体系化した一冊である。読み応えはあるが、設計の共通言語を根本から鍛えられる。内容はレビューで掘り下げた。
4. マイクロサービスと分散システム
マイクロサービスアーキテクチャ 第2版
マイクロサービスの設計と運用を網羅的に扱う定番の改訂版である。分割の判断から通信やデプロイまで、実務で必要な論点を押さえられる。詳しくはレビューにまとめた。
モノリスからマイクロサービスへ
既存のモノリスを段階的に分割する、現実的な移行の手順を示した一冊である。一気に作り替えるのではなく、少しずつ進める道筋が見えてくる。感想はレビューに書いた。
データ指向アプリケーションデザイン
分散データシステムの原理を、信頼性・拡張性・保守性の観点から解き明かす名著である。ストレージやレプリケーションの仕組みを深く理解できる。詳細はレビューで紹介した。
5. API設計
Web API: The Good Parts
使いやすいWeb APIを設計するための実践的な指針をまとめた一冊である。URI設計やエラー表現など、日々の実装にすぐ生かせる。内容はレビューに書いた。
まとめ
まずは基礎の3冊で土台を作り、次にトレードオフやドメイン駆動設計へ進むとよい。マイクロサービスやAPI設計は、必要になった段階で手に取るのが効率的である。各書の個別レビューも用意したので、気になった本から読み進めるとよい。