学習ロードマップ

DDD(ドメイン駆動設計)入門

業務ドメインをコードへ落とす戦術と戦略を、やさしい入門からエヴァンス / IDDD 系譜の現代標準まで 5 冊で積み上げる。

ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本 つくりながら学ぶ! ドメイン駆動設計 実践入門 [入門]ドメイン駆動設計ーー基礎と実践・クリーンアーキテクチャ ドメイン駆動設計をはじめよう : ソフトウェアの実装と事業戦略を結びつける実践技法 実践ドメイン駆動設計
SCROLL TO BEGIN

このロードマップが扱うもの

- CRUD / - -

このロードマップの全体像

対象読者

  • CRUD とトランザクションスクリプトから抜け出したいバックエンド / アプリケーション開発者
  • 「エンティティ」「値オブジェクト」「集約」といった用語は見聞きしたが、自分のコードに落とせていない中級者
  • マイクロサービスやクリーンアーキテクチャの文脈で、境界づけの判断軸を欲しているアーキテクト候補

5 冊で到達する状態

  • 値オブジェクト・エンティティ・ドメインサービス・リポジトリ・集約を用途に応じて使い分けられる
  • ユビキタス言語と境界づけられたコンテキストをもとに、モデルとコードの対応を設計できる
  • レイヤ化 / ヘキサゴナル / クリーンアーキテクチャの関係を整理し、依存方向を言語化できる
  • イベントストーミングやコンテキストマップなど、戦略的設計の実務手続きを動かせる
  • レガシーコードや既存 CRUD システムに DDD を部分導入する勘所を持てる

進め方のヒント

  • 1, 2 冊目は写経前提で、小さな業務ロジックを値オブジェクト + 集約に書き換える練習に使う
  • 3 冊目でレイヤとアーキテクチャの座標軸を得てから、4, 5 冊目の戦略・戦術に進むと迷子になりにくい
  • 4 冊目を先に通読して現代的な全体像を掴み、5 冊目 (IDDD) を辞書的に引く読み方も実務では有効

ロードマップ

5 つのステップで読み進める

  1. 01
    ステップ 01 ボトムアップで戦術パターンから掴むやさしい入門
    ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本
  2. 02
    ステップ 02 サンプル実装でドメインモデルを動かす実践入門
    つくりながら学ぶ! ドメイン駆動設計 実践入門
  3. 03
    ステップ 03 クリーンアーキテクチャと接続する設計特集の再編集
    [入門]ドメイン駆動設計ーー基礎と実践・クリーンアーキテクチャ
  4. 04
    ステップ 04 戦略設計まで踏み込む現代版 DDD 教科書
    ドメイン駆動設計をはじめよう : ソフトウェアの実装と事業戦略を結びつける実践技法
  5. 05
    ステップ 05 戦術と戦略を束ねる IDDD 邦訳の実装リファレンス
    実践ドメイン駆動設計

第 1 章

