ソフトウェアアーキテクチャの基礎 : エンジニアリングに基づく体系的アプローチ
- 著者:
- Richards,Mark (W.Mark) Ford,Neal 島田, 浩二
- 出版社:
- オーム社 (発売)
- 出版日:
- 202203
- ISBN:
- 9784873119823
なぜ注目されているか
技書の森解説
『ソフトウェアアーキテクチャの基礎』 (Mark Richards、Neal Ford 著、島田 浩二 訳、オライリー・ジャパン、2022 年 3 月刊) は、ソフトウェアアーキテクトに求められる考え方と技術、そして人と働くためのスキルを一冊に整理した書籍です。副題はエンジニアリングに基づく体系的アプローチ、原書は Fundamentals of Software Architecture です。版元の紹介では、アーキテクチャの定義から、アーキテクトの役割、モジュールや結合、アーキテクチャスタイルといった設計の基礎、チームやステークホルダーと協働するためのソフトスキルまでを、実践的な例とともに説明すると案内されています。コードを書く立場から、システム全体の構造を決める立場へ視野を広げたい開発者に向けた一冊です。
全 24 章の構成、基礎とスタイルとソフトスキルの 3 部
導入の 1 章でアーキテクチャの定義とアーキテクトへの期待を確かめたあと、本書は 3 つの部に分かれます。第 I 部の基礎 (2〜8 章) は、アーキテクチャ思考、モジュール性と凝集度や結合度の計測、アーキテクチャ特性の洗い出しと計測、適応度関数による統制、アーキテクチャ量子と粒度、コンポーネントベース思考を扱います。第 II 部のアーキテクチャスタイル (9〜18 章) は、分散コンピューティングの 8 つの誤信を含む基礎の章に続いて、レイヤード、パイプライン、マイクロカーネル、サービスベース、イベント駆動、スペースベース、オーケストレーション駆動サービス指向、マイクロサービスの 8 つのスタイルを 1 章ずつ取り上げ、18 章で適切なスタイルの選び方をまとめます。第 III 部のテクニックとソフトスキル (19〜24 章) は、アーキテクチャ決定、リスクの分析、図解とプレゼンテーション、チームづくり、交渉とリーダーシップ、キャリアパスを扱い、巻末に自己評価のためのチェックリストが付きます。
正解ではなくトレードオフで考えるという軸
アーキテクチャの判断が難しいのは、どの選択肢にも得るものと失うものがあり、文脈を離れた正解が存在しないからです。分散させれば独立したデプロイや拡張がしやすくなる一方で、ネットワークの遅延や部分的な障害、データの整合性という新しい問題を抱え込みます。本書はこの前提に立って、性能や拡張性、可用性といったアーキテクチャ特性を要件やドメインの関心事から引き出し、それぞれのスタイルがどの特性に強くどの特性を犠牲にするかを比べる枠組みを示します。4 章の節題にある「少なくとも最悪でないアーキテクチャ」という言い方にも、最良を探すより受け入れられる妥協点を選ぶという姿勢が表れています。決めた内容を後から説明できるように、19 章では アーキテクチャ上の意思決定を記録する文書 の基本構造や保存のしかたも扱っており、判断の過程そのものを残す習慣づけまでを射程に入れています。
設計経験のある開発者に向く、手を動かす本ではない点に注意
主な読者として想定しやすいのは、アプリケーションの実装経験があり、モジュールの分け方やサービスの境界について意見を求められ始めた開発者や、アーキテクトの役割を任されたばかりの人です。特定の言語やフレームワークの実装手順、クラウドサービスの構築方法を学ぶ本ではないため、サンプルコードを動かしながら覚えたい人には物足りなく感じられるかもしれません。21 章では UML や C4 モデル、ArchiMate といった図の標準にも触れるので、図で構造を伝える場面が多い人には実務へのつながりが見えやすい内容です。設計の本をどの層から読むか迷っている場合は、設計とアーキテクチャの本の選び方 で自分の課題がコード、モジュール、システムのどの層にあるかを確かめてから手に取ると、本書の位置づけがはっきりします。
マイクロサービスに移るべきか、モノリスのまま整えるべきかといった議論を、流行や好みではなく特性と制約の言葉で進めたい人にとって、本書はスタイルを横並びで比べる物差しと、決定を記録し関係者に説明する手段を同時に与えてくれます。技術の選定会議で根拠を問われることが増えてきた人ほど、読む時間に見合う効果を得やすい一冊です。
言及した記事 (1 件)
この本に興味がある方におすすめ
関連する本
関連記事
会社の書籍購入補助を使い倒す技術 - 申請が通る選書と読了につなげる仕組み
会社の書籍購入補助 (書籍購入制度) を最大限活用する方法を解説。制度の一般的なパターン、申請理由の書き方、補助で買う本と自費で買う本の切り分け、買って終わりにしない読了の仕組みまで、エンジニア向けの実践ガイドです。
本についてくるダウンロード素材を使い倒す
プログラミングの本には、サンプルコードや練習用データのダウンロード特典がついていることがあります。素材の探し方と、完成版コードの使い方を解説します。
技術書は電子書籍と紙のどちらで読むべきか
電子書籍と紙の技術書のメリット / デメリットを比較し、用途別の使い分け指針と、電子書籍リーダーの選び方を紹介します。
関連用語
所有権と借用
Rust のメモリ管理モデルで、GC なしでメモリ安全性を保証する仕組み
データベースインデックス
検索クエリの高速化のためにデータベースが維持する補助的なデータ構造
ライトアンプリフィケーション
データベースへの 1 回の論理的な書き込みが、内部的に複数回の物理的な書き込みを引き起こす現象
オブザーバーパターン
オブジェクトの状態変化を複数の依存オブジェクトに自動通知するデザインパターン
Git Flow
feature、develop、release、hotfix、main の 5 種類のブランチで開発を管理するブランチ戦略
PostgreSQL
高い拡張性と SQL 標準準拠を特徴とするオープンソース RDBMS