⚙️
DDD 2026年4月4日

ドメインサービスはステートレスな操作に限定する

📁 ルール 👁 -- 閲覧

ドメインサービスはステートレスな操作に限定する

ルール

ドメインサービスはステートレスでなければならない。もし状態を持ちたくなったら、それはエンティティとして設計すべきサインである。

また、ドメインサービスを作成する前に「このロジックはどのエンティティ・値オブジェクトが担うべきか?」を必ず問うこと。どうしても収まらない場合にのみドメインサービスとして切り出す。

理由

ドメインサービスが増えすぎると貧血ドメインモデルに回帰する。本来エンティティが持つべきロジックをドメインサービスに置くと:

  • エンティティがデータの入れ物になり、ロジックはサービスに集まる
  • 「このロジックがどこにあるか」がわかりにくくなる
  • ドメインオブジェクト単体でのユニットテストができなくなる

ドメインサービスは「どのエンティティにも属せない、でも明らかにドメインの重要な概念を表している操作」だけを受け持つ。

例外

  • 外部サービス(認証、通知、決済)との統合ポイント
  • 複数の集約ルートをまたぐ計算(集約の設計原則上、単一集約に収められない)
  • ドメインポリシーの検証(複数の集約の状態を参照して判断する)

関連概念

出典

実践ドメイン駆動設計(Vaughn Vernon)第7章