『ソフトウェアアーキテクチャメトリクス―アーキテクチャ品質を改善する10のアドバイス』

翻訳を担当した書籍『ソフトウェアアーキテクチャメトリクス―アーキテクチャ品質を改善する10のアドバイス』(オライリー・ジャパン)が明日(2024年1月24日)発売となります(電子書籍オライリー・ジャパンのサイトでの購入となります)。本書は、2022年10月に出版されたChristian Ciceri, Dave Farley, Neal Ford, Andrew Harmel-Law, Michael Keeling, Carola Lilienthal, João Rosa, Alexander von Zitzewitz, Rene Weiss, Eoin Woods 著『Software Architecture Metrics: Case Studies to Improve the Quality of Your Architecture』(O'Reilly Media)の全訳となります。

本書は、経験豊かな10名のソフトウェアアーキテクトたちによる、ソフトウェアアーキテクチャメトリクスをテーマとした論集となっています。

著者には、次のような著名なソフトウェアアーキテクトたちが名を連ねています。

本書は、ソフトウェアアーキテクチャの分野におけるメトリクスの考え方、取り組み方、実践に対するヒントが学べる一冊となっています。

本書で取り扱われるトピックには、次のようなものがあります。

  • Four Keys メトリクスの計測と可視化の実践
  • アーキテクチャ適応度関数(architectural fitness functions)の考え方を用いてアーキテクチャが目的を満たしているかを検証する方法やヒント
  • モジュール性成熟度指数(Modularity Maturity Index:MMI)を用いて技術的負債を計測する方法
  • DevOps文化に組織が移行できているかを測るのに役立つメトリクス
  • ビジネス目標と結びついた適切なKPIからソフトウェアアーキテクチャメトリクスを導く方法や実践
  • メトリクスベースのフィードバックループを実践して保守性を保つ方法

具体的な目次は次のようになっています。

はじめに 

1章 解き放たれた4つのキーメトリクス
    1.1 定義と計測 
    1.2 メンタルモデルのリファクタリング 
    1.3 記録と算出 
    1.4 表示と理解 
    1.5 議論と理解 
    1.6 オーナーシップと改善 
    1.7 結論 

2章 適応度関数テストピラミッド:アーキテクチャテストとメトリクスのためのアナロジー 
    2.1 適応度関数とメトリクス  
    2.2 適応度関数の区分 
    2.3 テストピラミッド 
    2.4 適応度関数テストピラミッド 
    2.5 適応度関数例の評価 
    2.6 より複雑な適応度関数例の評価 
    2.7 適応度関数とメトリクスを開発する 
    2.8 結論 

3章 進化的アーキテクチャ:テスト容易性とデプロイ可能性でアーキテクチャを導く
    3.1 学習と発見の重要性 
    3.2 持続可能な変化を実現するためのツール 
    3.3 テスト容易性:高品質なシステムを構築する 
    3.4 デプロイ可能性:システムの開発をスケーリングする 
    3.5 結論 

4章 モジュール性成熟度指数でアーキテクチャを改善する 
    4.1 技術的負債 
    4.2 技術的負債の発生 
    4.3 MMIによる評価 
    4.4 モジュール性 
    4.5 階層性 
    4.6 パターン一貫性 
    4.7 MMIを算出する 
    4.8 MMIを決定するためのアーキテクチャレビュー 
    4.9 結論 

5章 プライベートビルドとメトリクス:DevOps移行を乗り越えるためのツール 
    5.1 主要な用語 
    5.2 「オーナーシップシフト」 
    5.3 ローカル環境を再び強化する 
    5.4 プライベートビルド 
    5.5 ケーススタディ:不安定なトランク  
    5.6 ケーススタディ:ブロックされたコンサルタント会社 
    5.7 メトリクス  
    5.8 メトリクスの実践  
    5.9 結論 

6章 組織のスケーリング:ソフトウェアアーキテクチャの中心的役割
    6.1 YourFinFreedom社の挑戦:モノリスを壊す 
    6.2 分散した巨大な泥団子となったマイクロサービス 
    6.3 方向性を模索する 
    6.4 ベストエフォートからインテンショナルエフォートへ 
    6.5 メトリクスによって意図的なソフトウェアアーキテクチャを導く 
    6.6 コミュニケーションを通じた期待マネジメント 
    6.7 アーキテクチャの学びと進化 
    6.8 そしてAnnaはどうなる? 
    6.9 結論 

7章 ソフトウェアアーキテクチャにおける計測の役割 
    7.1 ソフトウェアアーキテクチャに計測を加える 
    7.2 計測のアプローチ 
    7.3 システム品質の計測 
    7.4 始め方 
    7.5 架空のケーススタディ 
    7.6 落とし穴 
    7.7 結論 

8章 メトリクスからエンジニアリングへの進化
    8.1 適応度関数への道 
    8.2 メトリクスからエンジニアリングへ 
    8.3 自動化によってメトリクスを運用する 
    8.4 ケーススタディ:結合 
    8.5 ケーススタディ:ゼロデイセキュリティチェック 
    8.6 ケーススタディ:忠実度を測る適応度関数 
    8.7 結論 

9章 ソフトウェアメトリクスを使用して保守性を確保する 
    9.1 メトリクスを使う理由 
    9.2 なぜメトリクスはもっと広く使用されないのか? 
    9.3 メトリクスを収集するツール 
    9.4 有用なメトリクス 
    9.5 アーキテクチャ適応度関数 
    9.6 メトリクスを長期的に追跡する方法 
    9.7 より良いソフトウェアを作るためのいくつかの黄金律 
    9.8 結論

10章 ゴール・クエスチョン・メトリクスアプローチで未知数を計測する
    10.1 GQMアプローチ
    10.2 ケーススタディ:未来を見通す力を身につけたチーム
    10.3 GQMワークショップを開催する 
    10.4 結論

ソフトウェアアーキテクチャ分野のメトリクスに興味のある方や、上記のトピックや目次を見て興味を惹かれた方などには、ぜひ手に取っていただきたい書籍なのですが、本書には注意いただきたい点もあります。それは、本書は「ソフトウェアアーキテクチャメトリクスというトピックを体系的に取り上げた書籍」ではなく、「ソフトウェアアーキテクチャメトリクスをテーマとしたエッセイ集」であるという点です。

原書の書名(『Software Architecture Metrics: Case Studies to Improve the Quality of Your Architecture』)からはそのことが分かりづらく、残念ながら、原書では読者の期待との間にミスマッチが生じているケースも見受けられます。訳書では副題を「アーキテクチャ品質を改善する10のアドバイス」とすることで、そうした誤解が少なくなるように工夫しています。

本書は、実践者たちのさまざまな経験やアドバイスからヒントを得る書籍として読むと、得られる部分の多い書籍です。ぜひ『ソフトウェアアーキテクトが知るべき97のこと』や『ビューティフルアーキテクチャ (THEORY/IN/PRACTICE)』、『Making Software ―エビデンスが変えるソフトウェア開発』などに連なる書籍として、そして、まだまだ情報源の多くないソフトウェアアーキテクチャ分野でのメトリクスの活用についてインスピレーションを得る書籍として、多くの方に手に取っていただけたらと考えています。