いつ読むか?

  • ES + CQRS の具体的な設計・実装例を見たいとき
  • DDD をイベントソーシングで実践したいとき

読書メモ

要点

集約の設計で迷ったら、イベント(起きた事実)から逆算して考える。

手順

  1. イベントを列挙(「出勤した」「退勤した」など)
  2. イベントからコマンドを導出
  3. 用語の不整合を修正して統一
  4. コマンドを受けてイベントを生成する集約を定義
  5. 状態更新に必要な属性のみに絞る

ポイント

  • 集約は状態更新に必要な属性しか持たない
  • 状態は計算で導出できるなら属性として持たない(例:出退勤時間があれば勤務状態は計算可能)
  • 用語の不統一は設計の問題を示唆する

実践タイミング

  • 集約の責務や属性で迷ったとき
  • イベントソーシングを検討するとき