イベントストーミング
ドメインエキスパートと開発者が協働でビジネスプロセスを可視化するワークショップ手法
DDD設計パターン
イベントストーミングとは
イベントストーミング (Event Storming) は、Alberto Brandolini が 2013 年に考案したワークショップ手法で、ドメインエキスパートと開発者が付箋を使ってビジネスプロセスをドメインイベントとして可視化する。DDD の境界づけられたコンテキストの発見や、マイクロサービスの分割境界の特定に使われる。
なぜイベントストーミングか
従来の要件定義は、ドキュメントを書く人と読む人が分離し、認識のズレが生じやすい。イベントストーミングは全員が同じ壁の前に立ち、リアルタイムで議論しながらモデルを構築するため、暗黙知が表出しやすい。
付箋の色と意味
| 色 | 要素 | 例 |
|---|---|---|
| 🟧 オレンジ | ドメインイベント (過去形) | 「注文が確定された」 |
| 🟦 ブルー | コマンド (アクション) | 「注文を確定する」 |
| 🟨 イエロー | アクター (人/システム) | 「顧客」「決済システム」 |
| 🟪 パープル | ポリシー (ルール) | 「在庫がある場合のみ」 |
| 🟩 グリーン | リードモデル (参照データ) | 「在庫一覧」 |
| 🟥 レッド | ホットスポット (課題・疑問) | 「ここの仕様が不明」 |
| 🩷 ピンク | 外部システム | 「決済ゲートウェイ」 |
ワークショップの流れ
Phase 1: ビッグピクチャー (2〜4時間)
→ ドメインイベントを時系列に並べる
→ ホットスポット (不明点) を洗い出す
Phase 2: プロセスモデリング (2〜4時間)
→ コマンド、アクター、ポリシーを追加
→ イベント間の因果関係を明確化
Phase 3: ソフトウェアモデリング (2〜4時間)
→ 集約 (Aggregate) の境界を特定
→ 境界づけられたコンテキストを発見
境界づけられたコンテキストの発見
イベントストーミングで並べたイベントを眺めると、「注文」「在庫」「決済」「配送」のようにイベントのクラスターが見えてくる。このクラスターが境界づけられたコンテキストの候補であり、マイクロサービスの分割境界になる。
実施のコツ
- 広い壁とロール紙を用意する。オンラインなら Miro や FigJam を使う
- ドメインエキスパート (業務を知っている人) の参加が必須。開発者だけでは業務の暗黙知が出てこない
- 最初は「正しさ」を求めず、とにかくイベントを出す。整理は後から
- ホットスポット (赤い付箋) を恐れない。不明点の可視化こそがイベントストーミングの価値
DDD の関連書籍も参考になる。