的確なモデルを見つけること
第二部ではドメイン駆動設計の構成要素の紹介が中心であったが、的確なモデルをいかに見つけるかとうのが第三部の中心になります。
”的確なモデル”とは、ドメインについての深い理解をとらえたモデルのこと。
リファクタリングのレベル
「リファクタリング」は、リファクタリングに関するエンジニアなら必ず読むべき一冊ですが、その焦点は、コードを読みやすくしたり、変更を容易にすることなど技術的なところにあります。
ドメイン駆動設計からリファクタリングを捉えると、ドメインについての新たな洞察得るためだったり、コードを通してモデルの表現を明確にするために行うものになります。
リファクタリングを行うことによって、より一層の洞察に満ちたモデルへ向かう際に便利な、変更の単位が作り出されるのだ(第三部序章より)
深いモデルとしなやかな設計
最初に作られるモデルは、表面的で、浅い知識にしか基づいていないのが普通で、プロセスを通して深いモデルが発見されていきます。
深いモデルは、変更が容易な、しなやかな設計によって支えられます。
モデルとコードを繰り返し変更し、その変更が新しい理解を反映していれば、最もよく変更される場所が柔軟になっていき、深いモデルが発見されたときも反映することが容易になります。
モデル駆動設計は、2本の足で立っている。深いモデルにより、表現力豊かな設計ができるようになる。同時に設計が、開発者が実験できるくらい柔軟で、何が起きているかを開発者に示せるくらい明確であれば、モデルを発見するプロセスに対して実際に洞察を与えられる。(第三部序章より)
発見のプロセス
抱えている問題に本当に合った設計を作り出すために、ドメインと最も関連の深い、中心となる概念をとらえるモデルが必要。その探し方、取り込み方を**第9章「暗黙的な概念を明示的にする」**で解説しています。
リファクタリングが難しいとモデルの変更が難しい、しなやかな設計をするための解説が第10章「しなやかな設計」。
深いモデルを発見するためには創造性と試行錯誤が必要だが、使えるパターンがあることも。その解説を**第11章「アナリシスパターン」、第12章「デザインパターン」**で。
最初の**第8章「ブレイクスルー」**では、より深い洞察へ向かうリファクタリングのプロセスがブレイクスルーにつながったプロジェクトの例の紹介です。
ブレイクスルーはなかなか経験できるものではないのですが、ドメイン駆動設計やっててよかったと思える瞬間です。