エリック・エヴァンスのドメイン駆動設計(エリック エヴァンス ノ ドメイン クドウ セッケイ)
ソフトウェア開発の実践
ソフトウェア工学・設計- 著者:
- エリック・エヴァンス/今関剛(エヴァンス,エリック/イマゼキ,タケシ)
- 出版社:
- 翔泳社
- 出版日:
- 2011年04月
- ISBN:
- 9784798121963
- シリーズ:
- IT architects’ archive
- 在庫:
- 在庫あり
なぜ注目されているか
技書の森解説
『エリック・エヴァンスのドメイン駆動設計』は、 Eric Evans 氏の著書『 Domain-Driven Design: Tackling Complexity in the Heart of Software 』の邦訳で、今関剛氏・和智右桂氏・牧野祐子氏の翻訳 (監修は今関氏) により翔泳社から 2011 年 4 月に刊行されました。ドメイン駆動設計 (DDD) という言葉の出どころであり、版元も「ドメイン駆動設計の定番書」として紹介しています。副題の「ソフトウェアの核心にある複雑さに立ち向かう」が示すとおり、これは特定の技術やフレームワークの本ではありません。業務の複雑さそのものをモデルとして捉え、そのモデルを開発チームの共通言語とコードの構造に一致させていくための、体系的なアプローチを提示する本です。
4 部構成: 土台・戦術・深化・戦略
全体は 4 部構成です。第 1 部「ドメインモデルを機能させる」では、ドメインの専門家との対話から知識をかみ砕き、チーム全員が同じ言葉でモデルを語るユビキタス言語を育て、そのモデルを実装と結びつけるという DDD の土台を据えます。第 2 部「モデル駆動設計の構成要素」は、エンティティ、値オブジェクト、集約、ファクトリ、リポジトリ といった、モデルをコードに落とすための構成要素を扱う戦術面の中核です。第 3 部「より深い洞察へ向かうリファクタリング」は、動くコードを保ったままモデル自体を深めていく過程を扱い、ブレイクスルー、暗黙的な概念を明示的にする、しなやかな設計といった章が並びます。そして第 4 部「戦略的設計」が、境界づけられたコンテキストとコンテキストマップによる複数モデルの共存、コアドメインを見極める蒸留、大規模な構造へと視野を広げ、システム全体とチーム編成に関わる意思決定までを射程に収めます。各パターンにはユビキタス言語 (UBIQUITOUS LANGUAGE) のように英語の正式名が併記され、貨物輸送プログラムをはじめとする具体例を通して説明が進むため、抽象論だけで終わらない作りになっています。
読み方の工夫: 第 1 部と第 4 部を先に
読み方には順序の工夫が要ります。エンティティやリポジトリといった第 2 部の戦術的パターンは単体でも適用できてしまうため、そこだけを取り出して DDD を理解した気になりやすいのですが、本書の主張の幹は、ユビキタス言語という前提と、第 4 部の戦略的設計にあります。どこまでを 1 つのモデルの適用範囲とするか (境界づけられたコンテキスト) 、限られた設計資源をどこに集中させるか (コアドメイン) という判断こそが、複雑さとの戦いの主戦場だからです。通読が重い場合 でも、第 1 部と第 4 部を先に押さえてから戦術面へ戻ると、個々のパターンが何のためにあるのかが見通しやすくなります。巻末には用語解説と参考文献も付いており、読後は設計判断に迷ったときに該当パターンを引き直す参照書として長く使えます。
2011 年刊でも陳腐化しにくい理由と対象読者
訳書の刊行は 2011 年ですが、内容は特定の言語やツールに依存しない設計の方法論であり、時間による陳腐化が起こりにくい種類の本です。ユビキタス言語や境界づけられたコンテキストといった用語は後続の設計論でも広く使われており、その定義を原典にあたって確認できることは、この本を持つ大きな価値です。すぐ使えるコード例や特定フレームワークでの実装レシピを求める人には向きませんが、業務の複雑さに正面から向き合う設計の拠り所がほしい開発者、チームで設計の共通言語を作りたいリーダー には、版元ページで Kent Beck 氏が「思慮深いソフトウェア開発者全員の必携書である」と推薦を寄せる本書を、腰を据えて読む価値のある 1 冊として勧められます。
言及 Qiita 記事 (163 件)
エンジニア歴20年の私が、素人バイブコーディング勢に物申す
♡ 2578Security, ポエム, AI, 新人プログラマ応援, VibeCoding「ビジネスロジック」とは何か、どう実装するのか
♡ 2343DDD, 設計, CleanArchitectureWebアプリケーションフレームワーク導入時に考慮すべき22の観点
♡ 2299DDD, 設計, フレームワーク, アーキテクチャエンジニアに読んで欲しい技術書90選
♡ 1962技術書, 書籍, 新人プログラマ応援中規模Web開発のためのMVC分割とレイヤアーキテクチャ
♡ 1835Rails, mvcお前らがModelと呼ぶアレをなんと呼ぶべきか。近辺の用語(EntityとかVOとかDTOとか)について整理しつつ考える
♡ 1661model, DDD, 設計1年以上かけて生産性倍増+成長し続けるチームになった施策を全部公開
♡ 1624初心者, ポエム, チーム開発, 初心者向け, 新人プログラマ応援SREやクラウドエンジニアが読むと良さげな本まとめ
♡ 1247Linux, AWS, Cloud, インフラ, SRE大規模Webアプリケーションにおける複雑性とアーキテクチャ設計に関する一考察
♡ 814オブジェクト指向, DDD, 設計, アーキテクチャMVC、3 層アーキテクチャから設計を学び始めるための基礎知識
♡ 757オブジェクト指向, 初心者, mvc, DDD, 設計
言及 Zenn 記事 (2 件)
この本に興味がある方におすすめ
この本に関連
関連記事
設計の引き出しは経験だけでは増えない
実務経験だけでは設計の引き出しに限界があります。なぜ経験だけでは不十分なのか、本が設計力に対して果たす、他で代えにくい役割を論じます。
あの有名 OSS のコードは、この本の影響を受けている
広く使われているオープンソースソフトウェアの設計には、技術書と共通の語彙や原則が残っています。OSS のコードから辿れる影響と、似ているだけの例の見分け方を整理しました。
設計 / アーキテクチャ本ガイド - 設計力を上げる技術書の選び方
ソフトウェア設計を学べる技術書をコード / モジュール / システムの 3 レイヤーに分類し、レベルに応じた読む順番の指針を紹介します。
関連用語
ドメイン駆動設計 (DDD)
ビジネスドメインの知識を中心に据え、ドメインエキスパートと開発者が共通言語で協働しながらソフトウェアを設計する手法
貧血ドメインモデル
ドメインオブジェクトがデータのみを持ち、ビジネスロジックが外部のサービスに散在するアンチパターン
DNS
ドメイン名を IP アドレスに変換するインターネットの名前解決システム
オニオンアーキテクチャ
ドメインロジックを中心に据え、外側の層が内側に依存する同心円状のアーキテクチャ
集約
ドメイン駆動設計において、一貫性を保つべきオブジェクト群をまとめ、単一のルートエンティティ経由でアクセスする設計パターン
クリーンアーキテクチャ
ビジネスロジックを外部の技術的詳細から分離し、依存関係を内側に向けることで変更に強い設計を実現するアーキテクチャ原則