吉祥寺pmで発表された@kawasimaさんのスライドを見た
「古典」ドメインモデリングパターンとは以下の2冊で書かれているドメインモデルパターンのことを指している
- Patterns of Enterprise Application Architecture
- Domain-Driven Design - Tackling Complexity in the Heart of Software
これまでDDDの指南書としてお手本になっていた本たちであるが、当時の解釈を現代の導入しようとしてもアーキテクチャの問題がなかなか解決できない
特に、解釈が曖昧な点がいくつかあり、それが混乱を招いているので、現代に合うように整理して手法もアップデートしようというもの
ドメインモデリングは本質的な複雑さを解きほぐすもの
ドメインモデリングで何に対処したいかというと「複雑性」である
ただ、複雑さの分類には大きく分けて2つある
- 本質的な複雑さ
- 偶有的な複雑さ
偶有的な複雑さは例えば、どんな検索も一瞬で返すマシンや無限メモリ空間など、現代の技術ではそうするしかない理想の代替手段によって生まれる複雑さである
ただこれは、技術の進歩によって明日には解決できているものかもしれないものである
一方、本質的な複雑さは適切に対処しなければ「Unkown Unkowns(知らないことを知らない)」や「高い認知負荷」に影響をもたらしてしまうもの
ドメインモデリングは本質的な複雑さが「Unkown Unkowns(知らないことを知らない)」や「高い認知負荷」にならないようにする解きほぐすものである
どうやって解きほぐすのか
スライドで説明されていることをざっくりまとめると、
- ビジネスドメインからコードにいくまでのプロセスは、本質的複雑さにどう対処するかを考える「モデリング」と偶有的複雑さにどう対処するかを考える「エンコーディング」に切り分けて考える

- 「モデリング」を洗練するための基本手順は以下の二点
- スタンプ結合を解消する
- 振る舞いの名前に着目し、振る舞いを分割する
この「モデリング」と「エンコーディング」に切り分けるのは、言われてみれば確かにと思った
ビジネスドメインをいきなりコードの戦術パターンに当て嵌めがちだが、その前段としてちゃんとモデリングすることが重要であると感じた