0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ソフトウェアアーキテクチャの基礎は「3つの法則」に集約される

0
Last updated at Posted at 2026-04-30

ソフトウェアアーキテクチャの本質は「3つの法則」に集約される【徹底解説】

『ソフトウェアアーキテクチャの基礎 第2版』を読んで、最も重要だと感じた部分を抜粋して紹介します!ぜひ、最後まで見てね

image.png

結論

本書『ソフトウェアアーキテクチャの基礎 第2版』の核心は以下の3点

法則 内容 実践
第一法則 すべてはトレードオフ 得るものと失うものを明示して選択する
第二法則 Why > How ADR で決定理由を記録する
第三法則 二者択一ではなくスペクトラム 極端な選択肢の間を探る

読むべき人: 技術選定で後悔したことがある全開発者
読了時間: 本記事10分、本書はつまみ食い推奨
即実践可能: ADR(アーキテクチャ決定記録)

なぜ今、アーキテクチャを学ぶのか

以下のような苦い経験はないだろうか。

  • 開発プラットフォーム Firebase を採用 → 半年後、想定外のコスト発生
  • マイクロサービス化 → デバッグ・デプロイが複雑化して開発速度低下
  • 話題のReactを使ってみた → 小規模サイトなのに学習コストとビルド時間で消耗

これらは全て 「アーキテクチャ判断のトレードオフを理解せずに選択した」 結果です

本書はこの問題を解決する。「正解」を教えるのではなく、自分で正解を導くための思考法を提供する。

アーキテクチャとは何か

定義

ソフトウェアアーキテクチャ = システム全体の構造と、その構造を決定する重要な判断

「コーディング」や「設計(デザイン)」との違いは以下の通り。

レベル 対象 変更コスト
コーディング 個別の実装 関数の実装、変数名
設計 モジュール・クラスの構造 クラス設計、API設計
アーキテクチャ システム全体の方針 技術スタック、データストア、分散方式

アーキテクチャ判断は あとから変更するコストが極めて高い ため、慎重に行う必要がある。

アーキテクチャの4側面

本書では、アーキテクチャを以下の4要素の組み合わせとして定義する。

要素 説明
アーキテクチャ特性 システムの品質目標 可用性、拡張性、保守性、セキュリティ
アーキテクチャスタイル システム全体の構造パターン レイヤード、マイクロサービス、イベント駆動
アーキテクチャ決定 ルール・制約 「DB直接アクセス禁止」「特定フレームワーク使用」
論理コンポーネント 機能単位の要素 認証モジュール、決済モジュール、通知サービス

これら4要素を状況に応じて最適化するのがアーキテクトの仕事だ。

本書の核心:3つの法則

第一法則:すべてはトレードオフである

ソフトウェアアーキテクチャに「絶対的な正解」は存在しない。すべての選択は何かを得て何かを失う。

具体例:Firebase vs 自前API

評価項目 Firebase 自前API(Node.js + PostgreSQL)
開発速度 ◎ 数時間〜数日 △ 数週間
運用負荷 ◎ ほぼゼロ △ サーバー管理必須
初期コスト ◎ 無料枠が広い ○ VPS月数百円
拡大時コスト △ 急増・予測困難 ◎ 線形・予測可能
柔軟性 △ Firebase の仕様に制約される ◎ 完全に自由
ベンダーロック × Google 依存 ◎ 依存なし

結論: 状況によって最適解が変わる。

  • MVP を1ヶ月で作りたい → Firebase
  • 長期運用でコスト最適化 → 自前
  • 複雑なクエリが必要 → 自前
  • 運用リソースがない → Firebase

この法則の2つの帰結

  1. トレードオフが見当たらない場合、それは発見していないだけ
    「完璧な技術」に見えても、必ずトレードオフは存在する。
  2. トレードオフ分析は継続的に行う
    状況変化(ユーザー数、チーム規模、予算)に応じて再評価が必要。

第二法則:Why > How

「どうやって(How)」よりも「なぜ(Why)」の方が重要である。

問題:3ヶ月後の自分は当時の判断理由を忘れている

現在:「Firebase でいこう」
↓
3ヶ月後:「なんで Firebase にしたんだっけ?自前の方が安いのでは?」
↓
判断理由が不明 → 移行すべきか判断できない → 技術的負債化

解決策:ADR(Architecture Decision Record)

ADR = アーキテクチャ決定を記録する文書

テンプレート例:

# ADR-003: バックエンドにFirebaseを採用
 
## ステータス
採択(2024-01-15)
 
## コンテキスト
- 個人開発のTodoアプリ
- 1ヶ月でMVPをリリースする必要
- 開発者1名、運用リソースなし
 
## 検討した選択肢
1. Firebase(BaaS)
2. Supabase(OSS BaaS)
3. 自前(Node.js + PostgreSQL + Redis)
 
## 決定
Firebaseを採用する。
 
## 理由
- 認証・DB・ホスティングが統合されており開発速度が最速
- 無料枠(月間5000 MAU)で想定ユーザー数をカバー可能
- 運用負荷ゼロ
 
