ドメイン駆動設計 モデリング/実装ガイド を読んだので、学んだことや感想を書こうと思います。
新しく学んだこと
- モデルを継続的に改善すること
- モデルの図とコードを一致させることの重要性を知りました
- 本書では、コードを改善する前にモデルを改善し、それをコードに反映することが推奨されています
- ユースケースはシングルアクション(publicメソッド1つ)にするのがよい
- いつもコントローラーと同じようにまとめていましたが、単一責任の原則を考えると分けたほうがいいなと気づきました
- 「ooについてのユースケース」だと範囲が広すぎるためです
- 1つにまとめるとテストが肥大化するため、その対策にもなります
- ドメイン層に定義する例外とユースケース層で定義する例外がある
- いつもドメイン層で定義してユースケースでもそれを使っていましたが、ユースケース固有のものはユースケース層で定義したほうがいいのかなと思いました
これから調べたいこと
- 「モデリングから劇的な利益を得られたプロジェクトから、成功するパターンを抽出します」(DDD Reference)という記述について
- 統計的な考え方がいいなと思ったので、この成功するパターンとは何なのかが知りたいと思いました
- モデリングをどのように行い、整理したことをどのような形で残すか
- エヴァンス本ではどういう実装パターンがおすすめされているのか
- オニオンアーキテクチャが最小構成だと思っていたが、エヴァンス本が2003年で、オニオンアーキテクチャが2008年と書かれていたため
感想
ドメイン駆動設計の、基本的な考え方と実装パターンの両方が説明されていてよかったです。成瀬さんのドメイン駆動設計入門は実装パターンの解説なので、最初はこちらの本を読んで全体像を掴むのがいいのかなと思いました。
ドメイン駆動設計についての自分の認識がどれくらい正しいのか分からなかったので、「この認識は合っている。この認識はちょっとずれている。」という感じで確認できてよかったです。
モデルの重要性についての理解が足りない気がしているので、引き続き仕事で実践しつつ、詳しい本を読んだりOSSのコードを読んだりしてみようと思います。オライリーのサブスクでDomain Modeling Made Functionalをちょっと見てみたらすごく良かったので、まずはそれを読み進めようと思います。