【ドメインイベント】

ドメインイベント とは?

💡 ビジネスの世界で起きた『大事件』を、システムにちゃんと伝える伝書鳩
📌 このページのポイント
ドメインイベントの流れ 注文集約 状態変化を検知 order.place() OrderPlaced ドメインイベント orderId: "ORD-001" occurredAt: 2026-03-25 イベントバス / ブローカー 在庫引当ハンドラー 在庫を減らす メール通知ハンドラー 確認メールを送信 分析ハンドラー 売上データを記録 命名規則 過去形で記述する 例: Placed, Completed
ドメインイベントのイメージ
ひよこ ひよこ

ドメインイベントって普通のイベントと何が違うの?

ペンギン先生 ペンギン先生

普通のプログラミングのイベント(ボタンクリックなど)はUIの話だけど、ドメインイベントは「注文が確定した」「会員がランクアップした」みたいにビジネスの言葉で表現されるイベントなんだよ

ひよこ ひよこ

どうやって名前を付けるの?

ペンギン先生 ペンギン先生

過去形で命名するのがお約束だよ。「注文が確定した」ならOrderPlaced、「支払いが完了した」ならPaymentCompleted。すでに起きた事実だから過去形なんだね

ひよこ ひよこ

イベントを作ったら、誰がそれを受け取るの?

ペンギン先生 ペンギン先生

イベントハンドラーやサブスクライバーと呼ばれるコンポーネントだよ。たとえばOrderPlacedイベントを受け取って、在庫を減らしたり、確認メールを送ったりする。発行側と受信側が疎結合になるのが大きなメリットだね

ひよこ ひよこ

マイクロサービスだと、別のサービスにもイベントを送れるの?

ペンギン先生 ペンギン先生

もちろん!同じプロセス内ならメモリ上のイベントバスで、別サービスならKafkaやRabbitMQなどのメッセージブローカーを通じて配信するよ。Outboxパターンと組み合わせれば、DBの整合性を保ちながら確実に外部に通知できるんだ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ドメインイベント」って出てきたら「業務上の重要な出来事をオブジェクトにしたもの」と思えればだいたいOK!
📖 おまけ:英語の意味
「Domain Event」 = ドメイン(業務領域)のイベント(出来事)
💬 Eric Evansが提唱したDDDの戦術パターンの一つ。ドメインの中で「何かが起きた」という事実をファーストクラスのオブジェクトとして扱うんだよ
← 用語集にもどる