Edited at

ドメイン駆動設計を勉強するときのオススメ資料

この記事は、ドメイン駆動設計 #1 Advent Calendar 2018の9日目です。

明日は@kmdsbngさんです。

今回は、ドメイン駆動設計(以下DDD)を学ぼうとする人に対して参考になる資料をまとめます。


DDD関連資料のオススメ

まずはDDDの青い本、エリック・エヴァンスのドメイン駆動設計から手を出したいところですが、500ページ超えで分厚く、初学者の人とっては解説される内容が抽象度が高く、理解するのに苦労すると思います。

ですのでこれから紹介するSTEPの順番から読んでいくのことをオススメします。


STEP1

まずはDDDの概念から理解していくことから始めましょう。下記の本がオススメです。


わかる!ドメイン駆動設計 ~もちこちゃんの大冒険~

わかる!ドメイン駆動設計.jpg

https://booth.pm/en/items/392260

この本はストーリー形式でDDDを解説されていますので比較的理解しやすいと思います。

技術同人誌らしく、可愛らしいイラストもあって心理的ハードルを下げてくれます。


現場で役立つシステム設計の原則 ~変更を楽で安全にするオブジェクト指向の実践技法

61d7GWbXVJL.jpg

https://www.amazon.co.jp/dp/477419087X/

この本は、DDDの構成要素の一つであるオブジェクト指向を解説しながら

設計について学べる本です。

DDDについてあまり言及はしていませんが、内容的にはDDDに沿っていますので、イメージしやすくなると思います。

また、著者の増田さんはDDD実践者の第一人者の一人です。

SlideshereでDDDについて多くの解説がありますので理解の助けになると思います。


STEP2

ここからより深くDDDについて理解していくための資料を紹介します。


Domain Driven Design(ドメイン駆動設計) Quickly 日本語版

frontcover_ja_small.png

https://www.infoq.com/jp/minibooks/domain-driven-design-quickly

エリック・エヴァンスのドメイン駆動設計の書籍の内容を要約したものです。

エリック本を読み始める前に読むといいと思います。


エリック・エヴァンスのドメイン駆動設計

51rgnUkmlzL.jpg

https://www.amazon.co.jp/dp/4798121967/

ここでやっとエリック本を紹介します。

DDDの原典ですので、DDDのすべてが書かれています。

ただ2003年に刊行されてますので、一部古くなっている記載がありますが

それを踏まえても名著だと思います。

またDDD難民に捧げるDomain-Driven Designのエッセンスを並行して読むのをオススメです。

DDDの用語集として理解の助けになると思います。


STEP3

ここからより具体的に実践と実装方法について学べる資料を紹介します。


実践ドメイン駆動設計

91aTKucFSKL.jpg

https://www.amazon.co.jp/dp/479813161X/

通称IDDD本

具体的なコードを元に、実践的なDDDのやり方が書かれています。

技術的な内容になってますので、人によってはエリック本より先に読むのもありかなと思います。

要約として「実践ドメイン駆動設計」 から理解するDDD (2018年11月)というスライドがあります。

読み終わったあとに内容を整理するのに助けになると思います。

↑書籍版が出てます。

image.png

https://www.amazon.co.jp/dp/4798161500/


.NETのエンタープライズアプリケーションアーキテクチャ第2版

51c52CsHWTL.jpg

https://www.amazon.co.jp/dp/B00ZQZ8JNE/

.NETとありますが、コードサンプルが.NETベースなだけで他の言語でも適用可能な内容になってます。 DDD、CQRS(Command/Query Responsibility Segregation)、イベントソーシングを中心にアーキテクチャ設計の原則の実践と実装方法について書かれています。

この本の特徴としてCQRSとイベントソーシングの具体的なソース例があるところです。

私はまだ読んでる途中ですが、CQRSとイベントソーシングを採用しようとしたときに参考になりそうだと思いました。


その他オススメ資料

ここまで紹介してきた資料を読破できたなら、DDDについて大分理解ができる人になってると思います。

ただそれでも分からないことが出でくると思いますのでコミュニティに頼るのも手です。

DiscordにDDDのコミュニティがありますので参加してみてはいかがでしょうか!


以上、ここまで読んでくださった方々の助けになれば幸いです。