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) を整理する
- •イベント/リソースの区別が曖昧なら判定ルールを適用する
出力テンプレート
code
## Event Storming の前提モデル ### イベント - ... ### コマンド - ... ### 集約 - ... ### リードモデル - ...