ソフトウェア開発に数年以上携わっていると、どこかで「ドメイン駆動設計 (DDD)」という言葉を耳にして学んでみようと思うことが少なくないと思います。
この記事では DDD に関する日本語の書籍を
- DDD のバイブル的な書籍
- かなり噛み砕いて解説した書籍
- DDD と相性が良いとされる要件定義・設計プロセスに関する書籍
の 3 つに分けて紹介していきます。
DDD のバイブル的な書籍
エリック・エヴァンスのドメイン駆動設計
難易度: ★★★
DDD の原典のような書籍で、DDD の哲学から解説されています。
サンプルコード等のない概念的な話が多く、ページ数も非常に多いため、心が折れやすいと言われています。
あまり分厚い本を読むのに慣れていない方は、いきなりこの本を読み始めるのではなく、後述する「かなり噛み砕いて解説した書籍」のどれかから読み始めることをオススメします。
普段から分厚い本を読み慣れていれば読める範囲ではあるので、そういった方はいきなりこの本を読んでみてもいいかもしれません。
実践ドメイン駆動設計
難易度: ★★
DDD の書籍として『エリック・エヴァンスのドメイン駆動設計』の次に有名な書籍で、通称「IDDD 本」です。
『エリック・エヴァンスのドメイン駆動設計』よりも具体的なコードの解説が多く、比較的読みやすいです。
とはいえページ数はかなり多いので、後述する「かなり噛み砕いて解説した書籍」と比べると読了するハードルは高いです。
この本と『エリック・エヴァンスのドメイン駆動設計』では、「サブドメイン」・「境界付けられたコンテキスト」などの一部の用語の意味が異なるとされているので、読み進める際はご注意ください。
かなり噛み砕いて解説した書籍
現場で役立つシステム設計の原則 ~変更を楽で安全にするオブジェクト指向の実践技法
難易度: ★
タイトルに「ドメイン駆動設計」という単語は入っていませんが、内容は DDD の解説になっています。
「DDD のバイブル的な書籍」として紹介した 2 冊に比べると非常に読みやすく、プログラミングの基本を身に付けた方が設計を学び始める際に読むにもオススメです。
アプリケーション設計の基本を学びたい、という際にも参考にしやすい書籍です。
ドメイン駆動設計入門 ボトムアップでわかる! ドメイン駆動設計の基本
難易度: ★
DDD の具体的な実装について非常に分かりやすく解説した書籍です。
『実践ドメイン駆動設計』を分かりやすく噛み砕いたような書籍で、前提知識がほとんどなくても読み進めることができます。
実際に DDD で実装を進めようとする際にどういう困りごとが発生して、どう解決すればいいのかなど、非常に丁寧に解説されています。
「実践ドメイン駆動設計」から学ぶDDDの実装入門
難易度: ★★
『実践ドメイン駆動設計』の解説書で、DDD に登場する基本的な用語のそれぞれを要約して説明したような内容になっています。
かなり簡略された内容になっているので、他の書籍などで DDD について学習した後、各要素について「一言で説明するとどういうことか」といった理解を深めるために読むのに適しています。
DDD と相性が良いとされる要件定義・設計プロセスに関する書籍
最近では RDRA と ICONIX という手法が DDD と相性が良いとされて注目されています。
ここから、RDRA と ICONIX に関する書籍 3 冊を紹介します。
モデルベース要件定義テクニック
難易度: ★
RDRA の考案者による解説書です。
UML のユースケース図やクラス図といったものを教わる方は多いと思いますが、そういったモデルをどう関連付けて作成していくのかで悩んだことはないでしょうか。
RDRA では、要件定義をよりスピーディかつ整合性のある状態で進めるため、各種モデルを接続して要件から実装までを繋いでいきます。
比較的気軽に読めて学びの多い、非常にオススメできる書籍です。
RDRA2.0 ハンドブック
難易度: ★
こちらも RDRA の考案者による解説書です。
『モデルベース要件定義テクニック』よりも後発の書籍で、著者がより洗練したプロセスを解説しています。
『モデルベース要件定義テクニック』と比較して非常にコンパクトな書籍なので、簡単に読める本の方がいいという場合はこちらを手に取ってみることをオススメします。
ユースケース駆動開発実践ガイド
難易度: ★★
ICONIX という手法の解説書です。
RDRA と同じように、要件から実装までをどのように繋いでいくのかを解説しています。
要件定義などの文脈でしばしばオススメされる書籍ですが、ある程度アプリケーション設計や要件定義の知識・経験がないと読み進めるのは難しいかもしれません。
読むタイミングさえ合えば、非常に学びの多い書籍です。
おわりに
この記事では DDD やその関連書籍を紹介しました。
読みやすい本・読みにくい本がかなり分かれているので、まずは自分にフィットしそうな本から読んでみることをオススメします。
また、DDD の戦術的設計ではアプリケーションアーキテクチャについての理解も必要です。
アプリケーションアーキテクチャの解説書について別記事「アプリケーションアーキテクチャに関する書籍 4 冊の紹介」に書いているので、そちらも参考にしてください。
特に『.NETのエンタープライズアプリケーションアーキテクチャ 第2版』はかなりのページを割いて DDD について解説しており、非常に参考になるのではないかと思います。