私説
DDD本入門
2015/03/06
kbigwheel
ドメイン駆動設計とは
- エリック・エヴァンスが1990年台頃から
提唱している設計手法 - 要件定義から全体設計までの流れにかぎらず、
開発の進め方まで含めたフレームワークとして
捉えることができる(設計と開発の融合) - DDD本をパターン集だと捉えることもできる
なぜDDDがそんなにもてはやされるの?
- いまのところ要件定義からコードに落としこむまでのフルスタックフレームワークとして他に競合するまともなものがない
- アジャイル駆動開発などは近いがコードへどのように落としこむか、までは言及しない
- ウォーターフォールは変化し続ける要件・環境に適応しえず、またフルスタックとは言いがたい
うちの会社とDDD
- 社内ではScalaプロダクトでの実践が多い
- 要因
- 国内でScalaクラスタとDDDクラスタに重複して
所属している人が多い - Play FrameworkとDDDの相性がいいという意見
- 国内でScalaクラスタとDDDクラスタに重複して
- 要因
- モバでも主に隣の部署で活発に実践されてるっぽい
が、このDDD本
いざ学ぼうとして独力ですべて
読むのはかなり辛い
- 厚い(576ページ)
- 前提としたい本が多い(4,5冊挙げられる)
- 本の構成(順番・話す粒度)が結構雑(暴言)
- 基本的にgood practiceを寄せ集めた本なので
上手く系統だてられてるとは言いがたい
- 基本的にgood practiceを寄せ集めた本なので
- 概念的説明が多く、漠然と読んでるだけでは
なにも頭に入ってこない
原典以外で勉強するのも
おすすめできない
-
-
各章の概要説明ぐらいにしかならない
-
-
Domain Driven Design(ドメイン駆動設計) Quickly 日本語版
- これも単独ではほぼ意味が無いように見える。原典読んだことある人が内容を思い出すのには向いてる
- これらだけ読んでもまったくわからなかったり
わかった気になって終わる危険が高い
一番ベストなのは読書会
- 一緒に読んでる人と内容を話し合い、イメージするのがいい
- 経験あるDDD実践者に1人メンターとしてついてもらえばベスト
- 社内のDDD勉強会は一息つきつつあるが、
潜在的に勉強したいと思っている人は多数いるはず - #dddなどで呼びかけてみるといいかも
- 社内のDDD勉強会は一息つきつつあるが、
どうしても1人で読まざるをえないのなら
DDD本目次
-
第1部 ドメインモデルを機能させる
-
知識をかみ砕く
-
コミュニケーションと言語の使い方
-
モデルと実装を結びつける
-
-
第2部 モデル駆動設計の構成要素
-
ドメインを隔離する
-
ソフトウェアで表現されたモデル
-
ドメインオブジェクトのライフサイクル
-
言語を使用する:応用例
-
-
第3部 より深い洞察へ向かうリファクタリング
-
ブレイクスルー
-
暗黙的な概念を明示的にする
-
しなやかな設計
-
アナリシスパターンを適用する
-
デザインパターンをモデルに関係づける
-
より深い洞察へ向かうリファクタリング
-
-
第4部 戦略的設計
-
モデルの整合性を維持する
-
蒸留
-
大規模な構造
-
戦略をまとめ上げる
-
-
第1部 ドメインモデルを機能させる
-
知識をかみ砕く
-
コミュニケーションと言語の使い方
-
モデルと実装を結びつける
-
-
第2部 モデル駆動設計の構成要素
-
ドメインを隔離する
-
ソフトウェアで表現されたモデル
-
ドメインオブジェクトのライフサイクル
-
言語を使用する:応用例
-
-
第3部 より深い洞察へ向かうリファクタリング
-
ブレイクスルー
-
暗黙的な概念を明示的にする
-
しなやかな設計
-
アナリシスパターンを適用する
-
デザインパターンをモデルに関係づける
-
より深い洞察へ向かうリファクタリング
-
-
第4部 戦略的設計
-
モデルの整合性を維持する
-
蒸留
-
大規模な構造
-
戦略をまとめ上げる
-
- 最初は1・2部だけ読めばOK
- 2部が一番エンジニアに取って面白いけど、
1部の話がところどころ出てくるので、
1部を軽く流して2部を読むのがおすすめ
この方法の利点と欠点
- 利点
- 2部は比較的わかりやすいためモチベーションを保てる
- とりあえずDDDの話がある程度わかるようになる
- 欠点
- 実は2部はDDD的に一番重要度が低い
- より概念的な1・3・4部がDDDの核心
- 実は2部はDDD的に一番重要度が低い
しかし、原典読んだことあるのと
ないのでは大きく違うので(主に人と話すとき)、
とりあえず読むのは悪くない
DDD本を読む上で
予め知っておくと捗る情報
- 部・章立てされてるが、基本的にはデザパタ本と同様の
パターン集- パターンをある程度分類・順序付けしたのがDDD本
- 基本的には以下の体で進む
- パターンA: BBBはCCCしろ!
- BBBはCCCしろ、の概念的説明
- 具体的な例を出して説得力を持たせる
- まとめ
- 他の本のことが引用されたり前提となって話が進む場合があるが、そちらも同じくらい厚いので一旦忘れてDDDを読もう
- slackやircの#dddを頼ると助けがあるかもね
DDDは今後どうなるのか
- 発表からそろそろ20年だけどまだまだ黎明期
- 敷居が高いこともあり普及してるとは言いがたい
- ただ、パターン集の側面もあるので
すぐに実践できる項目もあり実用度は高い - 勉強できるなら勉強しておいたほうがいいね
おまけ
- 日曜にスライド作り終わったのだけど、
水曜にDDDの新しい本が#scalaで話題に - Scala界隈でDDDが大いに盛り上がったのでログをまとめましたよ-その1 - Kuchitama Tech Note
- 原典が出てから10年、いろんな内容を吟味・再考して
書かれた新しい本らしいのでおすすめ- そうはいうものの最初は原典読むのがいいと思う
私説DDD本入門
By kbigwheel
私説DDD本入門
- 1,795