実践ドメイン駆動設計(Vaughn Vernon)
書籍情報
- 著者:Vaughn Vernon(著), 髙木正弘(訳)
- 発行日:2015-03-16
- ISBN:9784798131610
- URL:https://www.shoeisha.co.jp/book/detail/9784798131610
書籍目次
- 序文
- 実践ドメイン駆動設計への賛辞
- 日本語版への賛辞
- はじめに
- 謝辞
- 著者について
- 訳者まえがき
- 本書の読み方
- 第1章 DDDへの誘い
- 1.1 私にもできるの?
- 1.2 あなたがDDDをすべき理由
- 1.3 DDDを行う方法
- 1.4 DDDを採用する事業価値
- 1.5 DDDの導入にあたっての課題
- 1.6 現実味のあるフィクション
- 1.7 まとめ
- 第2章 ドメイン、サブドメイン、境界づけられたコンテキスト
- 2.1 全体像
- 2.2 なぜそれほどまでに戦略的設計を重視するのか
- 2.3 実世界におけるドメインとサブドメイン
- 2.4 境界づけられたコンテキストの意味を知る
- 2.5 サンプルのコンテキスト
- 2.6 まとめ
- 第3章 コンテキストマップ
- 3.1 なぜそんなにもコンテキストマップは重要なのか
- 3.2 まとめ
- 第4章 アーキテクチャ
- 4.1 CIOへのインタビュー
- 4.2 レイヤ
- 4.3 ヘキサゴナル(ポートとアダプタ)アーキテクチャ
- 4.4 サービス指向
- 4.5 Representational State Transfer(REST)
- 4.6 コマンドクエリ責務分析(CQRS)
- 4.7 イベント駆動アーキテクチャ
- 4.8 データファブリックおよびグリッドベース分散コンピューティング
- 4.9 まとめ
- 第5章 エンティティ
- 5.1 なぜエンティティを使うのか
- 5.2 一意な識別子
- 5.3 エンティティおよびその特性の発見
- 5.4 まとめ
- 第6章 値オブジェクト
- 6.1 値の特徴
- 6.2 ミニマリズムを考慮した結合
- 6.3 標準型を値として表現する
- 6.4 値オブジェクトのテスト
- 6.5 実装
- 6.6 値オブジェクトの永続化
- 6.7 まとめ
- 第7章 サービス
- 7.1 ドメインサービスとは何か(...の前に、ドメインサービスとは何でないのか)
- 7.2 本当にサービスが必要なのかをたしかめる
- 7.3 ドメインにおけるサービスのモデリング
- 7.4 サービスのテスト
- 7.5 まとめ
- 第8章 ドメインイベント
- 8.1 いつ(そしてなぜ)、ドメインイベントを使うのか
- 8.2 イベントのモデリング
- 8.3 ドメインモデルからのイベントの発行
- 8.4 リモートの境界づけられたコンテキストへの通知
- 8.5 イベントストア
- 8.6 格納したイベントの転送のためのアーキテクチャスタイル
- 8.7 実装
- 8.8 まとめ
- 第9章 モジュール
- 9.1 モジュールを使った設計
- 9.2 モジュールの基本的な命名規約
- 9.3 モデルに対応するモジュール名の命名規約
- 9.4 アジャイルプロジェクト管理コンテキストのモジュール
- 9.5 他のレイヤにおけるモジュール
- 9.6 境界づけられたコンテキストの前にモジュールを検討する
- 9.7 まとめ
- 第10章 集約
- 10.1 コアドメイン(スクラム)における集約の使用
- 10.2 ルール:真の不変条件を、整合性の境界内にモデリングする
- 10.3 ルール:小さな集約を設計する
- 10.4 ルール:他の集約への参照には、その識別子を利用する
- 10.5 境界の外部では結果整合性を用いる
- 10.6 ルールに違反する理由
- 10.7 発見による知見の獲得
- 10.8 実装
- 10.9 まとめ
- 第11章 ファクトリ
- 11.1 ドメインモデルにおけるファクトリ
- 11.2 集約ルート上のファクトリメソッド
- 11.3 ファクトリとしてのサービス
- 11.4 まとめ
- 第12章 リポジトリ
- 12.1 コレクション指向のリポジトリ
- 12.2 永続指向のリポジトリ
- 12.3 その他の振る舞い
- 12.4 トランザクション管理
- 12.5 型の階層
- 12.6 リポジトリとデータアクセスオブジェクトとの比較
- 12.7 リポジトリのテスト
- 12.8 まとめ
- 第13章 境界づけられたコンテキストの結合
- 13.1 統合の基本
- 13.2 RESTfulリソースを使った統合
- 13.3 メッセージングを使った統合
- 13.4 まとめ
- 第14章 アプリケーション
- 14.1 ユーザーインターフェース
- 14.2 アプリケーションサービス
- 14.3 複数の境界づけられたコンテキストの合成
- 14.4 インフラストラクチャ
- 14.5 エンタープライズコンポーネントコンテナ
- 14.6 まとめ
- 付録A 集約とイベントソーシング:A+ES
- アプリケーションサービスの内部構造
- コマンドハンドラ
- ラムダ構文
- 並行性制御
- 構造上の束縛から開放されたA+ES
- パフォーマンス
- イベントストアの実装
- リレーショナルデータベースへの永続化
- BLOBの永続化
- 集約に注目する
- リードモデルプロジェクション
- 集約の設計への利用
- イベントの拡張
- 活用できるツールやパターン
- 契約の自動生成
- ユニットテストとスペシフェケーション
- 関数型言語におけるイベントソーシング
- 付録B 参考文献