c4-container について
C4 コンテナレベルでアプリケーションやデータストアを記述するスキルテンプレートです。デプロイ境界、インターフェース、依存関係、図を扱い、構成は実際のコードや設定に基づいて確認するよう促します。
主な機能
- 01コンテナ境界の文書化
- 02インターフェースと API 仕様の指針
- 03デプロイと依存関係の整理
- 04Mermaid コンテナ図
- 05インフラとスケーリングのチェック項目
活用シーン
- 01コンポーネントをデプロイ単位に対応付け
- 02マイクロサービスのコンテナ文書作成
- 03API 仕様の作成
- 04Kubernetes マニフェストの分析
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill c4-containerインストール後、Claude Code で/c4-containerを入力して読み込まれたか確認します。
詳細
C4 コンテナレベル:アプリケーションとデータストア
このスキルを使用する場面
- C4 コンテナレベルのシステムデプロイタスクやワークフローに取り組む場合
- C4 コンテナレベルのシステムデプロイに関するガイダンス、ベストプラクティス、チェックリストが必要な場合
このスキルを使用しない場面
- タスクが C4 コンテナレベルのシステムデプロイに関係しない場合
- この範囲外の別の分野やツールが必要な場合
手順
- 目標、制約、必要な入力を明確にします。
- 関連するベストプラクティスを適用し、結果を検証します。
- 実行可能な手順と検証方法を提示します。
C4 のコンテナはアプリケーションまたはデータストアであり、必ずしも Docker コンテナや実行時ノードを指すものではありません。物理的なインスタンスやリージョンは、デプロイ図で個別にモデル化してください。各境界や関係性は、確認できたコードや設定に基づいて定義し、不明な点は明示してください。以下のテンプレートはプレースホルダーであり、発見済みのアーキテクチャを示すものではありません。
コンテナ
[Container Name]
- 名前: [コンテナ名]
- 説明: [コンテナの目的とデプロイ方法の簡単な説明]
- 種類: [Web Application、API、Database、Message Queue など]
- テクノロジー: [主要なテクノロジー:Node.js、Python、PostgreSQL、Redis など]
- デプロイ: [Docker、Kubernetes、Cloud Service など]
目的
[このコンテナの役割とデプロイ方法の詳細な説明]
コンポーネント
このコンテナには、以下のコンポーネントをデプロイします。
- [Component Name]:[説明]
- ドキュメント:c4-component-name.md
インターフェース
[API/Interface Name]
- プロトコル: [REST/GraphQL/gRPC/Events など]
- 説明: [このインターフェースが提供するもの]
- 仕様: [OpenAPI/Swagger/API 仕様ファイルへのリンク]
- エンドポイント:
GET /api/resource- [説明]POST /api/resource- [説明]
依存関係
#C4 のコンテナはアプリケーションまたはデータストアであり、必ずしも Docker コンテナや実行時ノードを指すものではありません。物理的なインスタンスやリージョンは、デプロイ図で個別にモデル化してください。各境界や関係性は、確認できたコードや設定に基づいて定義し、不明な点は明示してください。以下のテンプレートはプレースホルダーであり、発見済みのアーキテクチャを示すものではありません。
使用するコンテナ
- [Container Name]:[使用方法、通信プロトコル]
外部システム
- [External System]:[使用方法、統合の種類]
インフラストラクチャ
- デプロイ設定:[Dockerfile、K8s マニフェストなどへのリンク]
- スケーリング:[水平/垂直スケーリング戦略]
- リソース:[CPU、メモリ、ストレージの要件]
コンテナ図
適切な Mermaid C4Container 構文を使用します。
C4Container
title Container Diagram for [System Name]
Person(user, "User", "Uses the system")
System_Boundary(system, "System Name") {
Container(webApp, "Web Application", "Spring Boot, Java", "Provides web interface")
Container(api, "API Application", "Node.js, Express", "Provides REST API")
ContainerDb(database, "Database", "PostgreSQL", "Stores data")
ContainerQueue(messageQueue, "Message Queue", "RabbitMQ", "Handles async messaging")
}
System_Ext(external, "External System", "Third-party service")
Rel(user, webApp, "Uses", "HTTPS")
Rel(webApp, api, "Makes API calls to", "JSON/HTTPS")
Rel(api, database, "Reads from and writes to", "SQL")
Rel(api, messageQueue, "Publishes messages to")
Rel(api, external, "Uses", "API")
主な原則(c4model.comより):
- 概要レベルのテクノロジーの選択を示します(テクノロジーの詳細を記載するのはここです)
- コンテナ間で責任がどのように分担されているかを示します
- コンテナの種類を含めます:アプリケーション、データベース、メッセージキュー、ファイルシステムなど
- コンテナ間の通信プロトコルを示します
- コンテナが連携する外部システムを含めます
API 仕様テンプレート
各コンテナ API について、OpenAPI/Swagger 仕様を作成します。
openapi: 3.1.0
info:
title: [Container Name] API
description: [API description]
version: 1.0.0
servers:
- url: https://api.example.com
description: Production server
paths:
/api/resource:
get:
summary: [Operation summary]
description: [Operation description]
parameters:
- name: param1
in: query
schema:
type: string
responses:
'200':
description: [Response description]
content:
application/json:
schema:
type: object
インタラクション例
- 「デプロイ定義に基づいてすべてのコンポーネントをコンテナにまとめる」
- 「API コンポーネントをコンテナに割り当て、その API を OpenAPI 仕様として文書化する」
- 「マイクロサービスアーキテクチャのコンテナレベルのドキュメントを作成する」
- 「コンテナのインターフェースを Swagger/OpenAPI 仕様として文書化する」
- 「Kubernetes マニフェストを分析し、コンテナのドキュメントを作成する」
主な違い
- C4-Component エージェントとの違い:コンポーネントをデプロイ単位に対応付けます。Component エージェントは論理的なグループ化に重点を置きます
- C4-Context エージェントとの違い:コンテナレベルの詳細を提供します。Context エージェントは概要レベルのシステム図を作成します
- C4-Code エージェントとの違い:デプロイアーキテクチャに重点を置きます。Code エージェントは個々のコード要素を文書化します
出力例
コンテナーを合成する際は、以下を提供してください。
- デプロイの根拠を示した明確なコンテナー境界
- 説明的なコンテナー名とデプロイ特性
- OpenAPI/Swagger 仕様を含む完全な API ドキュメント
- 含まれるすべてのコンポーネントへのリンク
- デプロイアーキテクチャを示す Mermaid コンテナー図
- デプロイ設定(Dockerfile、K8s マニフェストなど)へのリンク
- インフラストラクチャの要件とスケーリングに関する考慮事項
- すべてのコンテナーで統一されたドキュメント形式
制限事項
- タスクが上記の範囲に明確に該当する場合にのみ、このスキルを使用してください。
- 出力を、環境固有の検証、テスト、または専門家によるレビューの代わりとして扱わないでください。
- 必要な入力、権限、安全上の境界、または成功基準が不足している場合は、作業を中断して確認を求めてください。
コメント
Markdown 対応