技術書

【DDD】ドメイン駆動設計入門【要約・感想・まとめ】

記事内に商品プロモーションを含む場合があります

書籍情報

メルカリでの検索結果はこちら

書名:ドメイン駆動設計入門-ボトムアップでわかる!ドメイン駆動設計の基本-

著者名:成瀬 允宣

出版社:翔泳社

著者について

成瀬 允宣

テックリードとしてソフトウェア開発の第一線で活躍するプログラマ。
開発業務の傍ら、所属会社GMOインターネットグループにて研修講師を務めるほか、大規模カンファレンス登壇や個人セミナー講師として活躍。
得意領域はソフトウェア開発・設計全般。難解な知識を分かりやすく噛み砕いて解説することを得意とする。

引用元:SEplus

書評

どんな本?

皆さんはDDD=DomainDrivenDesign=ドメイン駆動設計を知っているでしょうか。

DDDとは2003年にエリック・エヴァンスという人が提唱した、ドメイン(=システムが解決しようとしているビジネス上の問題や要件を表す「領域」のこと)を中心に据えて設計をしていく手法のことです。

本書では難解なドメイン駆動設計の手法を噛み砕いて説明してくれます。

なお本書ではドメインの概念をモデルに落とし込む「モデリング」についてはほとんど触れていません。いわゆる「軽量DDD」といわれる部分を扱っています。

なのでどのようにモデリングするか詳細に知りたい場合は他の本を参照する必要があります。

読んだきっかけ

ちゅけ

基本設計をなんとなくやってきましたが、
教科書的な作法に則って理解しながら設計したいと考えたことがきっかけです!

要約

  1. ドメイン駆動設計とはシステムが解決しようとしているビジネス上の問題や要件を表す「領域」=ドメインを中心に設計を行う手法。
  2. ドメインモデル貧血症とはドメインモデル(ドメインを抽象化した概念のこと、エンティティ、値オブジェクトが該当する)が持つべきビジネスロジック(処理または関数)を持っておらず代わりにドメインサービス(ドメインモデルに記載すると不自然な処理を集めるオブジェクト)に処理が寄せられてしまっている状態のことを指す。
  3. DI(Dependency Injection=依存性注入)とは依存関係をオブジェクトの中に記載せず外部から依存関係を与える方法。例えば関数の引数を用いて依存させるオブジェクトなどを引き渡すなどの方法がある。

良かった点・悪かった点

  • 設計工程においてデファクトスタンダードとなっているドメイン駆動設計の手法についてわかりやすく学ぶことができる
  • ドメイン駆動設計について何も知らない人でも理解ができるようにパターンなどを順をおって説明をしてくれている
  • 具体的なコードが記載されておりどのようなクラスを定義すれば説明されているパターンを表現することができるかを理解することができる
  • コードで理解するような作りになっているのでプログラマでない人には理解が難しいかも
  • DDDの原点となる『エリック・エヴァンスのドメイン駆動設計』や『実践ドメイン駆動設計』を噛み砕いて説明を試みている本なので著者の見解が混ざっている。全て鵜呑みにするのは危険であり自分で調べて認識を擦り合わせる必要がある。
  • モデリングについてほとんど触れられていないのでどのようにドメインをモデルに落とし込むかを知りたい人は他の本を参照する必要がある。

感想・まとめ

本書ではドメイン駆動設計とは何なのか具体的に何をどのように進めていいのかを学びました。

私自身結構なんとなく設計をやっていたので、本書を読むことにより各パターンの名前や役割を知ることができました。

ドメインサービスの章で語られている「ドメインモデル貧血症」と言う言葉は初めて知りました。これに関しては実装しているときに特にデメリットを感じた部分でもあります。例えばモデルに持っていなければいけないメソッドをコントローラーに持っていたりすると、他の人が回収する時に様々な場所を改修しなければいけないといったふうに結びつけることで、理解が容易になりました。

新機能を開発するときの設計業務をする際に少しづつ活かしながら身につけています。

こんな人におすすめ!

  • 設計工程について学びたい人
  • DDDの考え方について知りたい人
  • 『エリック・エヴァンスのドメイン駆動設計』または『実践ドメイン駆動設計』を読む前に予習したい人

総評

個人的評価

ちゅけ

ドメイン駆動設計についてやさしく教えてくれる本

設計工程においてDDDはもはやデファクトスタンダードとなりつつあると認識しています。原点は海外の難解な書物なので本書は原点を読む前のいいクッションとなります。

気になったらぜひ読んでみてね😆