ドメイン駆動設計

というか今のところの雑で感覚的な理解をメモ

そのソフトウェアを使って行われる活動の特殊性を見つけに行く。
この特殊性はその活動の存続理由であるような重要なもの。
その活動ならではと言えるようなもの。

この特殊性を煮詰め強調する形でアーキテクチャや、モデルに投影する。

そしてそれをもっとミクロな部分にも適用していく。
例えば汎用的な標準型であるBigDecimalをラップしたそのドメイン固有の数値型を宣言する。
その型にBigDecimalにはないそのドメインならではの特殊性を盛り込んで行く。
さらに汎用的なコレクション型をラップしたそのドメイン固有のコレクション型を宣言し、その特殊性を盛り込む。
そのドメイン複数のコンテキストがあるならコンテキストごとの固有型を宣言しそのコンテキストの特殊性を盛り込む。

そうして出来上がった個々の型を、良質なAPIとして機能させることで ビジネスとの乖離を防ぎつつ開発を加速させる。