イベントストーミングは協働的にドメインのモデリングをしていく手法です。ドメイン駆動設計の戦略的設計フェーズのドメインモデリングで使われることが多いです。
今回は感触を掴むため、ドメイン知識のない開発者が 1 人で実施してみます。
Miro
やFigma
で描かれることが多いようです。
Miro
のテンプレートは次にあります。
https://miro.com/miroverse/event-storming/
Figma のテンプレートは見つからなかったので、真似して作成しておきました。
![EventStorming-Template](https://private-user-images.githubusercontent.com/49807271/302034087-11b17698-f715-4d7f-9585-f09a0eacb54d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyMDEyNTksIm5iZiI6MTczOTIwMDk1OSwicGF0aCI6Ii80OTgwNzI3MS8zMDIwMzQwODctMTFiMTc2OTgtZjcxNS00ZDdmLTk1ODUtZjA5YTBlYWNiNTRkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEwVDE1MjIzOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTExOTY2N2NkYjc2MjY3NDgxYzE0YzZmOWU2M2ViYjc2OTQ0NTg1YjE4ZDRmMzkxODMwYmQ2OGJkNTdkNTk2NjImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.udbNgz--kSQbLK5kHdAO6CGF3F4IVAmQOyHQkK-EZII)
[手順]
-
ステップ 1:ドメイン イベントを収集する - それらを検出する
-
ステップ 2:ドメイン イベントを調整する - 順番に配置する
-
ステップ 3:原因の追跡 - より広範なエコシステムをモデル化する
-
ステップ 4:再並べ替えと結果 - イベントを分類し、境界付きコンテキストを構築する
今回はソフトウェア製品の配布とライセンス管理を行うシステムを検討してみました。
ドメイン知識がないので、コンテキストの分割方法はうまくいっていない気がします。
通知は一つのコンテキスト(メール配信システム等)にまとめた方が良いと考えています。
最初から複雑なものにチャレンジしてしまったかもしれません。
後、集約を誤解していたので、集約部分の見直しが必要です。
※ 集約はロジックを複数のクラスの組み合わせで表現する設計パターンです
![LicenseManagerイベントストーミング (1)](https://private-user-images.githubusercontent.com/49807271/302036040-a4b76921-4654-4619-83f1-41ce31239746.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyMDEyNTksIm5iZiI6MTczOTIwMDk1OSwicGF0aCI6Ii80OTgwNzI3MS8zMDIwMzYwNDAtYTRiNzY5MjEtNDY1NC00NjE5LTgzZjEtNDFjZTMxMjM5NzQ2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEwVDE1MjIzOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTUyOTQ2MzJjZDZjNmE1YTQ3NzI2MDFlYjA0ODAzODAxN2RmMTY1ZjFkN2QwMDBkYzRkZGFjZWY4YTdmYjk4ZjAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.2gDxhGyjnEbV68_3DqM7-0Xp4BKdCgYkzRowVWcjj9I)
※ イベントストーミングの後で私の作りたいものがすでにあるのを見つけた
滅茶苦茶作るの大変そう
https://www.ntt.com/business/services/application/crm-dm/subsphere.html