PR:この記事にはアフィリエイトリンクが含まれます。
TypeScriptでドメイン駆動設計(DDD)を実装したい。そう思って集約のコード例を読んでも、なぜその形なのか分かりにくいことがあります。業務の言葉をモデルにし、何を一度に整合させるのか決める。そこから始まります。
境界づけられたコンテキストは、モデルと言葉が通用する業務上の範囲です。集約とコンテキストを具体例から学べる本を、扱う範囲や実装との距離も含めて見渡してみましょう。
本の早見表
| 本 | 主な特徴 | 参考価格(税込) |
|---|---|---|
つくりながら学ぶ! ドメイン駆動設計 実践入門 | カタログ管理を題材にTypeScriptで実装 | 3,729円 |
ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本 | 基本パターン、集約、テストを解説 | 3,960円 |
ドメイン駆動設計をはじめよう ―ソフトウェアの実装と事業戦略を結びつける実践技法 | 事業分析と実装方法の判断軸 | 3,960円 |
実践ドメイン駆動設計 | 戦略・戦術パターンを詳しく解説 | 5,720円 |
[入門]ドメイン駆動設計 ――基礎と実践・クリーンアーキテクチャ | 基礎と実践、クリーンアーキテクチャ | 2,200円 |
価格は税込の参考価格です。実売価格は時期や販売店によって変わるため、購入時には最新の表示を確かめてください。
TypeScriptで集約の実装例まで追いたい人には、カタログ管理を題材にした『つくりながら学ぶ! ドメイン駆動設計 実践入門』がおすすめです。パターンやテストの基礎を固めるなら、別の入門書も候補になります。
事業分析やコンテキスト間の関係を考えたい人には、『ドメイン駆動設計をはじめよう』が合います。戦術的パターンを深く調べるなら『実践ドメイン駆動設計』、短い本で要点をつかむなら『[入門]ドメイン駆動設計』が読みやすいでしょう。
DDDを本で学ぶ
ドメイン駆動設計は、開発者と業務担当者が共通の言葉でルールを表し、その内容をコードへ反映する進め方です。クラスに名前を付けることだけではありません。
たとえば商品を販売可能にするルールなら、商品名や価格の保存に加え、販売可能と判断する条件もモデルに置きます。変更の理由を業務の言葉で話せると、コードの形も追いやすくなりますね。
本を読むときは、値オブジェクトやエンティティの定義を暗記するより、題材の業務ルールがどの型や操作に表れているかに注目しましょう。用語とコードが結びつけば、別の業務を考えるときにも応用しやすくなります。
集約の役割
集約は、関連するオブジェクトをまとめ、ひとつの整合性境界として扱う単位です。外から更新するときは集約ルートを通し、内部の不変条件を守ります。
オンライン書店のカタログなら、書籍のタイトルや分類、掲載状態をまとめる設計が考えられます。タイトル変更時に空文字を許さないルールを集約内に置けば、呼び出し側で毎回同じ確認をせずに済みます。
集約を大きくしすぎると、小さな変更でも多くのデータを同時に扱うことになります。細かく分けすぎれば、ひとつの業務操作で複数の集約を更新する複雑さが増すところがあります。
境界を考えるときは、オブジェクト同士の関連数よりも、一度の操作で何を正しく保つ必要があるかに注目します。守るべき規則が見えると、集約の大きさにも理由が生まれます。
TypeScriptの集約
TypeScriptでは型で値の形を表せます。それでも型注釈だけで業務ルールまで守れるわけではありません。価格を単なるnumberで受け取ると、負の値が紛れ込む余地が残ります。
値オブジェクトを用意し、生成時に妥当性を検査します。以降の処理では有効な値として扱いやすくなり、金額や識別子を別の型にすれば引数の取り違えも防ぎやすいですね。
集約ルートには、データを直接書き換えるsetterより、業務上の操作を表すメソッドを置きます。掲載状態を変える操作に、変更できる条件も含める形です。
永続化や画面表示の都合をドメインモデルへ持ち込みすぎないことも大切です。リポジトリを介して集約を取得・保存し、アプリケーションサービスが操作の順序を整えれば、役割を分けられます。
コンテキスト境界
境界づけられたコンテキストは、モデルと言葉が一貫した意味を持つ範囲です。同じ商品でも、カタログでは掲載情報、在庫管理では保管数量、会計では売上対象を指すことがあります。
全社共通の大きな商品モデルへ無理に統一すると、ある業務の変更が別の業務のコードに波及しかねません。コンテキストごとにモデルを分ければ、それぞれのルールを保ちやすくなります。
業務上の意味が異なる場所を探すと、境界を考える手がかりが見つかります。言葉の定義が変わる箇所にも注目してください。
イベントストーミングや業務担当者との会話も、違いを見つける助けになります。用語や判断、業務イベントを書き出すと、ひとつのモデルでは扱いにくい部分が具体的に見えてくるでしょう。
境界間の連係
別々のコンテキストを設けても、業務全体を動かすには連係が要ります。カタログに商品が登録されたイベントを在庫管理へ伝えるなど、境界をまたぐ情報の受け渡しも設計します。
連係では、片方の内部モデルをもう片方へそのまま公開する形を避けます。APIやイベントの形を決め、受け取る側で自分のモデルに合わせて変換すれば、変更の影響を抑えられます。
コンテキストマップは、各コンテキストの関係や依存方向を整理する図です。システム間の接続に加え、どちらのモデルが主導権を持つか話し合う材料にもなります。
実装例を追う
TypeScriptでDDDを実装したい人には、『つくりながら学ぶ! ドメイン駆動設計 実践入門』がおすすめです。オンライン書店サービスのカタログ管理を題材に、分析からコードまでを一続きで扱います。
イベントストーミングとUMLによる分析・モデリングを経て、値オブジェクト、エンティティ、集約へ進みます。さらにドメインサービス、リポジトリ、アプリケーションサービスも扱うので、集約の周辺にある役割まで追えます。
2026年1月発売で、368ページ。参考価格は3,729円(税込)です。各章のコードをGitHubリポジトリで確認でき、紙面の説明とTypeScriptの実装を照らし合わせながら読めます。
集約の責務やリポジトリとの関係を、具体的な題材に沿って確かめたい人に合う一冊です。実装を手元のプロジェクトへつなげたい場合にもおすすめします。
基礎とテスト
『ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本』は、値オブジェクトやエンティティなどの基本パターンから、集約、境界づけられたコンテキストへ進みます。392ページで、集約の区切り方やコンテキストマップも扱います。
リポジトリのテストやテスト用リポジトリ、ユニットテストの章もあります。モデルをどう検証するかまで学べる構成です。SQLリポジトリやORMに加え、CLIやMVCフレームワークの例も取り上げています。
設計用語とテストの考え方から固めたい人には、この本がおすすめです。パターンを読み、テストで確かめる内容まで把握できます。
『[入門]ドメイン駆動設計 ――基礎と実践・クリーンアーキテクチャ』は160ページで、参考価格は2,200円(税込)。短い分量で基礎を押さえられます。イベントストーミングやイベントソーシング、クリーンアーキテクチャも扱い、設計を開発プロセスへ取り入れる視点を得られます。
戦略設計の本
『ドメイン駆動設計をはじめよう ―ソフトウェアの実装と事業戦略を結びつける実践技法』は、事業戦略とソフトウェア実装を結びつける考え方を広く学べる本です。408ページで、境界づけられたコンテキストやコンテキスト間の連係、文脈マップを取り上げます。
業務ロジックの実装方法として、トランザクションスクリプト、アクティブレコード、ドメインモデルを比較します。業務の状況に応じた判断軸を整理したい人におすすめです。
この本では、TypeScriptのコードを手順どおり追うより、DDDを導入する背景や戦略設計から実装方法を選ぶ判断軸を学べます。参考価格は3,960円(税込)です。
『実践ドメイン駆動設計』は616ページの詳しい解説書です。ドメインやサブドメイン、境界づけられたコンテキストから、集約、ドメインイベント、ファクトリ、リポジトリまで幅広く参照できます。
今回の候補では価格も分量も大きめです。概念を深く調べたい人には、手元に置く参照書としておすすめします。
結論
TypeScriptで集約の実装まで学ぶなら、『つくりながら学ぶ! ドメイン駆動設計 実践入門』をまず選んでください。分析からTypeScriptのコードまでつながり、今回のテーマに最も正面から応えます。
用語やテストの基礎が気になる人は『ドメイン駆動設計入門』を先に読むとよいでしょう。事業との関係やコンテキスト設計を考える人には、『ドメイン駆動設計をはじめよう』もおすすめです。
短時間で要点を押さえるなら『[入門]ドメイン駆動設計』、パターンを詳しく調べるなら『実践ドメイン駆動設計』が合います。価格は参考価格を目安にし、実売額は購入時点で確かめてください。
Amazon の PC をスコア化してみた
Amazonにある8〜14インチの小型WindowsタブレットやノートPCを、スペック別にスコア化して比較・ランキング。




![[入門]ドメイン駆動設計 ――基礎と実践・クリーンアーキテクチャ](https://m.media-amazon.com/images/I/51Fo40EmhyL._SL500_.jpg)