## トレードオフ(受け入れるリスク)
- Googleへのベンダーロックイン
- 5000 MAU超過時のコスト急増(従量課金)
- 複雑なクエリ(JOIN等)の実装困難
 
## 再評価条件
- MAU 3000到達時:コスト試算
- 複雑な検索機能が要件化した時
- 6ヶ月後の定期見直し

ポイント:

  • docs/adr/ に番号付きで保存(ADR用フォルダを作る)
  • Git で管理(履歴が残る)
  • 状態遷移(提案 → 採択 → 廃止)を記録

第三法則:二者択一ではなくスペクトラム(第2版で追加)

ほとんどのアーキテクチャ決定は白黒の二択ではなく、極端な選択肢の間のスペクトラム上に位置する。

例:「マイクロサービス vs モノリス」は罠

この二択で語られがちだが、実際は以下のようなスペクトラムが存在する。

スタイル サービス数 特徴 適用場面
モノリス 1 全機能が単一アプリ 小規模、少人数チーム
モジュラーモノリス 1(内部分割) モノリスだが内部はモジュール化 将来の分割を見据えた設計
サービスベース 3〜5 粗粒度のサービス分割 中規模、部分的スケール
マイクロサービス 10+ 細粒度の完全分散 大規模、高スケーラビリティ要求

段階的移行の例

Phase 1: モノリスで開発(MVP)
↓
Phase 2: 負荷集中部分をサービス化(画像処理など)
↓
Phase 3: ビジネスロジックをドメイン別に分割
↓
Phase 4: 必要に応じてさらに細分化

重要: 最初から「完全なマイクロサービス」を目指す必要はない。状況に応じてスペクトラム上を移動する。

実践:明日から使えるADR

ADR導入の手順

  1. リポジトリに docs/adr/ ディレクトリを作成
  2. テンプレートを用意(上記参照)
  3. 重要な決定から記録開始
  4. プルリクエストでレビュー

ADRを書くべきタイミング

  • 技術スタックを選定する時
  • データストアを選ぶ時
  • アーキテクチャスタイルを決める時
  • 大きなリファクタリングを行う時
  • サードパーティサービスを導入する時

生成AIの活用(第2版で言及)

本書第26章では、生成AIにADRの下書きを作らせる手法が紹介されている。

プロンプト例:
「個人開発のTodoアプリで、バックエンドにFirebaseを採用しました。
理由は開発速度とMVP時の無料枠です。
この決定のADRを作成してください。」

Claude や ChatGPT が叩き台を出力 → 人間がレビュー・修正 → 完成。

本書の構成と読み方

全体構成

内容 読み方
第I部:基礎 2〜8章 アーキテクチャの定義、モジュール性、特性 2, 3章を精読
第II部:スタイル 9〜20章 主要10スタイルの図鑑 興味あるスタイルのみ
第III部:実践 21〜27章 ADR, リスク分析, チーム運営 21章(ADR)必読

効率的な読み方

優先度A(必読):
1章(3つの法則) → 21章(ADR) → 27章(法則の再考)
 
優先度B(興味に応じて):
2章(アーキテクチャ思考) → 3章(モジュール性)
→ 第II部から該当スタイル
 
優先度C(リファレンス):
残りの章は必要に応じて参照

第2版での主な追加・変更点

項目 内容
第三法則の追加 スペクトラム思考の導入
11章追加 モジュラーモノリス(第1版にはなし)
26章拡充 生成AI/LLMへの言及
全スタイル章 クラウド・チームトポロジーの考察を追加

まとめ:3つの法則のチェックリスト

技術選定時に以下を自問する習慣をつける。

第一法則:トレードオフ

  • この選択で 得るもの を3つ挙げられるか?
  • この選択で 失うもの を3つ挙げられるか?
  • トレードオフを受け入れられるか?

第二法則:Why

  • この決定の 理由 を説明できるか?
  • ADRとして 記録 したか?
  • 再評価の 条件 を設定したか?

第三法則:スペクトラム

  • 極端な選択肢(全か無か)になっていないか?
  • 中間的な選択肢 を検討したか?
  • 段階的移行の パス を考えたか?

本書の価値

本書は「正解」を教えない。正解を導く思考法を教える。

この思考法が身につくと:

  1. 流行に流されず、状況に応じた判断ができる
  2. 技術選定を論理的に説明できる
  3. 未来の自分・チームメンバーに判断根拠を残せる
    560ページあるが、つまみ食いで十分価値がある。特に 21章(ADR)は今日から実践可能 だ。

書誌情報

  • 書名: ソフトウェアアーキテクチャの基礎 第2版 ─ エンジニアリングに基づく体系的アプローチ
  • 原題: Fundamentals of Software Architecture, 2nd Edition
  • 著者: Mark Richards、Neal Ford
  • 訳者: 島田 浩二
  • 出版: オライリー・ジャパン
  • 発行: 2026年2月
  • ISBN: 978-4-8144-0155-0
  • ページ数: 560
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?