ドメイン駆動設計の本4選|境界づけられたコンテキスト・集約・イベントストーミングを実践で学ぶ

PR:この記事にはアフィリエイトリンクが含まれます。

業務ルールが増えてくると、機能を足すだけでは変更の影響範囲を追いにくくなります。ドメイン駆動設計(DDD)は、業務の言葉や判断をソフトウェアのモデルに映し、変化を受け止めやすくする考え方です。

境界づけられたコンテキストや集約は、名前だけ知っていても設計にはつなげにくいもの。イベントストーミングで業務の流れを見える形にすると、それぞれが担う役割もつかめます。

この記事では、DDDの基本から実践まで扱う4冊を取り上げます。境界づけられたコンテキスト、集約、イベントストーミングはどうつながるのか。書籍ごとの個性とあわせて見ていきましょう。

4冊の早見表

DDD本と一口に言っても、考え方を整理する本もあれば、コードを書きながら設計を追う本もあります。まずは題材や扱う範囲を表で見渡してみましょう。

書籍主な内容特徴
[入門]ドメイン駆動設計――基礎と実践・クリーンアーキテクチャ[入門]ドメイン駆動設計――基礎と実践・クリーンアーキテクチャDDD、イベントストーミング、イベントソーシング160ページで全体像を整理
つくりながら学ぶ! ドメイン駆動設計 実践入門つくりながら学ぶ! ドメイン駆動設計 実践入門集約、UML、TypeScript、Outboxパターン書店カタログを題材に実装
ドメイン駆動設計をはじめようドメイン駆動設計をはじめよう事業分析、集約、境界づけられたコンテキスト5つのコンテキストを扱う事例研究
実践ドメイン駆動設計実践ドメイン駆動設計コンテキストマップ、イベント、集約など戦略から実装まで広く解説

参考価格は『[入門]ドメイン駆動設計――基礎と実践・クリーンアーキテクチャ』が税込2,200円、『ドメイン駆動設計をはじめよう』が税込3,960円、『実践ドメイン駆動設計』が税込5,720円です。いずれも定価を目安にしてください。実売価格は時期や販売店で変わります。

同じDDD本でも、読み終えたときに持ち帰るものは違います。用語を押さえるのか、実装の流れを追うのか、事業と設計の関係を学ぶのか。読みたいことが決まると各書の違いも見えやすくなります。

DDDの考え方

DDDの出発点は、業務を理解し、その理解をソフトウェアのモデルに結びつけることです。まず業務担当者と何を解決する仕組みなのかを考え、モデルに反映します。

たとえば「商品」という言葉。カタログでは掲載情報を指し、注文では購入時点の価格や数量を含む明細を指すかもしれません。言葉の意味を現場で確かめることが、モデルのずれを防ぐ第一歩です。

共有する言葉は、会話だけでなく設計書やコードにも表れます。業務担当者が「出品を停止する」と話すなら、ソフトウェアにもその判断や状態の変化が伝わる名前を置く。認識違いに気づく手がかりになりますね。

DDDには、事業の役割からシステム全体を分ける戦略的設計と、オブジェクトや集約で業務ルールを表す戦術的設計があります。境界づけられたコンテキストは前者、集約は後者の代表例です。

境界づけられた文脈

境界づけられたコンテキストとは、特定のモデルと言葉が有効に使われる範囲のこと。同じ用語でも、範囲が変われば意味や判断基準は変わります。その違いを一つのモデルに押し込まないための境界、と考えると分かりやすいでしょう。

オンライン書店なら、カタログでの商品は「掲載する情報」、注文での商品は「購入明細」、在庫管理での商品は「保管や引き当ての対象」です。名前は同じでも、必要な属性や更新のタイミングは異なります。

境界を考えるとき、画面やテーブルの区切りだけで決めるのは早計です。業務の責任、使う言葉、変更の理由がどこで変わるのか。そこをたどると、コンテキストの候補が浮かびます。イベントストーミングも発見の助けになります。

コンテキストを分けても、システムやチームまで同じ数に分割する必要はありません。まずモデルが有効な範囲を見定め、ほかの範囲と何を受け渡すのかを考えます。ここを飛ばすと、用語やデータの食い違いが残りがちです。

集約で守る整合性

集約は、業務ルールを守りながら状態を保つためのまとまりです。外部からの変更は集約ルートを通し、ルートが内部の更新を制御します。では、どこまでを一つにするのか。出発点は、同時に守るべきルールです。

