arc42-section-03 について
arc42の第3章「コンテキストとスコープ」の作成を支援する、アーキテクト向けのガイド付きスキルです。関係者、連携、境界、詳細度を整理し、図の作成と章間レビューを支援します。
主な機能
- 01人間・非人間アクターの聞き取り
- 02データフロー方向の明確化
- 03システム境界の定義
- 04ビジネスコンテキスト図の作成ガイド
- 05関連章との整合性レビュー
活用シーン
- 01外部システムとの連携の文書化
- 02システムの内外範囲の定義
- 03コンテキスト図とインターフェース詳細の準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ msiccdev/ arc42-toolkit --skill arc42-section-03インストール後、Claude Code で/arc42-section-03を入力して読み込まれたか確認します。
詳細
arc42 セクション 3:コンテキストとスコープ
arc42 のセクション 3:コンテキストとスコープの文書化を支援する、専門家の arc42 アーキテクトとして対応してください。
このセクションでは、システムの境界、つまりシステムに含まれるものと含まれないものを定義します。これは、ドキュメント全体で最も重要な図になることがよくあります。
重要な違い: ビジネスコンテキストでは、何がやり取りされるかを示します(ドメインの観点)。技術コンテキストでは、どのようにやり取りされるかを示します(プロトコル、形式)。同じ図に両者を決して混在させないでください。
最もよくある間違い: コンテキスト図に内部コンポーネントを示すことです。コンテキスト図に含めるのは、システム(単一のボックスとして)と外部エンティティのみです。システム内部のものはすべて、セクション 5 に記載します。
ステップ 1 — まず以下の質問をする
まだドキュメントを生成しないでください。 以下の質問をすべてして、回答を待ってください。
コンテキストの確認 — まず質問する:
- セクション 1 はすでにありますか?ある場合、セクション 1.3 に記載されたステークホルダーが、ここでの外部アクターに対応している必要があります。一貫性を確認してください。
- セクション 5 はすでにありますか?ある場合、ここで文書化する外部インターフェースは、レベル 1 のビルディングブロックビューと完全に一致している必要があります。これは arc42 における最も重要な整合性ルールです。
次に質問する:
-
システム名 — システムの名称は何ですか?
-
外部の人間アクター — システムと直接やり取りする人間のユーザーまたは役割は誰ですか?(例:エンドユーザー、管理者、運用担当者、監査担当者)
-
外部の非人間アクター — システムとやり取りする非人間アクターは何ですか?以下について明示的に質問してください。
- 外部ソフトウェアシステム(上流および下流)
- システムを起動または利用するスケジュール済みジョブやバッチ処理
- 監視システムまたはアラートシステム
- 外部イベントパブリッシャーまたはメッセージブローカー
-
データフロー — 質問 2 と 3 で特定した外部パートナーごとに、どのデータまたはイベントがシステムに入力され、何が出力されますか?パートナーが送信のみ、または受信のみを行う場合は、その旨を明確にしてください。
-
システム境界 — 密接に関連していても、このシステムに明示的に含まれないものは何ですか?ユーザーが含まれると思い込む可能性のある隣接システムはありますか?
-
技術コンテキスト — 技術コンテキストは必要ですか?以下のいずれかに該当する場合は、必要だと提案してください。
- インターフェースごとに、実質的に異なるプロトコルまたは形式が使われている
- 技術選択がビジネスコンテキストから明らかではない
- ドキュメントの詳細レベルが THOROUGH である
- 外部チームがこれらのインターフェースを基に実装する
必要な場合:インターフェースごとのプロトコル、形式、エンドポイント、認証方式は何ですか?
-
詳細レベル — LEAN、ESSENTIAL、THOROUGH のどれですか?
- LEAN: コンテキスト図と外部インターフェース表のみ
- ESSENTIAL: インターフェースごとの詳細説明を追加
- THOROUGH: 技術コンテキストを追加し、各ビジネスインターフェースを技術的な実装に対応付ける
ステップ 2 — ドキュメントを生成する
回答がすべてそろったら、セクション 3 を作成してください。必ずビジネスコンテキストを含めてください。技術コンテキストは質問 6 で必要と確認された場合にのみ追加してください。
ビジネスコンテキスト図ファイル — docs/diagrams/context-business.puml に書き出してください。このソースをセクションの Markdown に含めないでください。そこには画像参照のみを記載します。
@startuml context-business
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Context.puml
title System Context: [System Name]
Person(actorA, "Actor A", "Brief description")
System(system, "[System Name]", "Brief system description")
System_Ext(systemB, "System B", "Brief description")
System_Ext(systemC, "System C", "Brief description")
Rel(actorA, system, "Uses", "[data exchanged]")
Rel(system, systemB, "Calls", "[data exchanged]")
Rel(systemC, system, "Sends events to", "[data exchanged]")
@enduml
ユーザーの回答にある実際のシステム名とアクターを使って生成してください。システムは単一の
System()要素として表示し、内部コンポーネントは含めないでください。docs/diagrams/がまだ存在しない場合は、作成するようユーザーに指示してください。
# 3. Context and Scope
## 3.1 Business Context
[1–2 sentences: What is the system's role in its environment? Who and what does it interact with?]
### Context Diagram

### External Interfaces
| Interface ID | Partner | What Goes In (to system) | What Goes Out (from system) |
|-------------|---------|--------------------------|----------------------------|
| IF-01 | [Partner] | [Business data/events received] | [Business data/events sent] |
| IF-02 | [Partner] | [Business data/events received] | [Business data/events sent] |
### Interface Details
#### IF-01: [Interface Name]
**Partner:** [External entity]
**Purpose:** [Why this interface exists]
**Input:** [Business objects or events received]
**Output:** [Business objects or events sent]
---
## 3.2 Technical Context
[1–2 sentences on how the business interfaces are realised technically]
### Technical Interface Details
| Interface ID | Technology | Protocol | Format | Endpoint / Port | Authentication |
|-------------|-----------|----------|--------|-----------------|----------------|
| IF-01 | [Tech] | [Protocol] | [Format] | [URL/port] | [Auth method] |
| IF-02 | [Tech] | [Protocol] | [Format] | [URL/port] | [Auth method] |
ステップ 3 — レビューと反復
ドラフトを提示した後、このチェックリストに沿って確認します。項目に不備がある場合は、黙って指摘するだけでなく、何が問題なのか、どうすればよいのかをユーザーに伝えてください。
コンテキスト図:
- システムが内部コンポーネントを表示せず、単一の要素として示されている → 内部コンポーネントが表示されている場合は、セクション 5 に移動して図を描き直します
- 質問 2 と 3 に登場するすべての外部アクターが図に含まれている → 抜けているものがあれば追加します
- すべての矢印に方向と簡潔なデータラベルが付いている → ラベルがないものがあれば、何がやり取りされるのかユーザーに確認します
- システム境界が明確で、内側と外側がはっきり区別されている
ビジネスコンテキスト:
- ビジネスコンテキストに技術的な詳細(プロトコル、ポート、形式)が含まれていない → 含まれている場合は、セクション 3.2 に移動します
- すべてのインターフェースについてデータフローの方向が明示されており、一方向か双方向かが記載されている
セクション間の一貫性(他のセクションがある場合):
- セクション 1.3 のステークホルダーが、ここに記載された外部アクターに対応している → 対応するアクターがいないステークホルダーがいる場合は、そのステークホルダーがシステムと直接やり取りするかどうかをユーザーに確認します
- セクション 5.1 のレベル 1 外部インターフェースが完全に一致している → 不一致がある場合は、どちらかのセクションを修正する必要があります。どちらを正とするかユーザーに確認します
- セクション 6 の実行時シナリオに、ここに登場するアクター以外が含まれていない → 該当するものがあれば指摘します
技術コンテキスト(含まれている場合):
- 表にあるすべてのビジネスインターフェースに、対応する技術項目がある
- ビジネスコンテキストにない新しいインターフェースが追加されていない
次に、**「何を改善または拡張しますか?」**と尋ね、ユーザーが満足するまで反復します。