読んだ理由
積読してあった本の消化のためと、最近設計について考えていた時期で、課題意識を持つタイミングが重なっていたこともあった。
本の感想
非常に読みやすい本だと感じた。
以前「エリック・エヴァンスのドメイン駆動設計: ソフトウェアの核心にある複雑さに立ち向かう」や「 実践ドメイン駆動設計」を読んでいたおかげもあるかもしれないが、具体的かつ現代的なコード例を使って概念を説明しているため、理解しやすかった。 特に、例として実装するアプリケーションが、ユーザー登録やTwitterのコミュニティ機能といった、Webアプリケーション開発者とって身近なものだったことも大きかった。
また、ドメイン駆動設計について説明する構成も秀逸だと思った。例えば「まずうまくいかない事例を示し、それを解決するための新しい概念を紹介する」といった流れが非常にスムーズだった。
実際読んでいると、トランザクションやパフォーマンスに関する疑問が浮んだときに、直後の章でそれを解決する内容が紹介されたことがあり、巧い構成だと感じた。
一方、ドメインモデルを作り上げていく部分については少し物足りなさを感じた。 「エリック・エヴァンスのドメイン駆動設計」ではこの本の章で言う Chapter 15 しか取り上げていないと言ってもいいくらい書いてあったので、この本だけでは単なるパターン集として読まれてしまう可能性もあると感じた。
タイトルにも「入門」とあるように、この本でドメイン駆動設計についての雰囲気やコードでどう表現するかを掴んだ後に、「エリック・エヴァンスのドメイン駆動設計」などの別の書籍や資料、実践に繋げていくのがよいのだろうと思った。
自分もまた読み返したい気持ちになった。
この後やりたいこと
普段触っている言語で実践し、理解を深めたいと思った。
今一つ納得できていない部分は、レポジトリの辺りで出てくる ImMemoryHoge について。 抽象に依存させるのはわかるが、InMemoryHogeRepository は大抵の場合不要なんじゃないかと思うが、どうなんだろうか。 実装の先がマイクロサービスや SaaS など外部 API にリクエストを送るものだと話が違ってくるかもしれないが、ローカルでも動かせるDBを扱っている限りは別にいらないだろうと思っている。 テストもテストダブルを作るライブラリを使っておけばいいから、ImMemoryHoge はいらないと思っているけどどうなんだろうな~。
という辺りを実際に手を動かして擦り合せていきたい。
最後に
読んで一番よかったことは、ドメインモデルを作り上げる重要性を思い出せたこと。 最近はテクニカルなことや他の課題に目が向きがちで、設計について疎かになりがちだったと思う。 今回の読書を通して、モデリングの重要さを再認識できるよいきっかけになったのが一番の収穫だった。