へようこそモジュール1C4モデル学習コースの——このアプローチが存在する理由と、チームがソフトウェアアーキテクチャを可視化し、コミュニケーションする方法を根本的に変える仕組みをしっかり理解するための必須の出発点です。
このC4モデルは、サイモン・ブラウン2006年から2011年にかけて作成されたもので、軽量で開発者向けで階層的な方法として、ソフトウェアアーキテクチャを可視化する。シンプルだが強力な抽象化と図の種類のセットを提供し、完全なUMLや臨時の「箱と線」のスケッチのような複雑さや硬直性を気にせずに、明確で一貫性があり、対象となる聴衆に適した図を描くことができます。
C4モデルの核心には、ソフトウェアチームに広く見られる課題があります。多くのアーキテクチャ文書は、欠落している、一貫性がない、古くなっている、情報過多、あるいは異なる聴衆(経営陣やプロダクトマネージャーから開発者や運用チームまで)に効果的に伝わらないという問題です。従来のアプローチはしばしば「白紙のキャンバス」問題に悩まされます。構造なしに図を描き始めるため、曖昧で保守が難しく、または過剰にごちゃごちゃした図が生まれます。C4モデルは以下の点でこの問題を解決します:
- 明確な抽象化の階層により、全体像から詳細まで「ズームイン」できる
- 基本要素の少数(人、ソフトウェアシステム、コンテナ、コンポーネント、関係)のみ
- 表記の独立性—— 箱や線の任意のスタイル(シンプルなスケッチ、PlantUML、Draw.io、Miroなど)を使用可能
- ツールの独立性—— ホワイトボードから、StructurizrやC4-PlantUMLのようなコードベースのソリューションまで
- 詳細な文書作成よりも、コミュニケーションと理解に重点を置く
4つのコアレベル(「C4」)
このモデルは、段階的に詳細が増す4つのレベルに基づいている:
- レベル1:システムコンテキスト — 最も高レベルの「全体像」の視点。あなたのすべてのソフトウェアシステムが1つのボックスとして表示され、利用者(人物)および相互作用する外部システムで囲まれている。非技術者関係者やオンボーディングに最適。
- レベル2:コンテナ — ソフトウェアシステム内部にズームインし、主要なデプロイ可能/実行可能な構成要素(ウェブアプリケーション、モバイルアプリ、API、データベース、メッセージキューなど)を明らかにする。選択された技術とコンテナ間の相互作用を強調する。
- レベル3:コンポーネント — 単一のコンテナにズームインし、内部の論理モジュール、サービス、ライブラリ、サブシステムを表示する。コードの詳細に立ち入らず、責任分担とインターフェースに焦点を当てる。
- レベル4:コード — 最も詳細なレベルで、実装の詳細(例:UMLクラス図、ERD、または実際のコード構造)を表示する。深い技術的明確性が必要な場合に限定的に使用する。
補助的な視点
コア階層に加えて、C4モデルはより広範または専門的な視点を提供するための3つの補助的な図形式を定義している:
- システムランドスケープ — 企業全体にわたる複数のソフトウェアシステムとその高レベルな関係を示す、ズームアウトした企業視点。
- ダイナミック — ランタイム中心の図で、特定のシナリオやユースケースにおける要素の相互作用を示す(簡略化されたシーケンス図に類似)。
- デプロイメント — コンテナをインフラストラクチャ(サーバー、クラウド領域、ネットワーク、Kubernetesクラスタなど)にマッピングし、論理的なアーキテクチャと物理的な実行環境をつなぐ。
このモジュールの終了時には、C4モデルが世界中の数千のチームによって広く採用されている理由が理解できるだろう——それは現実的で、スケーラブルで、保守可能であり、適切なレベルの詳細で、適切な対象に適切な物語を伝えることに焦点を当てているからである。
この基盤は、最初に最初のものを創り出すことを含む、これから先の実践的なモジュールに完璧に備えます。システムコンテキスト図モジュール2で。
C4の知識を一つずつ明確でズーム可能なレイヤーごとに構築していきましょう!