DDD関連書籍メモ


Domain-Driven Design(DDD)と言えばエリック・エヴァンズの「ドメイン駆動設計」ですが、いろいろ調べてみると本当にDDDを行う上では更に多くの知識が必要だと感じたので、その動画と紹介されている書籍をメモ。
基本的に設計やデザインパターンに関する書籍が中心です。

|タイトル|著者|初版|補足|
|:--|:--|:--|:--|
|[オブジェクト指向における再利用のためのデザインパターン](http://www.amazon.co.jp/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E5%86%8D%E5%88%A9%E7%94%A8%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3-%E3%82%A8%E3%83%AA%E3%83%83%E3%82%AF-%E3%82%AC%E3%83%B3%E3%83%9E/dp/4797311126)(GoF)|エリック・ガンマ, ラルフ・ジョンソン, リチャード・ヘルム, ジョン・ブリシディース, その他|1995|言うまでもなく必読。「[Java言語で学ぶデザインパターン入門](http://www.amazon.co.jp/%E5%A2%97%E8%A3%9C%E6%94%B9%E8%A8%82%E7%89%88Java%E8%A8%80%E8%AA%9E%E3%81%A7%E5%AD%A6%E3%81%B6%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E5%85%A5%E9%96%80-%E7%B5%90%E5%9F%8E-%E6%B5%A9/dp/4797327030/ref=sr_1_3?s=books&ie=UTF8&qid=1419312496&sr=1-3)」でもOK。※2|
|[Data Model Patterns](http://www.amazon.co.jp/Data-Model-Patterns-Conventions-Thought-ebook/dp/B00E0LASDY/ref=sr_1_1?s=english-books&ie=UTF8&qid=1419313274&sr=1-1)|David Hay|1995|アナリシスパターンの元ネタ。ドメインモデルの名前の設計や構造の参考に。※2|
|[アナリシスパターン](http://www.amazon.co.jp/%E3%82%A2%E3%83%8A%E3%83%AA%E3%82%B7%E3%82%B9%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E2%80%95%E5%86%8D%E5%88%A9%E7%94%A8%E5%8F%AF%E8%83%BD%E3%81%AA%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%83%A2%E3%83%87%E3%83%AB-Object-Technology-%E3%83%95%E3%82%A1%E3%82%A6%E3%83%A9%E3%83%BC-%E3%83%9E%E3%83%BC%E3%83%81%E3%83%B3/dp/4894716933/ref=sr_1_cc_1?s=aps&ie=UTF8&qid=1419311542&sr=1-1-catcorr)|マーチン・ファウラー|1996|オブジェクト指向の広場で「激難」の評価 ※2|
|[UMLモデリングのエッセンス](http://www.amazon.co.jp/UML-%E3%83%A2%E3%83%87%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%AE%E3%82%A8%E3%83%83%E3%82%BB%E3%83%B3%E3%82%B9-Object-Oriented-SELECTION/dp/4798107956/ref=sr_1_4?s=books&ie=UTF8&qid=1419312358&sr=1-4)|マーチン・ファウラー|1998|UMLを現実的に使う。美味しいところを蒸留して、凝縮して実践的に使える。※2|
|[実践UML](http://www.amazon.co.jp/%E5%AE%9F%E8%B7%B5UML-%E7%AC%AC3%E7%89%88-%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E5%88%86%E6%9E%90%E8%A8%AD%E8%A8%88%E3%81%A8%E5%8F%8D%E5%BE%A9%E5%9E%8B%E9%96%8B%E7%99%BA%E5%85%A5%E9%96%80-%E3%82%AF%E3%83%AC%E3%83%BC%E3%82%B0%E3%83%BB%E3%83%A9%E3%83%BC%E3%83%9E%E3%83%B3/dp/4894716828/ref=sr_1_1?s=books&ie=UTF8&qid=1420031855&sr=1-1)|クレーグ・ラーマン|1998|※2|
|[ソフトウェアアーキテクチャ―ソフトウェア開発のためのパターン体系](http://www.amazon.co.jp/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3%E2%80%95%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E9%96%8B%E7%99%BA%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E4%BD%93%E7%B3%BB-%E3%83%96%E3%83%83%E3%82%B7%E3%83%A5%E3%83%9E%E3%83%B3-F/dp/4764902834/ref=sr_1_2?s=books&ie=UTF8&qid=1419312522&sr=1-2)(PoSA)|F.ブッシュマン, H.ローネルト, M.スタル, R.ムニエ, P.ゾンメルラード, その他|2000|GoF本より、ややアーキテクチャ寄りの本。※2,3|
|[The Data Model Resource Book](http://www.amazon.co.jp/Data-Model-Resource-Book-Enterprises-ebook/dp/B006BBVQQY/ref=sr_1_1?s=english-books&ie=UTF8&qid=1419311070&sr=1-1)|Len Silverston| 2001 |実際にモデリングする時の英単語を調べるのに役立つ。Data Model Patternsよりサンプル多め。※2|
|[ストリームラインオブジェクトモデリング](http://www.amazon.co.jp/%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%A0%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%83%A2%E3%83%87%E3%83%AA%E3%83%B3%E3%82%B0%E2%80%95%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E3%81%A8%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9%E3%83%AB%E3%83%BC%E3%83%AB%E3%81%AB%E3%82%88%E3%82%8BUML-%E3%82%B8%E3%83%AB-%E3%83%8B%E3%82%B3%E3%83%A9/dp/4894715775)|ジル・ニコラ, マイク・アベニー, マーク・メイフィールド, Jill Nicola, Mike Abney, その他|2001|ビジネスルールをUMLに落とすとどうなるか。※2|
|[マルチパラダイムデザイン](http://www.amazon.co.jp/dp/4894715287)|James O. Coplien|2001|マルチパラダイムデザイン（Multi-Paradigm Design: MPD）は、James O. Coplien氏の提唱する設計パラダイム。MPDは、認知言語学の現代的なカテゴリー理論と共通性・可変性に基づいて、問題をドメインとドメイン間の関係によって構造化（第1段階のドメインモデル＝アーキテクチャを作成）し、ソリューションドメインの提供する抽象によってそれらを再定義・洗練（第2段階のドメインモデル＝アーキテクチャを作成）するものである。ユビキタス言語（≒ドメイン辞書）、モデル駆動設計、境界付けられたコンテキスト（≒MPDのドメイン）等、DDDと多くの点でオーバーラップするため、本書を理解することはDDDの理解にも役立つ。なお、日本語版の内容は2000年の博士論文バージョンに基づいている。時系列は Multi-Paradigm Design for C++ (1998) -> [Multi-Paradigm Design (Ph.D. Thesis) (2000)](https://sites.google.com/a/gertrudandcope.com/info/Publications/Mpd) -> マルチパラダイムデザイン (2001) となる。|
|[オブジェクトデザイン](http://www.amazon.co.jp/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3-Object-Oriented-SELECTION-%E3%83%AC%E3%83%99%E3%83%83%E3%82%AB%E3%83%BB%E3%83%AF%E3%83%BC%E3%83%95%E3%82%B9%E3%83%96%E3%83%A9%E3%83%83%E3%82%AF/dp/4798109037/ref=sr_1_sc_1?ie=UTF8&qid=1419314511&sr=8-1-spell)|レベッカ・ワーフスブラック, アラン・マクキーン|2002|オブジェクト同士の責務、ロールなどのコラボレーション中心に書いた本。※2|
|[エンタープライズ アプリケーションアーキテクチャパターン](http://www.amazon.co.jp/%E3%82%A8%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%97%E3%83%A9%E3%82%A4%E3%82%BA-%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3-Object-Oriented-Selection/dp/4798105538/ref=sr_1_2?s=books&ie=UTF8&qid=1419312174&sr=1-2)(PoEAA)|マーチン・ファウラー|2002|ここまでのオブジェクトモデリングやドメイン設計の理論的な内容(アナリシスパターン、GoF、PoSA)から、現実的な設計を行う際にDBや画面するために、どのような選択をするかなどのパターン本。※2|
|[ドメイン駆動設計](http://www.amazon.co.jp/%E3%82%A8%E3%83%AA%E3%83%83%E3%82%AF%E3%83%BB%E3%82%A8%E3%83%B4%E3%82%A1%E3%83%B3%E3%82%B9%E3%81%AE%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E9%A7%86%E5%8B%95%E8%A8%AD%E8%A8%88-Eric-Evans-ebook/dp/B00GRKD6XU/ref=sr_1_1?s=books&ie=UTF8&qid=1419312174&sr=1-1)|エリック・エヴァンズ|2003|ドメイン駆動設計と言えばまずこの本。|
|[UMLモデリングの本質](http://www.amazon.co.jp/UML%E3%83%A2%E3%83%87%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%AE%E6%9C%AC%E8%B3%AA-%E6%97%A5%E7%B5%8CIT%E3%83%97%E3%83%AD%E3%83%95%E3%82%A7%E3%83%83%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%ABBOOKS-%E5%85%90%E7%8E%89-%E5%85%AC%E4%BF%A1/dp/4822221180/ref=sr_1_2?ie=UTF8&qid=1419313921&sr=8-2)|児玉公信|2004|ドメインモデルの設計に参考になる。※2|
|[アジャイルソフトウェア開発の奥義](http://www.amazon.co.jp/gp/product/4797347783/ref=as_li_tf_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4797347783&linkCode=as2)|ロバート・C・マーチン|2004|「原則」「デザインパターン」「プラクティス」を話題|
|[Domain-Driven Design Quickly](http://www.infoq.com/jp/minibooks/domain-driven-design-quickly)|Abel Avram, Floyd Marinescu|2007|Eric Evans氏の「Domain Driven Design」の主要点を短く読みやすく要約 ※1|
|[ユースケース駆動開発実践ガイド](https://www.amazon.co.jp/dp/4798114456)|ダグ・ローゼンバーグ|2007|	DDDの境界付けられたコンテキストを理解する手助けの一つとして役立つ、ユースケース駆動開発やその実例であるICONIX法を解説|
|[Lean Architecture](http://www.amazon.co.jp/dp/B004IK8PIW)|James O. Coplien, Gertrud Bjørnvig|2011|MPDを下敷きにしつつDCIアーキテクチャによる設計を解説する書。Coplien氏によると、[DCIアーキテクチャとは「オブジェクトを使った、人々が問題を解決するために彼らの頭に持ち込む操作のモデルに応じたソフトウェアの構造化」](https://twitter.com/jcoplien/status/644129783513776128)であり、[「手続き・オブジェクトパラダイムの重要な要素を組み込んだMPDの拡張サブセット」](https://sites.google.com/a/gertrudandcope.com/www/thedciarchitecture)である。クラスベースの静的なモデルではなく、オブジェクトベースの動的なモデルを指向し、従来のオブジェクトモデルが捉えられていなかった「手続き」を、オブジェクトモデル上で捉えることを試みる。MPD同様、DDDと多くの点でオーバーラップする。[「境界付けられたコンテキストはDCIのコンテキストよりもドメインモデルにより似ている」](https://twitter.com/jcoplien/status/644778885436047360)|
| [Implementing Domain-Driven Design](http://www.amazon.co.jp/Implementing-Domain-Driven-Design-Vaughn-Vernon/dp/0321834577) | Vaughn Vernon | 2013 | ドメイン駆動設計をどのようにコードに落としこむかについて解説する書。
| [実践ドメイン駆動設計](http://www.amazon.co.jp/dp/B00UX9VJGW) | ヴァーン・ヴァーノン | 2015 | "Implementing Domain-Driven Design"の邦訳。ドメイン駆動設計をどのようにコードに落としこむかについて解説する書。 |
| [Domain-Driven Design Distilled](http://www.amazon.co.jp/dp/0134434420) | Vaughn Vernon | 2016 | 同氏著作『実践ドメイン駆動設計』に続き、境界づけられたコンテキストの戦略的設計について深掘りした書 | 

「※」は参考にしている動画番号


## 参考
1. [20110409_DevLOVE「オープニングセッション」_papandaさん_和智右桂さん](https://www.youtube.com/watch?v=t0Mh90YoSz4)
1. [20110409_DevLOVE「DDDについて」_和田卓人さん](https://www.youtube.com/watch?v=QMltFqbwhdw)
1. [20110409_DevLOVE「Deceptive Defiance of DDD」_角田 直行さん](https://www.youtube.com/watch?v=bCD6OfiGavU)

## 参考（マルチパラダイムデザイン、DCI関連）

* [DDDをめぐる話題（James Coplien, Eric Evans ほか、2016年1月DDD Europe の前に） - Togetterまとめ](http://togetter.com/li/877728 )
* [PHP Mentors -> PHPカンファレス2015 PHPメンターズセミナー「モデルを設計せよ！―ドメイン駆動設計を超えて」参加レポート](http://phpmentors.jp/post/131193847968/phpcon2015-phpmentors-workshop-design-models-beyond-ddd …)
* [PHP Mentors -> 杉本 啓「2つのドメインモデル―DDDの含意」](http://phpmentors.jp/post/136939446193/two-domain-models-implication-of-ddd-ja …)
* [James Coplien, talking about DCI and DDD. - Togetterまとめ](http://togetter.com/li/927916 )
* [Symmetry in Design - James Coplien @jcoplien at #DDDesign Europe 2016 #DDDEU - Chirpstory](http://chirpstory.com/li/302606 )
* [James Coplien @jcoplien, describing a difference between #DDDesign Bounded Contexts and MPD domains. - Chirpstory](http://chirpstory.com/li/304009 )
* [James Coplien @jcoplien, talking about partitioning and abstraction related to #DDDesign Bounded Contexts and MPD domains. - Chirpstory](http://chirpstory.com/li/306675 )



#### その他参考サイト
- [難民に捧げるDomain-Driven Designのエッセンス](https://www.ogis-ri.co.jp/otc/hiroba/technical/DDDEssence/index.html)