注文で考えてみましょう。「確定する注文には明細が一件以上ある」という条件なら、確定操作の際に注文の状態を確認できます。注文ルートがその操作を担えば、条件を確かめてから状態を変える流れを表せます。

関連するものをすべて一つの集約に入れると、変更が集中し、同時更新や処理の負荷が重くなりがちです。反対に細かく分けすぎると、集約をまたぐ処理の整合性を別の仕組みで扱うことに。境目の見極めが肝心です。

集約は、テーブルやクラスをまとめるための言葉ではありません。業務上の不変条件をどこで守るかを示す設計判断です。イベントや境界づけられたコンテキストとあわせて考えると、その役割がすっきり見えてきます。

イベントストーミング

イベントストーミングは、業務に詳しい人と開発者が、出来事の流れを並べて業務を理解するワークショップです。「注文が確定された」「商品が公開された」など、すでに起きた事実を時系列に置いていきます。

出来事の前後をたどると、誰が何をしたのか、どんな条件で処理が進むのかを整理できます。外部の仕組みとつながる箇所も見えてきます。付箋を並べながら話せるため、最初から完成した業務図を描こうとしなくて大丈夫です。

たとえば「商品が公開された」の前に「掲載内容を審査する」という判断があり、その結果を受けてカタログが更新される。流れをたどるうちに、判断が食い違う場所や、部署ごとに言葉の意味が異なる場所も議論に上がります。

イベントストーミングで得られるのは、業務への理解と必要なモデルについての仮説です。クラス図や実装コードの完成は目的に含まれません。イベントソーシングはイベントを状態管理に使う設計方式。名前は似ていますが、役割は別です。

4冊の読みどころ

『[入門]ドメイン駆動設計――基礎と実践・クリーンアーキテクチャ』は、増田亨氏ら6名による160ページのB5判書籍です。イベントストーミングでドメインを発見し、イベントソーシングやクリーンアーキテクチャまで扱います。DDDの全体像を短く把握したい人におすすめです。

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

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

技術評論社

Amazonで見る

『つくりながら学ぶ! ドメイン駆動設計 実践入門』は山下祐也著、増田亨監修で全368ページ。オンライン書店のカタログ管理を題材に、イベントストーミングによる業務分析とUMLモデリングからTypeScript実装まで扱います。値オブジェクトや集約にも触れ、章ごとのコードをGitHubで確認できます。

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

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

マイナビ出版

Amazonで見る

『ドメイン駆動設計をはじめよう――ソフトウェアの実装と事業戦略を結びつける実践技法』は、Vlad Khononov著、408ページ。事業分析からモデルを導く考え方を扱い、集約の発見や境界づけられたコンテキストへの分割を解説します。5つのコンテキストを扱う事例研究もあります。

ドメイン駆動設計をはじめよう

ドメイン駆動設計をはじめよう

オライリー・ジャパン

Amazonで見る

『実践ドメイン駆動設計』は、ヴォーン・ヴァーノン著、616ページのB5変判です。コンテキストマップやドメインイベントに加え、集約やリポジトリなども扱います。戦略的設計から実装パターンまで幅広く参照でき、基礎を学んだ後に手元で確認する用途にも合います。

実践ドメイン駆動設計

実践ドメイン駆動設計

翔泳社

Amazonで見る

結論

DDDの用語を初めて学ぶなら、まずは『[入門]ドメイン駆動設計』で全体像をつかむのが手軽です。TypeScriptで実装まで試したい人には、『つくりながら学ぶ! ドメイン駆動設計 実践入門』が合います。概念とコードを往復できますよ。

事業分析から境界づけられたコンテキスト、集約まで一冊で体系的に学ぶなら、『ドメイン駆動設計をはじめよう』を第一候補にしてください。実践パターンを幅広く参照したい人には、『実践ドメイン駆動設計』をおすすめします。

イベントストーミングで業務を捉え、モデルの境界を定め、集約でルールを守る。この流れを自分の仕事に重ねて読めば、DDD本は用語集にとどまりません。いまの課題に近い題材から学んでみてください。

【2026年版】Amazonで買えるおすすめノートPCランキング!コスパ最強のモデルはこれだ
DELLのノートパソコンがテーブルの上に置いてある画像

Amazon の PC をスコア化してみた

Specsy Hub

Amazonにある8〜14インチの小型WindowsタブレットやノートPCを、スペック別にスコア化して比較・ランキング。

タイトルとURLをコピーしました