LikeC4 C4 図
口頭での説明またはコードベースからLikeC4 DSLで有効なC4図を作成し、提供前にCLIで検証します。参照資料は関心事ごとに分割されています。各パートを書く前に、タスクに必要なものだけを読み、構文を推測しないでください。
ここに記載されている内容はすべて likec4 1.59.2 に対して検証済みです(バージョン固定とアップグレード手順については references/setup-and-validation.md を参照)。
厳格なルール(2つのみ)
- 提供前に検証する。 プロジェクトに対して
likec4 validateを実行し、終了コード0の場合のみ提供します。CLIが全く利用できない場合 → 文書化された自己チェックを実施し、その旨を開示します。手順:references/setup-and-validation.md。 - DSL構文を決して推測しない。 不明な場合は関連する参照資料を開き、それでも不明な場合は https://likec4.dev/dsl/ を参照します。
セットアップ(最初の作業、セッションごとに1回)
LC4="npx -y [email protected]"
v="$(likec4 --version 2>/dev/null | grep -oE '^[0-9]+\.[0-9]+\.[0-9]+' | tail -1)"
[ -n "$v" ] && [ "$(printf '%s\n1.53.0\n' "$v" | sort -V | head -1)" = "1.53.0" ] && LC4=likec4
インストール済みのCLIは >= 1.53.0 の場合のみ使用します。それより古いバージョンには format コマンドがなく、1.52.0は無効なモデルでも終了コード0を返すため、以下の2つのゲートが黙って通過してしまいます。グローバルインストールは不要です。npx -y [email protected] はNode 22以上とネットワーク環境があれば動作します(初回はダウンロードし、その後キャッシュされます)。ユーザーが保持するプロジェクトには npm install --save-dev [email protected] を推奨します。詳細、バージョン下限、オフラインフォールバック、エラー一覧については: references/setup-and-validation.md。
タスク → 読むべきもの
| 直面するタスク | 読むもの |
|---|---|
| システムコンテキスト / ランドスケープ(「誰が使うか、何と通信するか」) | references/levels/l1-context.md |
| コンテナ(「内部で何が動くか」、技術選択) | references/levels/l2-container.md |
| コンポーネント(1つのコンテナ内部) | references/levels/l3-component.md |
| コードレベル(1つのコンポーネントのクラス/インターフェース) | references/levels/l4-code.md |
| データフロー / シナリオ / シーケンス(ログイン、チェックアウト、パイプライン) | references/levels/flows-dynamic.md |
| インフラストラクチャ / 「どこで動作するか」 | references/levels/deployment.md |
| クロスカッティングなDSLの質問(spec、model、FQN、extend、述語) | references/syntax-core.md |
| 色、形状、アイコン、凡例、レイアウト | references/styling.md |
| リポジトリ / ソースコードが与えられた場合 | references/code-to-diagram.md |
| インストール、検証、フォーマット、エラー、プレビュー/エクスポート/CI | references/setup-and-validation.md |
構造をタスクに合わせて拡大縮小する
- 小規模な依頼(1システム、簡単なコンテキスト/コンテナ図):
templates/minimal/から始めます。3ファイル(spec.c4、model.c4、views.c4)。マルチフォルダプロジェクトは構築しません。 - 本格的なシステム(2レベル以上、複数システム、デプロイメント、フロー):
templates/full/レイアウトを使用します。ファイルをコピーして内容をリネームします:
architecture/
├── spec.c4 # 唯一の仕様ブロック: すべての種類
├── model/
│ ├── landscape.c4 # トップレベルのシステム + アクター
│ ├── <system>.c4 # システムごとに1ファイル、extend <system> { … } を使用
│ └── externals.c4 # externalSystem 要素
├── deployment/prod.c4 # ノード + instanceOf(種類は spec.c4 に残す)
└── views/
├── context.c4 # レベル1(ビューインデックス)
├── <system>-views.c4 # レベル2/3のビュー、ドリルダウンあり
└── dynamic-flows.c4 # 動的ビュー + デプロイメントビュー
ファイルを追加することで拡張し(新しいシステム → 新しい model/<s>.c4)、モデルとビューを分離し、仕様は1つのファイルに保持します。フォルダ内のすべての .c4 ファイルは自動的に1つのモデルにマージされます。
テンプレートは組み込みテーマカラーのみを使用します(スコープ内 = primary、外部 = externalSystem 種類による gray、人物 = indigo)。カスタムカラーやタグは使用しません。これによりC4の慣習を維持し、ライト/ダークテーマに適応します。
ワークフロー
- スコープ設定 — システム、アクター、外部システムを特定し、レベルを選択します。デフォルト: コンテキスト + コンテナ。コンポーネントは重要なコンテナにのみ使用。主要なシナリオごとに1つの動的ビュー(推奨)。インフラが重要な場合にデプロイメント。レベル4は明示的なリクエストまたは明確な正当性がある場合のみ(
references/levels/l4-code.md— デフォルトの代わりはソースリンク)。リポジトリが入力の場合 →references/code-to-diagram.md。本当に曖昧なスコープ → 1つ質問します。それ以外は進め、前提条件を明記します。 - セットアップ — 該当するテンプレートをコピーし、上記の
LC4行を実行します。 - モデル、次にビュー — モデルファイルを作成し、次にドリルダウン(
view of、navigateTo)のあるビューを作成します。各図を作成する際には該当するレベルファイルを読みます。 - 検証、次にフォーマット —
$LC4 validate <dir>。終了コード0になるまでLine N:のエラー(エラーカタログはsetup-and-validation.md内)を修正します。次に$LC4 format <dir>を実行し、再検証します。これによりファイルがユーザーのツールが生成する標準スタイルと一致します。 - 提供 — ファイルツリー、検証結果、図の表示方法(
$LC4 start <dir>; エクスポート/CIのオプションはsetup-and-validation.md内)を示します。
品質基準(提供前に確認)
-
likec4 validateが終了コード0(または開示された自己チェック)、stderrはクリーン。 -
likec4 format <dir> --checkが終了コード0 — ファイルが正規形式であること。 - すべての要素に説明があり、すべてのコンテナ/コンポーネントに
technologyがあり、すべての関連に方向性のあるラベル(内容+方法)があること。 - すべてのビューに
titleがあり、ビューごとに約20要素以内 — 混雑したビューは分割すること。 - レベルが接続されている: コンテキスト → コンテナ → コンポーネント(
view of/navigateTo経由)。