イベントストーミングとは
イベントストーミングは、システム内で発生する重要な出来事(イベント)を中心に、業務フローやシステムの動作を視覚的にモデル化する手法です。特にドメイン駆動設計(DDD)の文脈で活用されることが多いですが、単なる理論にとどまらず、関係者全員が集まり議論し、共通認識を深めるワークショップ形式で行うことが重要です
ワークショップでは、ドメインエキスパートや開発者など、さまざまな視点を持つ参加者が意見を出し合い、業務の全体像を俯瞰します。このプロセスを通じて、システム設計の方向性を共有し、実装に向けた具体的なインプットを得ることができます。
参考文献: EventStorming Book
https://www.eventstorming.com/book/
イベントストーミングを実施した背景/目的
- 背景:
- カート決済部では、モノリスからマイクロサービスへの移行を進めています。しかし、DDDの理解が十分でないメンバーもいることに加え、プロジェクト特有のドメイン知識を十分に共有できていない課題がありました。このため、全員でDDDとドメイン知識の双方を深める取り組みが必要でした。
- 目的:
- 業務の全体像を把握し、チーム間で認識を統一する。
- 新規参入メンバーがドメイン知識をスムーズに吸収できる環境を作る。
参加者
- 新規プロジェクト参入メンバー:5名
- ドメインエキスパート:4名
進め方
今回は「成瀬式」をさらに簡略化した方式でイベントストーミングを実施しました。
対面形式ではなく、オンラインツール「miro」を使用して実施しました。具体的な流れについては以下の動画で説明されています。
1.ブレスト
- 思いつく限りのドメインイベントをオレンジの付箋に書いていく
- 重複しても問題なく、まずは記載
2.イベントをタイムラインに並べる
- タイムラインに並べる
- 同じイベントを重ねる(miroで実施の場合は重複削除でも可)
- 不足しているイベントがあれば付箋を追加する
3.カラーパズルをする
黄:アクター
青:コマンド
オレンジ:イベント
ピンク:外部システム
実際の成果物は以下の通りです。システム規模が大きいため、かなりのボリュームとなりました。
4.コンテキストで分ける
- 組織やアーキテクトによってコンテキストを分ける
イベントストーミングを実施してみて
Aさん
DDD:基本的なことは理解している
イベントストーミングを実施するにあたり、グループ分けの時点で考慮されていて、ドメインエキスパートを中心にそれぞれのメンバーが議論をしながら進めることができました。
業務知識の浅いメンバーでも理解できるように情報を整理したことで、全員が議論に参加できたと思います。
システムの規模が大きいため、細部まで整理することはできませんでしたが、参加者全員の認識を合わせる粒度で実施できたことが良かったと思います。
Bさん
DDD:入門レベル
イベントストーミングに参加する前はドメイン知識が不足しており、業務フローやシステム設計に関する理解が十分ではありませんでした。
しかし、ワークショップを通じて、実際の業務イベントを可視化しながら議論するプロセスにより、ドメイン知識を深めることができました。
また、チーム全体の知識の共有にも効果的だと感じました。
まとめ
- よかった点
- ワークショップ形式でドメイン知識を学べる
- 自然とユビキタス言語を策定できる
- 改善点
- オンライン開催の難しさ: 発言頻度に偏りが出やすく、意見のバランスを保つ工夫が必要。
- システム規模の影響: 全ステップを詳細に行うには時間が不足する。