event-storming について
業務プロセスやシステム境界を探るチーム向けの、Event Stormingを模擬するスキルです。クイック、ガイド式、5つのペルソナによるモードがあり、イベントカタログと境界づけられたコンテキスト候補を作成します。
主な機能
- 013種類のワークショップモード
- 02フルモードは5つの関係者ペルソナ
- 03ガイド式は6段階で進行
- 04イベント、コマンド、アクターを整理
- 05境界づけられたコンテキストと論点を特定
- 06構造化されたイベントカタログを作成
活用シーン
- 01新規プロジェクトのドメインイベント発見
- 02プロセス内のコマンドとアクターの整理
- 03コードベースの境界づけられたコンテキスト分析
- 04チームワークショップの準備やシミュレーション
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ melodic-software/ claude-code-plugins --skill event-stormingインストール後、Claude Code で/event-stormingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/bounded-context-discovery.mdpersona-prompts.mdsticky-note-types.mdworkshop-facilitation.mdreferences/templates/event-storm-output.md詳細
イベントストーミング
インタラクティブなワークショップ設定
AskUserQuestion を使用して、イベントストーミングのセッションを設定します。
# Question 1: Workshop Mode (MCP: Event Storming methodology)
question: "Which event storming mode do you need?"
header: "Mode"
options:
- label: "Full Simulation (Recommended)"
description: "All 5 personas debate in parallel, 6 phases (~15K tokens)"
- label: "Quick"
description: "Single analysis pass, no personas (~3K tokens)"
- label: "Guided"
description: "Interactive with user, personas on-demand"
- label: "Codebase Analysis"
description: "Discover events from existing code structure"
# Question 2: Domain Scope (MCP: DDD bounded context patterns)
question: "How complex is the domain you're exploring?"
header: "Scope"
options:
- label: "Single Bounded Context"
description: "One domain area, focused discovery"
- label: "Multiple Contexts"
description: "Identify 2-5 bounded context boundaries"
- label: "Enterprise Domain"
description: "Comprehensive cross-domain mapping"
- label: "Unknown"
description: "Help me determine scope first"
回答をもとに、適切なワークショップモードを選択し、分析の深さを調整します。
このスキルを使う場面
次のような場合に、このスキルを使用します。
- ビジネスプロセスのドメインイベントを発見する
- システム内のコマンドとアクターを特定する
- 境界づけられたコンテキストの境界を見つける
- 複数のステークホルダーが参加するイベントストーミングワークショップをシミュレーションする
- 実際のイベントストーミングのファシリテーションに備える
- 既存のコードベースを分析してドメインイベントを特定する
キーワード: イベントストーミング、ドメインイベント、コマンド、アクター、境界づけられたコンテキスト、集約、ドメイン発見、ワークショップのシミュレーション、複数のペルソナ、DDD
イベントストーミングとは?
イベントストーミングは、ドメインを共同で発見するためのワークショップ形式の手法です。参加者は付箋を使って、次の要素をマッピングします。
- イベント(オレンジ)- ドメインで起きること
- コマンド(青)- イベントを引き起こすアクション
- アクター(黄)- コマンドを発行する人
- 集約(黄)- コマンドを処理するビジネスエンティティ
- 読み取りモデル(緑)- 意思決定に必要な情報
- ポリシー(紫)- ビジネスルールとリアクション
- 外部システム(ピンク)- 外部との連携
- ホットスポット(赤/ピンク)- 混乱や対立がある領域
ワークショップモード
このスキルでは、次の3つのモードを利用できます。
| モード | 説明 | トークンコスト | 使用例 |
|---|---|---|---|
full-simulation | 5つのペルソナすべてが並行して議論する、6つのフェーズ | 約15Kトークン | 包括的な発見 |
quick | ペルソナを使わない、単一の分析パス | 約3Kトークン | ドメインの概要をすばやく把握 |
guided | ユーザーとの対話形式で進め、必要に応じてペルソナを使用 | 可変 | ユーザーが主導権を持ちたい場合 |
モード選択ガイド
full-simulation を使う場合:
- 新規プロジェクトや大規模な機能を開始するとき
- ドメインを包括的に発見する必要があるとき
- 複数の視点が役立つとき
- 徹底性が時間よりも重要なとき
quick を使う場合:
- ドメインの概要をすばやく把握したいとき
- トークン予算が限られているとき
- ドメインが比較的単純なとき
- 後でさらに詳細化する予定があるとき
guided を使う場合:
- 自分でプロセスを主導したいとき
- 具体的な質問があるとき
- 特定のペルソナを呼び出したいとき
- 対話的な探索を望むとき
複数ペルソナによるシミュレーション
full-simulation モードでは、異なるステークホルダーの視点をシミュレーションするために、専門分野の異なる5つのエージェントを使用します。
| ペルソナエージェント | 役割 | 視点 | 貢献内容 |
|---|---|---|---|
domain-expert | 分野の専門家 | 深いビジネス知識 | ドメインイベント、ビジネスルール、エッジケース |
developer-persona | 技術的な実装 | システム上の制約 | 技術イベント、連携ポイント |
business-analyst | プロセスと要件 | プロセスフロー | コマンド、アクター、受け入れ基準 |
product-owner | プロダクトビジョン | ユーザー価値 | 優先順位、MVP の範囲、ユーザーストーリー |
devils-advocate | 批判的な検討役 | 問題点の特定 | ホットスポット、不足しているシナリオ、矛盾 |
6つのワークショップフェーズ(フルシミュレーション)
フェーズ1:自由な探索
すべてのペルソナが独立してイベントをブレインストーミングします。制約も順序付けもありません。
オーケストレーション:
Launch 5 parallel Task agents:
- Task(event-storming-persona domain-expert, "Identify all domain events for: {domain}")
- Task(event-storming-persona developer, "Identify technical events for: {domain}")
- Task(event-storming-persona business-analyst, "Identify commands and actors for: {domain}")
- Task(event-storming-persona product-owner, "Prioritize and identify MVP scope for: {domain}")
- Task(event-storming-persona devils-advocate, "Challenge and identify gaps for: {domain}")
フェーズ2:タイムラインの順序付け
イベントを統合し、時系列順に並べます。タイムラインを作成します。
フェーズ3:コマンドの発見
各イベントを引き起こすものを特定します。コマンドとイベントを対応付けます。
フェーズ4:アクターの特定
各コマンドを誰が発行するかを対応付けます。役割とシステムを定義します。
フェーズ5:境界づけられたコンテキストの発見
関連するイベントとコマンドをグループ化します。自然な境界を特定します。
フェーズ6:ホットスポットの解決
批判的な検討役が課題を提起します。対立や不足を解消します。
各フェーズの詳細なガイダンス: references/workshop-facilitation.md を参照してください。
付箋の色の規則
| 色 | 表すもの | 例 |
|---|---|---|
| 🟧 オレンジ | ドメインイベント | 「注文が確定した」「支払いを受け取った」 |
| 🟦 青 | コマンド | 「注文する」「支払いを処理する」 |
| 🟨 黄色(小) | アクター | 「顧客」「管理者」「システム」 |
| 🟨 黄色(大) | 集約 | 「注文」「顧客」「商品」 |
| 🟩 緑 | 読み取りモデル | 「注文概要」「商品カタログ」 |
| 🟪 紫 | ポリシー | 「注文が確定したら、在庫を確保する」 |
| 🟫 ピンク | 外部システム | 「決済ゲートウェイ」「メールサービス」 |
| ❗ 赤/ピンク | ホットスポット | 混乱や対立が生じている領域 |
詳細な規則: references/sticky-note-types.md を参照してください。
オーケストレーションパターン
Claude Code のサブエージェントはほかのサブエージェントを起動できないため、メインの会話でオーケストレーションを行います。
Main Conversation
↓
Invokes event-storming skill
↓
Skill guides parallel Task tool calls:
├── Task(event-storming-persona domain-expert, prompt)
├── Task(event-storming-persona developer, prompt)
├── Task(event-storming-persona business-analyst, prompt)
├── Task(event-storming-persona product-owner, prompt)
└── Task(event-storming-persona devils-advocate, prompt)
↓
Skill synthesizes results with provenance tracking
↓
Outputs event catalog with [persona] attribution
クイックスタート
フルシミュレーションモード
I want to run a full event storming simulation for an e-commerce order management system.
Please:
1. Launch all 5 persona agents in parallel
2. Have them analyze the domain
3. Synthesize their findings
4. Identify bounded contexts
5. Resolve any hot spots
クイックモード
Give me a quick event storm overview for a subscription billing system.
Focus on the core happy path events.
ガイド付きモード
Let's do a guided event storming session for a hospital appointment system.
Start with the patient booking journey and I'll guide from there.
出力形式
イベントストーミングのセッションでは、構造化されたイベントカタログが作成されます。
# Event Storm: [Domain Name]
## Event Catalog
### [Bounded Context Name]
**Events:**
- [Event Name] [Domain Expert] - [Description]
- [Event Name] [Developer] - [Description]
**Commands:**
- [Command Name] → [Event Name] [Business Analyst]
**Actors:**
- [Actor Name]: [Commands they can issue]
**Aggregates:**
- [Aggregate Name]: [Events it produces]
**Policies:**
- [Policy Name]: [Trigger] → [Action]
## Bounded Contexts Identified
1. [Context Name]
- Core Domain / Supporting / Generic
- [Events in this context]
## Hot Spots
- [Issue] - [Resolution or TODO]
完全なテンプレート: references/templates/event-storm-output.md を参照してください。
ほかのスキルとの連携
イベントストーミングは、以下と連携します。
- domain-storytelling - ストーリーをイベントの発見に活用します
- modular-architecture - 境界づけられたコンテキストをモジュールにします
- fitness-functions - モジュールの分離テスト
- adr-management - 境界づけられたコンテキストに関する決定を文書化します
ワークフロー:
Domain Storytelling → Event Storming → Modular Architecture
(understand "what") (design "how") (implement "where")
ベストプラクティス
- イベントから始める - イベントは事実ですが、コマンドには議論の余地があります
- 過去形を使う - 「注文する」ではなく「注文が確定した」
- 境界を探る - イベントはモジュールの境界を見つける手がかりになります
- 混沌を受け入れる - 最初のブレインストーミングは、まとまりのない状態で構いません
- 情報源を記録する - それぞれの知見がどの視点から得られたかを把握します
- ホットスポットを解消する - 対立を未解決のままにしないでください
参考資料
references/workshop-facilitation.md- フェーズのオーケストレーションと所要時間references/persona-prompts.md- 各ペルソナ向けのプロンプトテンプレートreferences/sticky-note-types.md- 色の規則と使い方references/bounded-context-discovery.md- コンテキストを特定するパターンreferences/templates/event-storm-output.md- 情報源を含む出力形式
ユーザー向けインターフェース
ユーザーから直接呼び出された場合、このスキルは AI によるイベントストーミングのワークショップをシミュレーションします。
実行ワークフロー
- 引数を解析する - ドメインの説明とモードを抽出します。説明が指定されていない場合は、イベントストーミングを行うドメインをユーザーに尋ねます。デフォルトのモードは
guidedです。 - モードに応じて実行する:
- Full:5 つのペルソナエージェント(domain-expert、developer、business-analyst、product-owner、devils-advocate)を並列で起動します。情報源を追跡しながら出力を統合し、イベントカタログをまとめ、ホットスポットを特定して、境界づけられたコンテキスト候補ごとにグループ化します。
- Quick:ドメインイベント、コマンド、アクター、および境界づけられたコンテキストの境界候補を特定する単一パスの分析を行います。
- Guided:6 フェーズの対話型ワークショップ(混沌とした探索、タイムラインの整理、コマンドの発見、アクターの特定、境界づけられたコンテキストの発見、ホットスポットの解消)を実施します。
- 出力を生成する - ドメインイベント、コマンド、境界づけられたコンテキスト候補、およびホットスポットを含むイベントカタログを作成します。
- 結果を保存する -
docs/event-storming/[domain-name]-[date].md(またはカスタムの--dir)に保存します。 - 次のステップを提案する - 不明確なプロセスにはドメインストーリーテリング、統合戦略にはコンテキストマッピング、重要な決定には ADR を推奨します。
バージョン履歴
- v1.0.0(2025-12-22):初回リリース
- 5 つのエージェントによる複数ペルソナのシミュレーション
- 3 つのワークショップモード(full、quick、guided)
- 6 フェーズのワークショップ構成
- 知見の情報源の追跡
- domain-storytelling および modular-architecture との連携
最終更新
日付: 2025-12-22 モデル: claude-opus-4-5-20251101