DDD本 「第4章 ドメインを隔離する」を読んで

はじめに

8月くらいからエリック・エヴァンスのドメイン駆動設計(通称:DDD本)の輪読会を主催しています。

ddd-community-jp.connpass.com

毎回多くの参加者の方の気付き・感想・疑問が溜まっていくのですが、自分の学び自体をあまり言語化してないと思い、書いてみます。

なお、ここで書いているのは私の個人的な意見も交えて書いています。

当日の議論メモ

DDD本 4章:ドメインを隔離する - HackMD

ドメイン駆動設計が求めるのは、たった1つの特別なレイヤが存在することだけだ

全体で18ページくらいの章となり、レイヤードアーキテクチャの話が出てきて、「お? DDDにおけるアーキテクチャの話なのかな?」って思ったりしますが、P.72で書かれているこの文が、第4章のコアな気がしました。

ここでエヴァンスさんが言いたいのは、章のタイトルどおり「とにかく、ドメインを隔離すること」。それが実現できれば、どのアプローチでも構わないと明言されています。

一般的な隔離の例としてレイヤードアーキテクチャが出てきていますが、重要度としてはドメイン層 > その他のレイヤ みたいな感じで語られている感じでした(もちろん他のレイヤが大事ではない、というわけではない)

モデル駆動設計のプロセスを正しくあろうとする

第3章で出てきたモデル駆動設計の構成要素について、第2部では図(ナビゲーションマップ)も交えて書かれています。

ドメイン駆動設計のプロセスを回復力のあるものにするためには、開発者は広く知られた基本原則が、モデル駆動設計をどのように支えているかを理解する必要がある -- P.62

ここでいう「回復力」については輪読会中に議論がありましたが、原文だと回復力=resilientみたいです。

元に戻ろうとするといったニュアンスがあるそうなので、

現実には教科書どおりにはならないのでその場では妥協しつつ、妥協したままではなく本筋に戻る、戻ろうとする力学を「回復力 = resilient」と表現しているのかなと思いました。

モデル駆動設計の構成要素の一つとして、隔離するために「レイヤードアーキテクチャ」。

その隔離した中でドメインがちゃんと息づけるように、値オブジェクト・エンティティ・サービスなどのパターンが存在する、という立て付けのようです。

値オブジェクト・エンティティってパターンはよく聞きますが、そういった立て付けも意識しておくと、第5章からの説明も理解がしやすそうだと感じています。

おわりに

「The Domain Layer Is Where the Model Lives」を 「ドメイン層はモデルが息づく場所」と訳していたのは素敵だな、と思った。

第1部で学んだこともいずれ書きたい。