実践ドメイン駆動設計
ジッセンドメインクドウセッケイ
- 著者:
- ヴォーン・ヴァーノン / 高木 正弘(ヴォーン ヴァーノン / タカギ マサヒロ)
- 出版社:
- 翔泳社
- 出版日:
- 2015年03月16日頃
- ISBN:
- 9784798131610
- シリーズ:
- Object Oriented Selection
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
『エリック・エヴァンスのドメイン駆動設計』は、2003 年の刊行だったにもかかわらず、大型ソフトウェア構築時につきまとう不透明感を払拭するための指針として現役技術者に多大な影響を与えた。ある意味、エリック・エヴァンスの先見性によって、今日、必要とされるパタン / アンチパタンが整理されていたためだ。
とはいえ、それからすでに 11 年。ベースとなるオブジェクト指向はそれほど大きな変革はないものの、この 10 年の間にコンピューティングの対象は大きく増え、さらにドメイン駆動設計をコトバでは知っているものの、経験値のまだ低い技術者の増加もあり、理論だけではなく現状に則した形で体得する必要性が増している。
本書は DDD の考え方はもちろん、コミュニティや実際のビジネスシーンのなかから実践的な方法論を精錬し、いわば 21 世紀 (初頭) 型ドメイン駆動設計を伝授するものであり、現在のニーズに合致する内容で構成されている。
第 1 章 DDD への誘い
第 2 章 ドメイン、サブドメイン、境界づけられたコンテキスト
第 3 章 コンテキストマップ
第 4 章 アーキテクチャ
第 5 章 エンティティ
第 6 章 値オブジェクト
第 7 章 サービス
第 8 章 ドメインイベント
第 9 章 モジュール
第 10 章 集約
第 11 章 ファクトリ
第 12 章 リポジトリ
第 13 章 境界づけられたコンテキストの結合
第 14 章 アプリケーション
技書の森解説
エリック・エヴァンスが提唱した ドメイン駆動設計 を、実際のシステム設計にどう持ち込むかを扱う翻訳書が『実践ドメイン駆動設計』です。原タイトルは IMPLEMENTING DOMAIN-DRIVEN DESIGN で、ヴォーン・ヴァーノンの著書を髙木 正弘が訳し、翔泳社の Object Oriented Selection の一冊として 2015 年 3 月に刊行されました。副題「エリック・エヴァンスが確立した理論を実際の設計に応用する」が示すとおり、2003 年刊のエヴァンスの本で整理された考え方を前提に、それを現場の設計判断へつなぐことが本書の狙いです。
戦略から戦術へ並ぶ全 14 章の構成
版元ドットコムが掲げる目次は第 1 章「DDD への誘い」から第 14 章「アプリケーション」までの 14 章です。前半の第 2 章「ドメイン、サブドメイン、境界づけられたコンテキスト」と第 3 章「コンテキストマップ」で、どこで線を引いてモデルを分けるかという大きな設計を扱い、第 4 章「アーキテクチャ」を挟んで、第 5 章「エンティティ」から第 12 章「リポジトリ」までは値オブジェクト、サービス、ドメインイベント、モジュール、集約、ファクトリと、コードの単位に近い部品が 1 章ずつ並びます。そのあとに第 13 章「境界づけられたコンテキストの結合」と第 14 章「アプリケーション」が置かれて終わります。大きな区切りから始めて部品へ降り、最後に分けたモデルどうしのつなぎ方へ戻る並びは、部品の作り方より先に境界の引き方を固めるべきだという立場の表れと読めます。
なぜ境界の引き方と集約がつまずきやすいのか
ドメイン駆動設計の用語は、大きく 2 つの層に分かれます。1 つは 境界づけられたコンテキスト やコンテキストマップのような戦略の概念で、同じ「顧客」や「商品」という言葉でも部署や業務ごとに意味が違うことを認め、モデルが一貫した意味を持つ範囲を区切ります。もう 1 つはエンティティ、値オブジェクト、リポジトリのような戦術の部品で、区切った内側をコードとして組み立てます。実務で起きやすいのは、戦術の部品だけを取り入れて境界を引かないまま進め、巨大な 1 つのモデルに部品の名前だけが付いている状態です。もう 1 つのつまずきは 集約 の大きさで、一貫性を保ちたい範囲を広く取りすぎると、更新が衝突しやすく性能も落ちます。本書が戦略の章を先に置き、集約に独立した第 10 章を割いているのは、この 2 つが理論を読んだだけでは身につきにくい部分だからだと読めます。
エヴァンスの本との関係と、読む前の前提
版元の紹介文は、エヴァンスの本の刊行から 11 年が経ち、ドメイン駆動設計を言葉では知っていても経験値がまだ低い技術者が増えたことを背景に挙げ、本書をコミュニティや実際のビジネスの場から実践的な方法論を精錬した「21 世紀 (初頭) 型ドメイン駆動設計」と位置づけています。エヴァンスの本を読んだものの自分のシステムにどう当てはめるかで止まっている人が、まず手に取る位置づけの本です。オブジェクト指向による設計の基本と、業務システムの開発経験があると読み進めやすくなります。逆に、ドメイン駆動設計という言葉を初めて聞く段階で、短時間で概要だけをつかみたい人には分量が重く、薄い入門書で全体像を見てから戻るほうが近道です。2015 年刊の翻訳書なので、取り上げられる周辺技術はその時点のものだと考えて読むのが妥当です。
境界の引き方で議論が止まりがちなチームや、集約の大きさを決めかねてモデルが肥大していく案件を抱えている人にとって、戦略と戦術を 1 冊の中で順につなげてくれる本書は、設計の判断を言葉で説明できるようにする投資になります。困っている章から拾い読みし、必要に応じて第 2 章と第 3 章へ戻る使い方でも、元を取りやすい一冊です。
言及した記事 (15 件)
DDDを実践していると思ったら軽量DDDで巨大な泥団子に向かっていた話
♡ 24jpa, ポエム, IDDD, 軽量DDD, 戦略的設計「IDDD本から理解するドメイン駆動設計」輪読会まとめ
♡ 22オブジェクト指向, DDD, IDDD, ミライトデザインチームで使われる単語を統一するためのデザインシステム(#1: デザイントークン編)
♡ 15Design, プロダクトデザイン, Figma, デザインシステム, デザイントークン脱・初心者!JavaのSpring/Spring Bootで「現場で生き残る設計力」が身につくおすすめ本ロードマップ
♡ 6Java, spring, 初心者, 書籍, SpringBoot【DDD】「全人類がDDDを熟知した綺麗な世界」という夢物語を捨てて、泥臭く始めよう
♡ 4DDD, ドメイン駆動設計【ミライトデザイン社内勉強会#14】「IDDD本から理解するドメイン駆動設計」輪読会~第5章「エンティティ」~
♡ 3オブジェクト指向, DDD, IDDD, ミライトデザインドメイン駆動設計(DDD)入門
♡ 1ドメイン駆動設計『ドメイン駆動トランスフォーメーション』の要点整理とアンチパターン5選
♡ 1初心者, DDD, アンチパターン, 学習, OREILLYデータモデル × 仕様駆動開発 = 迷子にならないシステム開発フロー
♡ 1ドメイン駆動設計, データモデル, AI駆動開発, バイブコーディング, 仕様駆動開発顧客が本当に必要だったものとドメイン駆動開発
♡ 1システム開発, システム設計
この本は技書デッキのカードです (攻撃 2 / 基本カード 1 枚除く / 使い切り) 図鑑でこの本を見る
この本に興味がある方におすすめ
関連する本
関連記事
Web デザイン本ガイド - HTML/CSS、Figma、Photoshop を学ぶ順番
Web デザインを独学する本の選び方を「コーディング、ツール、デザイン原則」の 3 本柱で整理。HTML/CSS の入門書、Figma と Photoshop の教本、レイアウトと配色の定番書を、2026 年 8 月時点の収載書から学ぶ順番つきで解説します。
設計 / アーキテクチャ本ガイド - 設計力を上げる技術書の選び方
ソフトウェア設計を学べる技術書をコード / モジュール / システムの 3 レイヤーに分類し、レベルに応じた読む順番の指針を紹介します。
リーダブルコードの次に読む本 - ステップアップの読書ルート
リーダブルコードを読み終えた後、設計力を段階的に高めるための読書ルートと、各レベルで学ぶべきテーマを紹介します。
関連用語
ドメイン駆動設計 (DDD)
ビジネスドメインの知識を中心に据え、ドメインエキスパートと開発者が共通言語で協働しながらソフトウェアを設計する手法
貧血ドメインモデル
ドメインオブジェクトがデータのみを持ち、ビジネスロジックが外部のサービスに散在するアンチパターン
DNS
ドメイン名を IP アドレスに変換するインターネットの名前解決システム
腐敗防止層
レガシーシステムと新システムなど、データモデルや用語の異なるシステムの間に変換層を設け、一方の設計を汚染から守るパターン
リポジトリパターン
データアクセスロジックをカプセル化し、ビジネスロジックからデータストアの詳細を隠蔽するパターン
集約
ドメイン駆動設計において、一貫性を保つべきオブジェクト群をまとめ、単一のルートエンティティ経由でアクセスする設計パターン