TL;DR
ソフトウェアアーキテクチャを、Context、Container、Component、Code の 4 つのレベルでモデリングし、図に表す手法。Simon Brown が考案した。
なぜ必要か
優れたアーキテクチャの目的の 1 つは、コンテナやコンポーネント、モジュールの間にさまざまな境界を定義し、新しい要件が発生したときの変更コストを最小限に抑えることである。C4 モデルは、それらの境界をレベルごとに整理して捉えるのに役立つ。
仕組み
4 つのレベルは、上から順に次のとおり。下のレベルは、上のレベルを構成する要素になっている。
- システムコンテキスト(Context): システム全体を表す最上位の概念
- コンテナ(Container): システムコンテキストを構成する概念。Web サイトや Web サービス、データベースなど、デプロイできる単位を指す
- コンポーネント(Component): コンテナを構成する概念
- コード(Code): コンポーネントを構成する要素。クラスやモジュールにあたる
公式サイトでは、特定の表記法やツールに依存しないこと(Notation independent、Tooling independent)を特徴に挙げている。