「実践ドメイン駆動設計」から学ぶDDDの実装入門(青木淳夫, 山田祥寛)
書籍情報
- 著者:青木淳夫(著), 山田祥寛(著)
- 発行日:2019-05-31
- ISBN:9784798161495
- URL:https://www.shoeisha.co.jp/book/detail/9784798161495
書籍目次
- クレジット
- はじめに
- 第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 まとめ
- 参考資料
- 著者プロフィール
- 奥付