コンテキストマップ
定義
コンテキストマップとは、プロジェクト内に存在する複数の境界づけられたコンテキスト(Bounded Context)と、それらの間の統合関係を図示したもの。各コンテキストが「上流(Upstream)」か「下流(Downstream)」かを示し、どの統合パターンで接続されているかを明確にする。
主な統合パターン
| パターン | 説明 |
|---|---|
| 共有カーネル(Shared Kernel) | 2チームが小さなモデルの一部を共有・共同管理する |
| カスタマー/サプライヤー | 上流(サプライヤー)が提供し、下流(カスタマー)が消費する。計画は協議する |
| 追従者(Conformist) | 上流モデルをそのまま取り込む。交渉力がない場合 |
| 腐敗防止層(ACL) | 下流が翻訳層を設け、上流モデルの汚染を防ぐ |
| オープンホストサービス(OHS) | 上流がプロトコル(API)を公開し、複数の下流が利用する |
| 公表された言語(Published Language) | OHSで使う文書化された共有スキーマ(OpenAPI等) |
| 別々の道(Separate Ways) | 統合しない。それぞれ独立して解決策を持つ |
なぜ重要か
コンテキストマップを描かないと:
- どのチームがどの部分に責任を持つか曖昧になる
- 統合の境界が暗黙的で、変更時の影響範囲が見えない
- 「モデルの汚染」(他チームの概念が侵入する)が静かに進行する
コンテキストマップは設計の早期に描き、システムの全体像を共有するためのコミュニケーションツールとして機能する。
適用場面
- 複数チームが並行して開発するシステムの設計を始めるとき
- マイクロサービスの依存関係を整理するとき
- レガシーシステムとの統合方法を設計するとき
- チーム間のコミュニケーションが「境界」を意識できているか確認するとき
関連概念
- → 境界づけられたコンテキスト
- → 腐敗防止層
- → オープンホストサービス
- → 共有カーネル
出典
実践ドメイン駆動設計(Vaughn Vernon)第3章