ボトムアップで戦術パターンから掴むやさしい入門

  1. ボトムアップで戦術パターンから掴むやさしい入門

    値オブジェクトや集約など DDD の戦術パターンを、最小の例題で一つずつ手を動かして体得するための起点。ここで語彙と手触りを揃える。

    ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本
    この章の 1 冊 ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本

    実装パターンから入って DDD の設計思想を体得する

    この本で身につくこと
    • 値オブジェクトとエンティティの区別基準(同一性 vs 値の等価性)を実装レベルで説明できる
    • ドメインサービスとアプリケーションサービスの責務を分離し、ビジネスロジックの置き場所を設計として決定できる
    • リポジトリパターンを用いてデータアクセス実装をドメイン層から隔離できる
    • 集約の境界を「整合性を守るべき単位」として設計できる

    読み終えると Before(読む前): コントローラや Service クラスにビジネスロジックが散在し、どこに何を書くべきか判断基準を持てない After(読み終えた後): 値オブジェクト・エンティティ・ドメインサービスの責務を区別し、ロジックの置き場所を設計として決定できる

    想定読者: Evans 本に挑戦する前の橋渡しを必要とするバックエンドエンジニア。特にコントローラや Service クラスへのビジネスロジック集積に課題を感じ始めた実装経験 1〜3 年程度の人

    前提知識: オブジェクト指向の基礎(クラス・インタフェース・カプセル化)の実装経験 / いずれかの Web フレームワーク(MVC ベース)での実装経験が 1 プロジェクト以上あること / RDB を使った CRUD 実装経験(ORM 経由で可)

    本の詳細を見る →
  2. サンプル実装でドメインモデルを動かす実践入門

    1 冊目で得たパターンを、通しのサンプルアプリに組み立てる位置づけ。CRUD からドメインモデルへ書き換える感覚をコードで掴む。

    つくりながら学ぶ! ドメイン駆動設計 実践入門
    この章の 1 冊 つくりながら学ぶ! ドメイン駆動設計 実践入門

    TypeScriptでDDDを設計から実装まで体得する

    この本で身につくこと
    • イベントストーミングで業務知識を整理し、境界づけられたコンテキストとサブドメインを特定できる
    • 値オブジェクト・エンティティ・集約・ドメインサービスをTypeScriptで実装し、不変条件を型で表現できる
    • リポジトリパターンとアプリケーションサービスを使ってドメイン層をインフラ詳細から隔離できる
    • Outboxパターンによって分散環境でのイベント発行の信頼性を確保する実装判断ができる

    想定読者: DDDの書籍を読んで概念は知っているが、戦略的設計と戦術的設計の連携や実装への落とし込み方で行き詰まった経験のある中級TypeScriptエンジニア

    前提知識: TypeScriptの型システム(interface・type alias・ジェネリクス)を実際に書いた経験 / Webアプリケーションにおける三層アーキテクチャ(プレゼンテーション・ビジネスロジック・データアクセス層)の基礎知識 / SQLによるCRUDとトランザクション(ACID)の概念

    本の詳細を見る →
  3. クリーンアーキテクチャと接続する設計特集の再編集

    レイヤ化・ヘキサゴナル・クリーンアーキテクチャと DDD の関係を整理する特集再編集本。依存方向と境界の判断軸をここで獲得する。

    [入門]ドメイン駆動設計ーー基礎と実践・クリーンアーキテクチャ
    この章の 1 冊 [入門]ドメイン駆動設計ーー基礎と実践・クリーンアーキテクチャ

    DDD の思想からクリーンアーキテクチャの実装まで段階的に習得する

    この本で身につくこと
    • 「エヴァンス本」の要点をオブジェクト指向・アジャイル・分散アーキテクチャとの関係性から再構成して理解できる
    • ユビキタス言語の策定プロセスと、開発チーム・ドメイン専門家の協働における具体的な使い方を把握できる
    • イベントストーミングを用いてドメインイベントを洗い出し、その知識をソースコードへ落とし込む手順を体験できる
    • イベントソーシングの概念(状態変化をイベントとして記録し再構築する設計)を実例から理解できる

    想定読者: オブジェクト指向の基礎は押さえており、DDD を実務に導入したいが「エヴァンス本」の抽象度に挫折した経験を持つバックエンドエンジニア

    本の詳細を見る →
  4. 戦略設計まで踏み込む現代版 DDD 教科書

    ビジネスドメインの分類・コアドメインの見極め・コンテキスト設計を、現代的な語彙で再構築した一冊。戦略的設計の土台をここで作る。

    ドメイン駆動設計をはじめよう : ソフトウェアの実装と事業戦略を結びつける実践技法
    この章の 1 冊 ドメイン駆動設計をはじめよう : ソフトウェアの実装と事業戦略を結びつける実践技法

    ビジネスドメインを軸にソフトウェア設計を事業戦略へ接続する

    この本で身につくこと
    • コアドメイン・汎用ドメイン・補完的ドメインの3分類でビジネス戦略とシステム境界の優先順位を判断できる
    • Bounded Context の設計とコンテキストマッピング(Partnership / Customer-Supplier / Conformist 等)を目的に応じて選択できる
    • 値オブジェクト・エンティティ・集約の使い分けと、ドメインイベントを用いた複雑なビジネスロジックのモデル化ができる
    • 腐敗防止層(Anti-Corruption Layer)でレガシーシステムや外部サービスとのモデル不一致を隔離する設計ができる

    想定読者: ビジネス要件を設計に反映する役割を担う中級エンジニア、アーキテクト、テックリード

    本の詳細を見る →
  5. 戦術と戦略を束ねる IDDD 邦訳の実装リファレンス

    IDDD の邦訳として、集約・ドメインイベント・CQRS までをコード付きで詳述する到達点。辞書的に引きながら設計判断の根拠を固める。

    実践ドメイン駆動設計
    この章の 1 冊 実践ドメイン駆動設計

    ヴォーン・ヴァーノン(Vaughn Vernon)による『Implementing Domain-Driven Design』(Addison-Wesley, 2013)の邦訳。

    本の詳細を見る →