ISBN 9784873119823
ソフトウェアアーキテクチャの基礎 : エンジニアリングに基づく体系的アプローチ
- 出版社
- オライリー・ジャパン
- 刊行
- 2022-03-01
概要
Mark Richards・Neal Ford 著 Fundamentals of Software Architecture: An Engineering Approach(O'Reilly、原書 2020 年刊)の日本語版。オライリー・ジャパンから 2022 年 3 月発売、448 ページ、ISBN 978-4-87311-982-3、訳・監訳は島田浩二。出版社公式 https://www.oreilly.co.jp/books/9784873119823/。
本書はソフトウェアアーキテクトに求められる「広く・深く・前提を言語化できる」能力を体系化した、いわゆる アーキテクチャ教科書のスタンダード である。サブタイトルにある "An Engineering Approach" が示すとおり、「ソフトウェアアーキテクチャは芸術ではなく工学である」というスタンスに立ち、トレードオフを言語化する技術・特性(-ility)を測定する技術・スタイルを比較する技術 の 3 つを軸に構成される。
全 24 章の構成
第 I 部 基礎(第 1~7 章)
- 第 1 章 イントロダクション:「アーキテクチャとは何か」を 4 つの次元(Structure / Characteristic / Decision / Design Principle)で定義する
- 第 2 章 アーキテクチャ思考:「アーキテクトは何をするのか」を 4 つの責務(Architecture Decision / Continuously Analyzing / Keeping Current / Ensuring Compliance)で記述
- 第 3 章 モジュール性:凝集度(Functional / Sequential / Communicational / Procedural / Temporal / Logical / Coincidental)と結合度の階層を整理
- 第 4 章 アーキテクチャ特性の定義:可用性、信頼性、性能、スケーラビリティ、セキュリティ、保守性、テスタビリティなど "-ility" の体系
- 第 5 章 アーキテクチャ特性の特定:ドメインに固有の特性をどう抽出するか
- 第 6 章 アーキテクチャ特性の計測と統制:適合度関数(Fitness Function)による継続検証
- 第 7 章 アーキテクチャ特性の範囲:アーキテクチャ量子(Architecture Quantum)の概念
第 II 部 アーキテクチャスタイル(第 8~17 章)
- 第 8 章 コンポーネントベース思考:パーティショニング(テクニカル vs ドメイン)の議論
- 第 9 章 基礎:単一の同期処理から分散処理に進む際の課題(信頼性、可用性、スケーラビリティ)
- 第 10 章 レイヤードアーキテクチャ:モノリシック・チームの教科書スタイル。クローズド/オープンレイヤーの区別
- 第 11 章 パイプラインアーキテクチャ:UNIX フィルタ的な合成性。データ変換中心の処理に向く
- 第 12 章 マイクロカーネルアーキテクチャ:プラグインスタイル。Eclipse・JIRA などが該当
- 第 13 章 サービスベースアーキテクチャ:粒度の粗いサービス(4-12 個)でモノリスとマイクロサービスの中間
- 第 14 章 イベント駆動アーキテクチャ:仲介者(Broker)と仲介トポロジー(Mediator)の比較
- 第 15 章 スペースベースアーキテクチャ:高負荷・予測困難なバースト負荷向け
- 第 16 章 オーケストレーション駆動サービス指向アーキテクチャ:かつての SOA。歴史と教訓
- 第 17 章 マイクロサービスアーキテクチャ:境界づけられたコンテキスト、データ独立、分散トランザクションの問題
第 III 部 テクニックとソフトスキル(第 18~24 章)
- 第 18 章 アーキテクチャ決定:ADR(Architecture Decision Record)の書き方
- 第 19 章 リスク分析:リスクマトリクス、リスクストーミング
- 第 20 章 アーキテクチャの図示とプレゼンテーション:図と物語の使い分け
- 第 21 章 効果的なチームにする:制御過多/不足/適切なリーダーシップ
- 第 22 章 交渉とリーダーシップ:ビジネス/開発者/その他アーキテクトとの交渉技術
- 第 23 章 キャリアパスを開く:技術の幅/深さ、20 分ルール
- 第 24 章 自分のキャリアを生み出す:「アーキテクチャは知識の幅、開発者は深さ」
本書の中核概念
アーキテクチャ特性(Architectural Characteristics)
「機能要件」と「非機能要件」という分け方を捨て、すべて 特性(-ility) として一段抽象化して扱う。可用性、信頼性、保守性、性能、スケーラビリティ、セキュリティ、テスタビリティ、可搬性、運用容易性、観測容易性、デプロイ容易性 — 本書は約 30 個の特性を列挙し、ドメインに応じて 7 ± 2 個に絞ることを推奨する。
アーキテクチャ量子(Architecture Quantum)
「独立してデプロイ可能で、高い機能凝集と非同期通信境界を持つ最小単位」。マイクロサービスは複数の量子で構成されるが、同一データベースを共有していれば「量子は 1 つ」とみなす。スタイルの選定はこの量子サイズで決まる という主張が本書のオリジナル貢献の中核。
適合度関数(Fitness Function)
アーキテクチャ特性を「測定可能なテスト」に変換する手法。ArchUnit のような静的検証、Chaos Monkey のような実行時検証、CI でのレイヤ違反検知などを含む。進化的アーキテクチャ(Evolutionary Architecture、両著者の前作) の中核概念を本書でも基盤として使用する。
想定読者
- ソフトウェアアーキテクトを目指す中堅~シニアエンジニア:単発のサービス設計から一段上に上がりたい層
- テックリード/スタッフエンジニア:複数チームを跨ぐ意思決定の土俵を共有したい層
- 既にアーキテクトの肩書を持つ実務者:自分の判断を「言語化」するための語彙集として
関連書籍との位置付け
- Bass・Clements・Kazman『実践ソフトウェアアーキテクチャ 第 4 版』との違い:『実践〜』は CMU/SEI 系の 属性駆動設計(ADD) に基づき、より厳密な工学プロセスを示す。本書は 読み物としての軽さ と 同時代のスタイル比較 を優先しており、入門〜中級者にはまず本書を、より深い設計プロセスを学びたい層は『実践〜』に進むのが自然な流れ。
- Newman『マイクロサービスアーキテクチャ 第 2 版』との違い:Newman 本はマイクロサービス特化の実践書。本書はマイクロサービスを 数あるスタイルの 1 つ として配置し、「あなたのドメインにマイクロサービスが本当に必要か」をスタイル比較で問い直すスタンス。Newman 本に進む前の地図として読むと効果的。
- Vaughn Vernon『実践ドメイン駆動設計』との関係:本書はアーキテクチャスタイル選定が主、DDD は中の戦略パターンとして登場する。境界づけられたコンテキストの粒度がアーキテクチャ量子と重なる議論が頻出する。
- Ford・Parsons・Kua『進化的アーキテクチャ』との関係:両著者の前作。適合度関数 と アーキテクチャ量子 の概念は『進化的〜』が初出で、本書はそれを基礎理論に組み込んで全スタイルを整理し直したものと読める。
読み方の指針
第 I 部(第 1〜7 章)は 必読。語彙・概念のキャリブレーションを行うパートで、ここを飛ばすと第 II 部のスタイル比較が理解しづらい。第 II 部は ドメインに近い 2〜3 スタイルだけ深く読み、残りは概観で十分。第 III 部はソフトスキル中心なので、コードを書く時間を増やしたい時は後回しでもよい。原書はカラー、邦訳版もスタイル比較表(特性ごとの「☆☆☆☆」評価)が読みやすく、机上の参照書として手元に置いておく価値が高い。
出版社による内容紹介
ソフトウェアアーキテクトに必要なエンジニアリング原則を、複数のアーキテクチャスタイル(レイヤード、マイクロサービス、イベント駆動、サービスベース、スペースベース等)を通して体系的に解説。トレードオフ分析、アーキテクチャ特性(性能・スケーラビリティ・回復性・セキュリティなど)の優先順位付け、Architecture Decision Record(ADR)の運用など、設計判断を支える実務的なフレームワークを提示。共著者の Mark Richards / Neal Ford は O'Reilly Software Architecture Conference の主要講師であり、原書(Fundamentals of Software Architecture, O'Reilly)はソフトウェアアーキテクチャの定番書として広く参照されている。
この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。