ISBN 9784798121963

エリック・エヴァンスのドメイン駆動設計 : ソフトウェア開発の実践

エリック・エヴァンスのドメイン駆動設計 : ソフトウェア開発の実践
出版社
翔泳社
刊行
2011-04

概要

ドメインモデルを軸にソフトウェアの複雑性を制御する設計体系を習得する

想定読者

業務アプリケーションの設計に行き詰まりを感じている中〜上級バックエンドエンジニア。特にビジネスロジックの置き場所や巨大クラスの分割に課題を持つ人

こんな人には向いていない

  • OOP(クラス設計・インターフェース・継承)を習得する前の入門段階のエンジニア。DDD初心者が学習途中で挫折するケースが多いことがQiita上の複数記事で指摘されており、設計経験なしに読み始めると概念の密度に消耗しやすい
  • 動作するコードサンプルから直接学びたい読者。本書はパターンと概念の整理が中心であり、実装寄りの解説を主な目的として読む場合は補完書籍との併用が必要になる
  • シンプルなCRUDが主体の小規模システムを担当しているエンジニア。QiitaのDDD/レイヤードアーキテクチャ関連の上位記事が一貫して複雑性のある中〜大規模システムを前提に議論しており、業務ロジックの複雑さがない局面では投資対効果が出にくい

この本で身につくこと

  • ユビキタス言語を定義し、ビジネス要件とコードの間の用語ズレを解消できる
  • エンティティ・値オブジェクト・集約の違いを設計判断として使い分けられる
  • レイヤードアーキテクチャを用いてビジネスロジックをインフラ層・プレゼンテーション層から隔離できる
  • ドメインサービス・リポジトリ・ファクトリの責務を正しく定義し、適切な層に配置できる
  • 境界づけられたコンテキスト(Bounded Context)で大規模システムをモジュール分割する方針を立てられる
  • 腐敗防止層(ACL)を用いてレガシーシステムや外部サービスとのインテグレーションを設計できる

読了後にできること

Before(読む前): Controller やサービス層に業務ロジックが集積して巨大クラスが生まれ、どこに何を書くべきか判断軸を持てずにいた

After(読み終えた後): エンティティ・値オブジェクト・ドメインサービスへの責務配置を自分で定義でき、業務ロジックの散在とクラス肥大化を設計段階で抑制できる

章立て

(公式情報未確認 — 出版社公式ページの目次が公開され次第、本セクションを更新予定)

関連記事 / 参考情報

学習のヒント

  • 概念密度が高いため、全章を順番に通読しようとすると中盤で止まりやすい。Part I(ドメインモデルを機能させる)と Part II(モデル駆動設計の構成要素)を優先し、Part III・IV は実務の課題が生じたタイミングで参照する読み方が吸収しやすい
  • 読み始める前に『Domain-Driven Design Quickly』など薄い入門書を1冊通しておくと、本書の概念密度に消耗せずに読み進められる。Qiitaの学習記事でも副読本との併用が推奨されている
  • 実プロジェクトで感じている設計上の課題(肥大化したサービスクラス・業務ロジックの散在など)を手元に置きながら読むと、各パターンの適用意図が掴みやすい。課題ありきで「辞書的に引く」使い方も有効
  • ユビキタス言語の章はエンジニアだけでなくビジネス担当者と一緒に読み合わせると効果的。本書のコアコンセプトである「設計と言語の統一」を体験的に理解できる機会になる

前提知識

  • オブジェクト指向設計の実務経験(クラス・インターフェース・継承を実際のコードで使ったことがある)
  • 業務アプリケーション開発の経験(1年以上)。設計の複雑さを経験していないと、本書が解こうとしている問題が実感しにくい
  • MVC アーキテクチャとレイヤー分割の基本概念

次に読む本

実践ドメイン駆動設計

Vernon による実装寄りの解説書。Evans 本で概念を掴んだ後に具体的なコードパターンへ落とし込むための定番書。DDD学習の「第二段階」として位置づけられることが多い

Clean Architecture

DDD のレイヤードアーキテクチャとクリーンアーキテクチャを接続して理解することで、依存の方向性・テスタビリティの設計語彙が広がる

マイクロサービスパターン

Bounded Context の考え方をマイクロサービス分割に応用する局面で参照価値が高い。DDD の文脈でサービス境界を議論する記事が複数この方向性を示唆している

出版社による内容紹介

ソフトウェア開発における「ドメイン駆動設計(DDD)」の考え方と実践を体系化した古典的名著の翻訳書。モデル駆動設計、ユビキタス言語、境界づけられたコンテキストなどの概念を通じて、複雑な業務ロジックを保守性の高い設計に落とし込む手法を論じる。業務システムに関わる設計者・開発者にとって長く参照される一冊である。

この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。

質問に答えるだけで、
あなたに合う専門書が見つかる

IT・デザイン・士業・医療・経理・教育・研究 ほか、あらゆる分野の専門書と 「読む順序」(学習ロードマップ)を収録。何を選べばいいか分からなくても、 いくつかの質問に答えるだけでたどり着けます。