Web+DB Press vol.113

ドメイン駆動設計

  • エリック・エヴァンスが提唱
  • 仕様を探すのは難しい
    • 記憶力には限界がある
    • UserというEntityはあくまでユーザーが持つ情報しか持ってない
      • 仕様ではない
    • ドキュメントは常々信用ができない
    • 登録で最大文字列をチェックしていても、更新でもチェックしていることもある(気付けるか?
    • 実際は2箇所でも(一応)全てをチェックして2箇所であると判断しないといけない
  • そのためにはコードの中に気づけるポイントをいれること
    • 例えばユーザーオブジェクトにIDとNameがあったとき、Nameだけ変更できるメソッドを用意するとか
    • UserのNameをただのstringにせず、UserNameというクラスで定義してしまうなど
  • ビジネスの変更の速度に合わせる
    • 究極的にはどんな変更でも一箇所だけにする
  • ドメイン = 領域
  • ドメインとは何かではなく、何がドメイン内に含まれるかを考えるべき
  • ソフトウェア上の表現として十分かつそれを抽出する過程をモデリング
    • 成果物がモデル
    • ドメインのうち重要な知識を抽出した結果できあがる概念をドメインモデルと呼ぶ