こんにちは、Nash です。
最近、先輩に DDD の文脈で下記の本をおすすめされたので読んでみました。
ということで、この記事は『現場で役立つシステム設計の原則 〜変更を楽で安全にするオブジェクト指向の実践技法』のレビュー・書評の記事になります。
では、見ていきます。
![]() |
第1章 小さくまとめてわかりやすくする
第2章 場合分けのロジックを整理する
第3章 業務ロジックをわかりやすく整理する
第4章 ドメインモデルの考え方で設計する
第5章 アプリケーション機能を組み立てる
第6章 データベースの設計とドメインオブジェクト
第7章 画面とドメインオブジェクトの設計を連動させる
第8章 アプリケーション間の連携
第9章 オブジェクト指向の開発プロセス
第10章 オブジェクト指向設計の学び方と教え方
この本を読んでみた結果の個人的なおすすめ読者としては下記のような人かと思いました。
ここらへんの理由については、本の概要などを踏まえて記述していきます。
いきなりですが、個人的にはタイトルが本の実態を表していないように感じます(まぁ、出版業界の事情とかがありそうなので仕方ないですが)。
この本の実態の内容は、「OOP + DDD のエッセンスを実際のアプリケーションに落とし込むに至る説明」って感じの本です。
そのため、技術一辺倒ではなくて、実際にアプリケーションに落とし込むための考え方なども出てきます。また、OOP などの解説もあり広めに解説をしているので、DDD についてはコアな観点に絞られて解説がされている印象です。
OOP についての実際のコードはもちろんだけど、「なんでこうするべきなんだっけ?」の理由に強くフォーカスされている説明なので、「そうそう、OOP ってこうあるべきだよね」という理解が進む。
OOP だけでなくて、DDD などでも全体的に「なぜ」のところに強くフォーカスされているので納得感をもって本を読める。
DDD の中でも大事な観点などが実コードを交えて説明されるので、入門として良さそう。
注意点として、アプリケーションサービス・ドメインサービスとかの説明がなかったので、DDD のすべてを網羅した説明ではないと思う。
逆に DDD におけるコア・重要なポイントに絞られている説明なので、DDD の触りを手軽に知りたい人には良さそう。
ただ、個人的には単純に DDD を知りたいなら、今まで読んだ中ではボトムアップドメイン駆動設計の記事で学ぶのがおすすめですが。(これ、気付いたら書籍化されてるじゃん!今度、買って読もう。)
全体的に技術寄りのトピックではある。ただ、「ドメインをどうやってシステムに落とし込むか?」という、ソフトスキル的な範囲も書かれていて、実際に開発する場面でも大事な観点が盛り込まれている。
説明がやや婉曲でわかりにくいように感じる点もいくつかあった。というのも、上から読んでもスラスラ頭に入ってこないところが多いので。
すべてを細かく正確な日本語で説明しすぎてるのかなー、という印象。
頭にスラスラ入らないところは、何度か読めば理解はできるけど、ストレスはある。
使われるアーキテクチャが尖りすぎているので、現場でこの設計で GO サインが出ないんじゃないかな、と思う。
というのも、
などを使うことを推奨していて解説がされているが、自分の知っている限りのシステム開発ではこれらの設計ってややアブノーマルな印象。
もちろん、べき論というか理想論では、それぞれ採用すべきだとも思っているけれども
などなどの理由でこれらを採用するのは一般的なチームでは少し難しそうだと思う。
そういう意味合いで、この本のナレッジが「現場で役に立つ」か?というと正直疑問です。
個人的にこの本で学んだポイントとか、思ったポイントのまとめです。
OOP、DDD、CQRS、イベントソーシングなどの解説が広くされているし、ドメインをアプリケーションに落とし込むところなんかも解説されているので、薄く広くの知識を理由や背景を踏まえて説明してくれるので、リーダブルコードの次に読む本を迷ってるなら、選択肢の1つとして上げられる本かと思った。
ただ、DDD においていくつも本を読んだ上で先輩がおすすめしてきた本、とのことだったので期待していたけど、個人的にはボトムアップドメイン駆動設計 │ nrslibのほうが、「DDD の理解」という1点ではしやすかったので、やや残念。
![]() |
現場で役立つシステム設計の原則 ~変更を楽で安全にするオブジェクト指向の実践技法 新品価格 |