ISBN: 978-4-7981-6149-5
「実践ドメイン駆動設計」から学ぶDDDの実装入門
| 著者 | WINGSプロジェクト 青木 淳夫 |
|---|---|
| 監修 | 山田祥寛 |
| 出版社 | 翔泳社 |
| 価格 | 2,500円(税別) |
| 判型 | B5判・1色 |
| ページ数 | 184ページ |
| 発売日 | 2019年5月31日 |
| シリーズ | CodeZine BOOK |
| 対象レベル | 上級 |
普段の開発でDDD実装を始める方法を解説
本書は、ヴァーン・ヴァーノン著「Implementing Domain?Driven Design」(邦題「実践ドメイン駆動設計-エリック・エヴァンスが確立した理論を実際の設計に応用する」)の流れに沿って、重要な部分にフォーカスし、ドメイン駆動(DDD)について理解することをお手伝いします。ぜひ、本書をきっかけに、DDDに挑戦してみてください。
更新履歴
- 正誤訂正:2019年7月13日 更新
目次
- 第1章 「DDDへの誘い」~ドメイン駆動設計のメリットと始め方~
- 1.1 [WHAT]ドメイン駆動設計の概要
- 1.2 [WHO]DDDを始められる人とは
- 1.3 [WHY1]DDDを導入するメリット
- 1.4 [WHY2]開発費用を「コスト」から「事業投資」へ
- 1.5 [WHY3]ドメインモデルによる「複雑さ」への対処
- 1.6 [HOW1]ユビキタス言語で設計する方法
- 1.7 [HOW2]DDD導入に向けた周りへの説得方法
- 1.8 [HOW3]DDD導入に向けた優先順位/体制
- 1.9 まとめ
- 第2章 「ドメイン」「サブドメイン」「境界づけられたコンテキスト」~DDDで取り組む領域~
- 2.1 「ドメイン」と「境界づけられたコンテキスト」の全体像
- 2.2 ドメインとは
- 2.3 「境界づけられたコンテキスト」とは
- 2.4 IDDD本の架空サンプルプロジェクト「SaaSOvation」
- 2.5 分割した「ドメイン」と「境界づけられたコンテキスト」の評価方法
- 2.6 まとめ
- 第3章 「コンテキストマップ」~境界づけられたコンテキスト間のチーム関係~
- 3.1 コンテキストマップとは
- 3.2 コンテキストマップの「組織的パターン」と「統合パターン」
- 3.3 チームの関係を示す「組織的パターン」
- 3.4 境界づけられたコンテキスト間の連携方法を示す「統合パターン」
- 3.5 SaaSOvationにおけるコンテキストマップの例
- 3.6 SaaSOvationにおけるコンテキストの統合方式例
- 3.7 コンテキスト間の連携のシーケンス図
- 3.8 SaaSOvationの組織的パターン
- 3.9 まとめ
- 第4章 「アーキテクチャ」~レイヤからヘキサゴナルへ~
- 4.1 本章で紹介するアーキテクチャの種類
- 4.2 特定のアーキテクチャに依存しないDDD
- 4.3 SaaSOvationのCIOに聞くアーキテクチャの変遷
- 4.4 レイヤからDIP、そしてヘキサゴナルへ
- 4.5 レイヤ化アーキテクチャとは
- 4.6 依存関係逆転の原則(DIP)を用いたレイヤ化アーキテクチャ
- 4.7 ヘキサゴナルアーキテクチャ
- 4.8 ヘキサゴナルでのサービス指向のアプローチ
- 4.9 ヘキサゴナルで使用されるREST
- 4.10 コマンドクエリ責務分離
- (CQRS:Command Query Responsibility Segregation)
- 4.11 DDDにおけるCQRSでの流れ
- 4.12 イベント駆動アーキテクチャ
- 4.13 まとめ
- 第5章 「エンティティ」~一意な識別子で同一性を識別~
- 5.1 エンティティと値オブジェクト
- 5.2 モデリングとエンティティ発見の流れ
- 5.3 まとめ
- 第6章 「値オブジェクト」~振る舞いを持つ不変オブジェクト~
- 6.1 値オブジェクトとは
- 6.2 値オブジェクトの特徴
- 6.3 複数コンテキストの結合を緩やかにする値オブジェクト
- 6.4 ドメインモデルの区分や種類を示す「標準型(タイプコード)」
- 6.5 値オブジェクトの実装コード
- 6.6 まとめ
- 第7章 「ドメインサービス」~複数の物を扱うビジネスルール~
- 7.1 DDDにおけるサービスとは
- 7.2 DDDの「ドメインサービス」と一般的な「サービス」の違い
- 7.3 ドメインサービスの例
- 7.4 ドメインサービスの失敗例
- 7.5 ドメインサービス導入時のポイント
- 7.6 ドメインサービスの設計方法
- 7.7 まとめ
- 第8章 「ドメインイベント」~出来事を記録して活用~
- 8.1 ドメインイベントとは
- 8.2 ドメインイベントがもたらすメリット
- 8.3 ドメインイベントの導入
- 8.4 「ドメインイベント」クラスのモデリング
- 8.5 基本的なイベント送受信方法
- 8.6 他システム(他の境界づけられたコンテキスト)へのイベント送信
- 8.7 イベントストアとは
- 8.8 自立型のサービスのメリット
- 8.9 メッセージングミドルウェアによる連携方法
- 8.10 まとめ
- 第9章 「モジュール」~高凝集で疎結合にまとめる~
- 9.1 モジュールとは
- 9.2 モジュールの設計方法
- 9.3 モジュールの命名規約
- 9.4 モジュール間の依存関係
- 9.5 アプリケーションレイヤのモジュール分割
- 9.6 まとめ
- 第10章 「集約」~トランザクション整合性を保つ境界~
- 10.1 DDDにおける集約
- 10.2 IDDDのサンプルプロジェクトで考える集約
- 10.3 集約の設計におけるルール
- 10.4 基本ルールに反する例外パターン
- 10.5 集約の実装コード例
- 10.6 集約のコーディング時に役立つ法則
- 10.7 まとめ
- 第11章 「ファクトリ」~複雑な生成をユビキタス言語でシンプルに~
- 11.1 ファクトリとは
- 11.2 ファクトリを使う理由
- 11.3 ファクトリの設計
- 11.4 まとめ
- 第12章 「リポジトリ」~集約の永続化管理を担当~
- 12.1 リポジトリとは
- 12.2 リポジトリを利用する「アプリケーションサービス」
- 12.3 コレクション指向のリポジトリ
- 12.4 永続指向のリポジトリ
- 12.5 まとめ
- 第13章 「境界づけられたコンテキストの統合」~分散システム設計~
- 13.1 「境界づけられたコンテキスト」と「コンテキストマップ」
- 13.2 分散システムの基本
- 13.3 コンテキスト間の「データ交換フォーマット」
- 13.4 イベントを連携する「Notification(通知)」の仕組み
- 13.5 コンテキスト間における連携アーキテクチャ
- 13.6 RESTfulリソースを用いた統合アーキテクチャ
- 13.7 メッセージングを使った統合アーキテクチャ
- 13.8 まとめ
- 第14章 「アプリケーション」~ドメインモデルを利用するクライアント~
- 14.1 ドメインモデルを利用するアプリケーションとは
- 14.2 ドメイン層とUI層間における情報の受け渡し方法
- 14.3 複数の境界づけられたコンテキストの統合・合成
- 14.4 UI層での描画に関わるモデル
- 14.5 アプリケーション層における実装
- 14.6 まとめ
- 14.7 参考資料
正誤表
| 該当頁 | 該当箇所 | 修正刷 |
|---|---|---|
| 訂正箇所 | 訂正事項 | 更新日 |
| p.102 | 本文 下から2行目 | - |
| この分散トランザクションの導入は製品固有の知識が必要ないため、 | この分散トランザクションの導入は製品固有の知識が必要なため、 | 2019/07/13 |
| p.168 | 図14.3 | - |
| (2)DPO[Data Payload Object] | (2)DPO[Domain Payload Object] | 2019/07/13 |
FAQ
現在、FAQはありません。
お問い合わせ
書籍に関するご質問や誤りのご報告、ご意見・ご感想などをお寄せください。
お問い合わせの前にFAQ・正誤表をご確認ください。すでに掲載済みの内容については個別回答が難しい場合があります。