ISBN 9784873118567
進化的アーキテクチャ : 絶え間ない変化を支える
- 出版社
- オライリー・ジャパン
- 刊行
- 2018-08
概要
変化に耐えるアーキテクチャを設計・進化させる原理を習得する
想定読者
プロダクトやシステムのアーキテクチャ設計・改善を担うソフトウェアアーキテクトおよびシニアエンジニア
こんな人には向いていない
- プログラミングの基礎やオブジェクト指向をこれから学ぶ段階の初学者には抽象度が高すぎる
- 特定フレームワークの導入手順やコード実装例を求める読者には具体的な実装指針が乏しい
- 継続的デリバリーと進化的設計をすでに組織全体で実践しているチームには既知の議論が多い
この本で身につくこと
- フィットネス関数を定義してアーキテクチャの品質特性(結合度・テスト性・デプロイ頻度)を継続的に計測・監視できる
- モジュール境界の管理を通じてシステムの変更コストを抑えた設計判断ができる
- マイクロサービス化など段階的なアーキテクチャ移行アプローチを目的に応じて選択できる
- ビジネス要件の変化スピードに合わせてアーキテクチャを意図的に進化させる意思決定フレームワークを持てる
ハイライト(外部からの言及)
ビジネスの要請やソフトウェアエコシステムの変化に伴い、ソフトウェアシステムは変化していくなか、最初にどうアーキテクチャを考え、そのアーキテクチャをどう育てていくのかを鋭く考察する — 出典
「設計して終わり」ではなく「育てる」という本書の視座が端的に示されており、購入動機の判断軸になる
「手作業による成果物に執着して不合理になってはならない」心に刺さる。これを書いた人は真摯にシステム開発にむきあってきたんだろうなと思う本でした。 — 出典
著者が本書末尾に置いた一文への読者の共鳴。「育てる視座」とは別の角度——著者が開発現場に向ける真摯な姿勢——が読者に伝わったことを示す読後体験の記録
たいていの開発者は、粗悪な古いコードを唯一の技術的負債の形とみなす。しかし、プロジェクトは早すぎる複雑さの導入によって技術的負債を偶発的に仕込んでしまう可能性がある。 — 出典
「技術的負債は古いコードだけではない」という本書の逆説的洞察。既存 highlight とは異なり、開発者自身の設計判断の思い込みに楔を打つ実務的インパクトを持つ箇所
章立て
第1章 ソフトウェアアーキテクチャ
本書の前提。アーキテクチャの定義と変化の必要性
第2章 適応度関数
本書最重要概念。アーキテクチャ特性を継続評価する数値関数
第3章 漸進的な変更を支える技術
Continuous Delivery / Microservices の進化的視点での再整理
第4章 アーキテクチャ上の結合
Connascence の理論。モジュール間結合度の段階的整理
第5章 進化的データ
DB マイグレーションの進化的アプローチ
第6章 進化可能なアーキテクチャの構築
フィットネス関数定義→CI 組み込み→デプロイパイプライン整備の流れで実践手順を示す章。前章までの概念を自チームへ適用する起点となり、2 周目に読み返す価値が高い。
第7章 進化的アーキテクチャの落とし穴とアンチパターン
ビッグバンリファクタリングや過度なマイクロサービス分割など、現場で踏みやすい失敗パターンを列挙。導入前のリスク確認として先に読み通しておくと、実践フェーズでの判断精度が上がる章。
第8章 進化的アーキテクチャの実践
本書の総括。理論を実装に落とし込むパターン
関連記事 / 参考情報
- 「進化的アーキテクチャ」を読んだよ — 出版直後に書かれた読書感想。本書の主要概念を整理した記録。
- ArchUnit で Java / Kotlin アプリケーションのアーキテクチャを CI する — 本書のフィットネス関数概念を ArchUnit で実装し CI パイプラインに組み込む方法を解説。
- 『進化的アーキテクチャ』を読んでみて — 通読後の感想と学び。アーキテクチャを進化させる考え方を整理。
学習のヒント
- Martin Fowler による序文から読み始めると、本書がアーキテクチャ論全体のどこに位置するかを把握してから本論に入れる
- 「フィットネス関数」の章を読んだ後、ArchUnit や Consumer-Driven Contract Testing など実装ツールをあわせて調べると概念が具体化しやすい
- 設計変更で苦労した自社システムの事例を手元に置きながら読むと、各原則の実感が増す。抽象論のまま流さない読み方が重要
- 一読後に読み返す価値がある章がある場合、二周目は自チームのシステムへの適用可否を問いながら読むと理解が定着する
前提知識
- レイヤードアーキテクチャや依存性注入など、ソフトウェア設計の基本パターンの理解
- 実際のシステム開発・運用における設計変更の経験(要件変化や技術的負債の痛みを知っていることが前提)
- 継続的インテグレーション・継続的デリバリーの基本的な概念
次に読む本
クリーンアーキテクチャ
本書は「アーキテクチャを進化させる」指標と方針を扱うが、レイヤー分割や依存性逆転の具体的実装パターンまでは踏み込まない。クリーンアーキテクチャを続けて読むことで、モジュール境界の抽象的議論を実装レベルの設計指針に転換できる。
マイクロサービスパターン
本書第 3 章でマイクロサービスを進化的移行の文脈で概説しているが、サービス分割の基準・通���パターン・データ整合性の具体策は省略されている。マイクロサービスパターンで各設計判断とトレードオフを学ぶことで、本書の疎結合設計を実装に落とせる。
Accelerate: The Science of Lean Software and DevOps
本書はフィットネス関数でアーキテクチャ特性を計測する重要性を強調するが、デプロイ頻度・障害回復時間がビジネス成果と結びつくエビデンスは提示していない。Accelerate の実証データを参照することで、本書の主張に定量的な裏付けを補完できる。
出版社による内容紹介
2010年代のソフトウェア開発の全体像をまとめ、これから求められるアーキテクチャを探る! Thoughtworks社のCTOをはじめとする執筆陣が、ビジネスの要請やソフトウェアエコシステムの変化に伴い、ソフトウェアシステムは変化していくなか、最初にどうアーキテクチャを考え、そのアーキテクチャをどう育てていくのかを鋭く考察する。マーティン・ファウラーによる「まえがき」を収録。
この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。