Ddd_In_Rails_Way

RailsでDDDを実現する

前提

DDD とは

Rails(主にAR) と DDD は相性が悪い

  • Active Record モデルをドメインモデルとして扱う問題点
    • テストしづらい
      • 純粋なドメインロジックのテストがしたいだけなのに、DBの前準備が必要
    • Fat Model
      • インフラ層のロジックが入り込む
    • ビジネスロジックがインフラ都合に引っ張られがち
      • 本来ドメインの変更とテーブルの変更は連動しないはず
      • テーブル変更が全てのドメインに影響する

参考

ActiveRecord依存

事例

どこまでDDDに則るかは濃淡がある。

Rails Way は破壊しない方針

  • DDDに "寄り道する" という考え方
  • ActiveRecord でデータをやりとりする
  • 紳士協定でARメソッドは限定的に呼び出す
  • 少しだけ実装が増える
    • 以下が新登場
    • ドメインモデル

Railsにおけるドメイン駆動設計の実践

参考

Rails Way 逸脱 (DDD重視)

architecture_of_ddd

比較検討

方針実装コスト(量)(ドメイン)凝集度テストしやすさ変更コスト
Rails
Rails Way + DDD寄り道
脱法Rails