本日の作業
本日はもくもく会180回目。
✅ ドメインイベントについて学習する
✅ ドメインイベントとユースケースの違い
✅ ドメインイベントの抽出方法
✅ サービスブループリントとイベントストーミングの違いと組み合わせ
🚴 zennにまとめる
🚴 分報に関する設計・実装
🚴 Model・Repository実装
UseCase Hooksと結合実装
Domain EventとPrismaの実装
ドメインイベントについての学習と考察
zennにまとめ中。要点だけ書く。
サービスブループリントについておさらい
デザイン文脈のフロントとバックステージも含めたフローの可視化できるメソッド。
イベントストーミングについて学ぶ
イベントストーミングには7要素あり、アクター・コマンド・集約・ドメインイベント・ポリシー・リードモデル(ビュー)で業務におけるシステムフローを可視化するメソッド。
ドメインイベントは過去形で記述できるビジネスプロセスやビジネスにおけるシステムのプロセスのことで、起こった出来事なので状態を伴う。
例えば、図書館を例にすると「本を借りた」「本を返した」「本を探した」とか?
本を借りれば、本は「貸出中」という状態に変化するし、返したとあれば「貸出可」の状態になる。
本を探したもドメインイベントなのか微妙な雰囲気。探した結果本が見つかったかどうかが状態なのか?
イベントストーミングでは、アクターのインタラクション≒コマンドがトリガーになり関連する集約でデータをビジネスルールのもとに検証し発生するものがドメインイベントでさらにそのイベント後に一定の条件下でコマンドを呼ぶ場合のその条件がポリシー。それらの結果がリードモデルを通してアクターに表示される・返される。
これに沿って実装するのに適しているのがCQRS。
DMMFも基本的にはイベントストーミングを用いて設計されていく。
集約にはエンティティ・値オブジェクトなどで構成されたビジネスルールをカプセル化したもの。OOP型のDDDと異なりそれぞれ純粋関数(イミュータブルでありかつ副作用がなく同じ入力に対して同じ結果を必ず返す関数)で構成される。
イベントストーミングはサービスブループリントのフロントステージからバックステージ(サポートプロセス含む)のシステムやアプリケーションの部分を詳細に記載するところで組み合わせられるのではないか?と思い、例題を現在作図中。
そのほか、メモ
もくもく会後のランチは前々から知っていたが行ったことなかった小町のルーフトップに行くと思いきやその下にあるB tapsさんへ。意外と店が広いし観光客で騒がしいのかと思ったら時間帯の問題なのか静かだった。ランチに牛すじビールカレーを食べました。