【しーふぉーもでる】

C4モデル(アーキテクチャ図) とは?

最終更新:
💡 全体からコードへ、説明したい範囲を絞って描く

ソフトウェアアーキテクチャを4段階の詳細度(Context、Container、Component、Code)で表現する図解手法。抽象度を使い分けて、異なるステークホルダーに適切な粒度で説明できる。

📌 このページのポイント
同じシステムを、全体から詳細へ見る1 Context利用者と外部の関係人 ↔ ECサイト対象システムの全体2 Containerアプリやデータ保存Webアプリ・DB対象システムの中3 Component一つのアプリの内部注文処理・在庫管理一つのContainerの中4 Code一つの部品のコードOrder クラス一つのComponentの中必要な図だけ選ぶ。ContainerはDockerと別
ECサイトを説明用の例にした4段階の比較。各段階で対象にする範囲を表示しています。詳細へ進むことは処理順序ではないので、段階間の矢印は置いていません。
ひよこ ひよこ
C4モデルって、アーキテクチャ図とは違うの?
ペンギン先生 ペンギン先生
ソフトウェアの構造を、全体から詳細へ範囲を絞って説明する図の描き方だよ。Contextは対象のシステムと周囲の関係、Containerは中のアプリやデータの保管先、Componentは一つのアプリなどの内部、Codeはその一部のコードの構造を示すんだ
ひよこ ひよこ
ContainerってDockerのコンテナ?
ペンギン先生 ペンギン先生
C4では、動いているアプリやデータの保管先を表す言葉だよ。Webアプリやデータベースなどが例で、Dockerを使うかどうかとは別なんだ。サーバーをどこに配置するかという図とも区別しよう
ひよこ ひよこ
4段階を全部描かなければいけない?
ペンギン先生 ペンギン先生
必要な図だけでいいよ。公式サイトでも、多くのチームではContextとContainerで十分としている。Code図は一つのComponentのクラスや関数などを詳しく見せるもので、必要な部分をIDEなどで生成する使い方もあるんだ
ひよこ ひよこ
図をコードで管理すれば古くならない?
ペンギン先生 ペンギン先生
変更を記録しやすくはなるけれど、実際のシステムに合わせて更新することは必要だよ。公式サイトは、図を直接描く方法と、一つの構造モデルから複数の図を作る方法を区別している。伝える相手と内容に合う方法を選ぼう
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「C4モデル」って出てきたら「4段階の詳細度でアーキテクチャを描く手法」と思えればだいたいOK!
📖 おまけ:英語の意味
「C4 Model」 = 4つのCのモデル
💬 Context、Container、Component、Codeの頭文字が全部Cだから C4 なんだよ

参考資料

← 用語集にもどる