ドメイン駆動設計(DDD)の学習本おすすめ8選! 入門〜経験者レベルまで網羅
2003年に書籍『Domain-driven-design』においてEric Evans氏が提唱したソフトウェア開発手法の1つであるドメイン駆動設計(以降DDD)。
その概念自体の広がりは見せる一方で、WEB上には勉強会資料などがさまざまな人のさまざまな解釈で公開されており、DDDの理解に向けてはどこから学習すれば良いのか少々ハードルが高い印象を持っている方も多いのではないでしょうか。
そこで今回は”これから学習する人向け”、”より知識を深めたい人向け”の2軸でおすすめの書籍について触れていきます。
これからドメイン駆動設計の学習を始める方におすすめな本5選
ユースケース駆動開発実践ガイド
2007年の古い本ではあるものの、DDDを実践していくためのオブジェクト指向分析設計を導入するプロセスが実践的に解説されている本書。
今現在では利用しないような内容の記載もありますが、参考にできるものは非常に多くあります。
実装パターンではなくて、実践していくためのプロセスを習得したい方向けにおすすめです。
Doug Rosenberg著 『ユースケース駆動開発実践ガイド』(Amazon)
ドメイン駆動設計 サンプルコード&FAQ
DDDの基本やよくある疑問を、非常に分かりやすい言葉で解説しています。
サンプルコードも豊富かつコンパクトなので、大事なポイントをスモールステップで着実に学べるのが魅力です。
松岡 幸一郎著 『ドメイン駆動設計 サンプルコード&FAQ』(BOOTH)
良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方
本書で解説しているクラス設計やモデリングは、実はDDDが背景にあります。また、随所でDDDの考え方を紹介しています。
初心者向けに分かりやすい言葉で解説しているため、エヴァンス本が理解しやすくなるでしょう。
仙塲 大也著 『良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方』(Amazon)
事業分析・データ設計のためのモデル作成技術入門
モデリング・分析のための手法が体系的に学べる貴重な本。
モデリングのヒントが非常に多くあり、業務理解など現状分析が必要な場合にも非常に有用。
イベントソーシングのメッセージなどにも活用できます。
佐藤 正美著 『事業分析・データ設計のためのモデル作成技術入門』(Amazon)
ドメイン駆動設計入門 ボトムアップでわかる! ドメイン駆動設計の基本
本書は、『エリック・エヴァンスのドメイン駆動設計』や『実践ドメイン駆動設計』を愛読する著者によるドメイン駆動設計の入門書です。初心者や、既に前述の2冊を読んだがさらにわかりやすい入門書を求めているエンジニアが対象です。実践が難しい部分は後回しにして、理解しやすい実装パターンから始めることを目指しており、パターンの解説には工夫が凝らされています。
成瀬 允宣著 『ドメイン駆動設計入門 ボトムアップでわかる! ドメイン駆動設計の基本』(Amazon)
FLEXYではドメイン駆動設計などの技術テーマについてスペシャリストが語るイベントや記事などのコンテンツをご用意しています。ご登録いただくとイベントなどのコンテンツ情報をキャッチアップしやすくなったり、ドメイン駆動設計の知識を活かせる案件の紹介も受けやすくなりますので、ぜひFLEXYサービスへの登録をご検討ください。
更にドメイン駆動設計の知識を深めていきたい方におすすめな本3選
Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F#
本書の半分以上はどのようにドメインを理解してモデリングしていくかというものとなっており、イベントストーミングなどを活用してコンテキストを明確にしF#(関数型言語)での実装に落とし込むものです。
F#を利用していなくても技術要素を入れずにドメインを理解し、型を作り実践に落とし込む流れは参考になるはず。(2022年9月末現在、日本語書籍無し)
セキュア・バイ・デザイン 安全なソフトウェア設計
DDDの実践的応用事例としてイチオシの本。
ドメインモデリングや境界付けられたコンテキストなどのDDDに登場する手法や考え方が、システムの問題解決にどのように貢献するかが解説されています。
DDDの理解がさらに深まるでしょう。
Dan Bergh Johnsson著 『セキュア・バイ・デザイン 安全なソフトウェア設計』(Amazon)
実践ドメイン駆動設計
通称「IDDD本」と呼ばれ、『エリック・エヴァンスのドメイン駆動設計』に次ぐ有名なDDDの書籍です。具体的なコード解説が多く、読みやすい特徴があります。しかし、ページ数が616ページと多く、他の噛み砕いて解説された書籍と比べるとハードルが高いです。また『エリック・エヴァンスのドメイン駆動設計』とは一部の用語の意味が異なるため注意が必要です。
ヴォーン・ヴァーノン著 『実践ドメイン駆動設計』(Amazon)
ドメイン駆動設計の知識を深めた後は実際の案件でスキルアップしたり腕試しをしてみませんか?FLEXYではドメイン駆動設計の知識を活かせる案件を多数紹介することが可能です。「フルリモート」「高単価」「週1〜5日」などさまざまな条件で案件紹介が可能ですので、まずはFLEXYサービスの内容をご覧ください。
ドメイン駆動設計関連記事
ここからはFLEXYで公開しているドメイン駆動設計関連の記事をご紹介します。
ドメインエキスパート/エンジニアと語るDDD実践例
DDDの関連書籍の出版やWeb上で情報発信をされているログラス社の松岡さんをはじめ、エンジニアの村本さん、ドメインエキスパートの浅見さんをお招きし、ドメイン駆動設計の実践例と開発のポイントについて解説いただきました。
各事業フェーズで必要なソフトウェア設計パターン
2022年9月27日に開催したCTO meetupにて、READYFOR株式会社のミノ駆動さん、スターフェスティバル株式会社のytakeさんから、ソフトウェア設計やアーキテクトのキャリアについて語って頂きました。サービス展開5年〜(PMF後〜大企業まで)において設計で意識すべき点という項目でドメイン駆動設計についての解説があります。
FLEXYで取り扱っている案件例
FLEXYで取り扱っている案件例を紹介します。案件を探している方はぜひご覧ください。
ここで紹介する案件以外にもFLEXYでは多数の案件を取り扱っています。「フルリモート」「高単価」「週1〜5日」などの希望に沿った案件の紹介が可能です。登録を完了させ、FLEXY担当者と面談すると希望に沿った案件を紹介することが可能ですので、まずはFLEXYサービスの内容をご覧ください。
【〜100万円/月】リユース事業プロダクトのバックエンド開発支援
■案件概要
- 稼働日数:週4〜5日
- 報酬:〜100万円/月
- 勤務地:四谷4丁目
- リモート:可
■業務内容
- プロダクトのバックエンド領域における開発(設計・実装・テスト)
- 高品質なプロダクトづくりを目指す取り組み
- チーム勉強会
- 開発生産性
■必須要件
- 1年以上のWebアプリケーションの開発の実務経験(Golang)
- AWSやGCPといったパブリッククラウドの環境構築及びIaCの開発経験
- チーム開発経験
- ステークホルダーとコラボレーションしつつ開発を推進した経験
- Postgres / MySQLなどのRDMSを利用した実務経験
【〜70万円/月】店舗ビジネス向け業務効率化SaaSを開発している企業で自社プロダクトのサーバーサイド開発支援
■案件概要
- 稼働日数:週4〜5日
- 報酬:〜70万円/月
- 勤務地:代官山
- リモート:可
■業務内容
- 開発しているプロダクト、ホームページの保守運用業務
■必須要件
- Webフレームワークを用いたWebサービスの開発経験
- RDBMSを用いたサービス設計、開発、運用経験
- オブジェクト指向、テスト自動化に関する知識
- Go言語の利用経験
まとめ
DDDの理解を深めるアプローチは、実際に実装パターンから入って失敗経験をもとに学んでいく方法のほか、コンピュータサイエンスをしっかり理解してから学んでいく方法などさまざまです。
読者の皆様の状況にあわせて、今回取り上げた書籍を上手に活用してみてはいかがでしょうか。
■FLEXYのご紹介
FLEXYはエンジニア・CTO・技術顧問・デザイナーの方向けにフリーランスや副業の案件をご紹介するサービスです。まずはお気軽にご連絡ください。