| name | event-storming |
| description | Event Stormingでイベント(動詞の過去形)を中心に、コマンド・集約・リードモデルを抽出/命名/レビューする作業に使う |
| metadata | [object Object] |
Event Storming
使う場面
- 要件や仕様にイベントの説明が不足している
- イベント名の命名やイベント/リソースの区別に迷う
- Event Storming成果物(イベント/コマンド/集約/リードモデル)を整理・追記したい
ルール(要点)
- イベントはドメインの重要な出来事で、動詞の過去形で表現する
- イベントはビジネスの重要な振る舞いを表すため、イベント中心に整理する
- 原則として 1コマンドに対して1イベント とし、1コマンドで複数イベントを生成しない
- コマンド名の動詞とイベント名の動詞は対応させる(例:
AddCartItem→CartItemAdded) - 動詞が異なる場合は別イベントとみなし、混同しない(例:
AppendCartItemにCartItemAddedを割り当てない) - 関係の表現は「R(, )」で整理する
詳細は references/event-storming-notes.md を参照する。
手順(簡潔)
- 重要な出来事を列挙し、イベント名を過去形で確定する
- 各イベントに対応するコマンドを逆算して決める
- イベントを受け取る集約を決め、境界を調整する
- クエリで必要なリードモデルを定義する
- R(Event, Resource) / R(Event, Event) / R(Resource, Resource) を整理する
- イベント/リソースの区別が曖昧なら判定ルールを適用する
出力テンプレート
## Event Storming の前提モデル
### イベント
- ...
### コマンド
- ...
### 集約
- ...
### リードモデル
- ...