書籍詳細(「実践ドメイン駆動設計」から学ぶDDDの実装入門)

「実践ドメイン駆動設計」から学ぶDDDの実装入門 書影

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に挑戦してみてください。
「実践ドメイン駆動設計」から学ぶ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はありません。

お問い合わせ

書籍に関するご質問や誤りのご報告、ご意見・ご感想などをお寄せください。

Powered by メールフォーム 『オレンジフォーム』