ドメイン駆動設計入門 ボトムアップでわかる! ドメイン駆動設計の基本
ドメインクドウセッケイニュウモン ボトムアップデワカルドメインクドウセッケイノキホン
- 著者:
- 成瀬 允宣(ナルセ マサノブ)
- 価格:
- ¥3,960
- 出版社:
- 翔泳社
- 出版日:
- 2020年02月13日頃
- ISBN:
- 9784798150727
- 在庫:
- 1
- 判型:
- 単行本
なぜ注目されているか
書籍紹介
学習しやすいパターンが満載!
ドメイン駆動設計をやさしく学べる入門書!
【本書の概要】
本書は、
『エリック・エヴァンスのドメイン駆動設計』 (ISBN978-4-7981-2196-3、翔泳社)、
『実践ドメイン駆動設計』 (ISBN978-4-7981-3161-0、翔泳社)
に感銘を受けた著者が贈る、ドメイン駆動設計の入門書です。
【対象読者】
『エリック・エヴァンスのドメイン駆動設計』や
『実践ドメイン駆動設計』をこれから読もうとしている方、
もしくはすでに読んだものの、「もう少しやさしい入門書も読みたい」
と感じているエンジニアの方を対象としています。
【本書の特徴】
ドメイン駆動設計において、実践が難しいものは後回しにして、
理解しやすい実装パターンからドメイン駆動設計の世界に
飛び込んでもらうことを目的としています。
そこで初心者にとって、理解しやすい、そして実践しやすいパターンからスタートできるよう、
解説を工夫しています。
またドメイン駆動設計で頻出するパターンの記述方法やその目的も併せて解説しています。
本書で解説するパターンは以下のとおりです。
【知識を表現するパターン】
・値オブジェクト
・エンティティ
・ドメインサービス
【アプリケーションを実現するためのパターン】
・リポジトリ
・アプリケーションサービス
・ファクトリ
【知識を表現する、より発展的なパターン】
・集約
・仕様
技書の森解説
ドメイン駆動設計を学ぼうとして分厚い原典に挑み、概念の多さに途中で手が止まった人は少なくありません。『ドメイン駆動設計入門 ボトムアップでわかる! ドメイン駆動設計の基本』 (成瀬 允宣 著、翔泳社、2020 年 2 月刊) は、そうした読者のために、実践が難しい部分を後回しにして、理解しやすく実装しやすいパターンからドメイン駆動設計 (DDD) に入っていく入門書です。版元の紹介では、『エリック・エヴァンスのドメイン駆動設計』と『実践ドメイン駆動設計』に感銘を受けた著者が書いた本とされ、この 2 冊をこれから読もうとしている人や、読んだもののもう少しやさしい入門書を求めている人を対象にしています。
値オブジェクトから集約と仕様まで、全 15 章の構成
構成は Chapter 1 から Chapter 15 に、付録のソリューション構成が続きます。1 章でドメイン駆動設計の考え方と本書が目指すゴールを示したあと、2 章の値オブジェクト、3 章のエンティティ、4 章のドメインサービスと、ドメインの知識を表現するパターンを一つずつ扱います。5 章のリポジトリでは SQL を使った実装とオブジェクトリレーショナルマッパーを使った実装、テスト用のリポジトリまで踏み込み、6 章のアプリケーションサービス、7 章の依存関係のコントロール、8 章のソフトウェアシステムの組み立てでは、コマンドラインインターフェースや MVC フレームワークへの組み込みとユニットテストへ進みます。9 章のファクトリ、10 章のデータの整合性を経て、11 章でアプリケーションを 1 から組み立て、12 章の集約と 13 章の仕様という発展的なパターン、14 章のアーキテクチャへと続きます。最後の 15 章では、ドメインエキスパートとのモデリング、ユビキタス言語、境界付けられたコンテキスト、コンテキストマップといった、原典の中心にある考え方への入口を示して締めくくります。
パターンから入るボトムアップの学び方が効く理由
ドメイン駆動設計の原典は、業務の専門家と開発者が共通の言葉でモデルを育てるという戦略の話と、そのモデルをコードに写すための戦術的なパターンの話が一体になっています。戦略の部分は組織や業務の状況に左右されるため、手を動かして確かめにくく、初学者がつまずきやすい箇所です。本書はこの順番を逆にして、エンティティと値オブジェクト の区別、リポジトリによるデータアクセスの分離、依存関係逆転の原則 によるインフラへの依存の切り離しといった、コードの手触りで確かめられるところから積み上げます。ドメインのルールがアプリケーションサービスの側へ流れ出すと、ドメインオブジェクトがデータを入れるだけの器になる 貧血ドメインモデル に陥りがちですが、6 章にはドメインのルールの流出を扱う節があり、パターンを使う目的まで含めて説明しているのが特徴です。
オブジェクト指向の前提知識と、読み終えた後の進み方
読み進めるには、クラスとインターフェース、カプセル化といったオブジェクト指向の基本と、データベースへの読み書きの経験があると楽です。付録のソリューション構成には C# 特有のプロジェクト管理用語を扱うコラムがあり、開発環境の説明は C# を前提にした箇所を含みます。15 章の冒頭に軽量 DDD に陥らないための節が置かれていることが示すとおり、パターンの使い方を覚えるだけではドメイン駆動設計の目的には届きません。業務領域の分析や境界の引き方を体系立てて学ぶには、本書の後に原典や『ドメイン駆動設計をはじめよう』のような戦略寄りの本へ進む道筋になります。設計の本全体の中での位置づけを確かめたい場合は、設計とアーキテクチャの本の選び方 も参考になります。
原典を開く前に土台を作りたい人、あるいは原典を読んだもののコードに落とし込む段階で迷っている人にとって、本書はパターンごとの目的と実装の形を対応づけて身につけられる一冊です。値オブジェクトを一つ導入するところから手元のコードを変え始められるので、設計の議論に参加するための共通の語彙を、実装を通して手に入れたい開発者に向いています。
言及した記事 (75 件)
「Controller にビジネスロジックを書くな」の対応パターン
♡ 290オブジェクト指向, mvc, DDD, 設計, CleanArchitecture君はブームにのっかって公務員からエンジニアに転職して後悔はないのか?
♡ 231ポエム, 転職, キャリア, 未経験エンジニアドメイン駆動設計は残酷
♡ 220開発, 本, ポエム, DDD, 学習今年入社の新卒エンジニアがこの一年間に読んだ技術書15冊を紹介する
♡ 161技術書, 新人プログラマ応援駆動開発が多すぎる件
♡ 152アジャイル, 初心者, ドメイン駆動設計, React, エンジニアワイと学ぶ、値オブジェクト
♡ 130TypeScript, DDD, 値オブジェクト, ValueObjectLaravelで同じ実装をドメイン駆動設計(DDD)とMVCで比較してみた(フロントはReact)
♡ 81Laravel, DDD, ドメイン駆動設計, React「ドメイン駆動設計入門」を読んだ後
♡ 79書籍, 入門, ddd, ドメイン駆動設計初心者のためのDDD入門:ドメイン駆動設計とはなんだ!
♡ 73初心者, DDD, 設計, ドメイン駆動設計, デザインパターンRust で DDD を実践しながら API サーバーを実装・構築した(つもり)
♡ 70Heroku, Rust, DDD, アーキテクチャ, actix-web
この本に興味がある方におすすめ
関連する本
関連記事
関連用語
ドメイン駆動設計 (DDD)
ビジネスドメインの知識を中心に据え、ドメインエキスパートと開発者が共通言語で協働しながらソフトウェアを設計する手法
貧血ドメインモデル
ドメインオブジェクトがデータのみを持ち、ビジネスロジックが外部のサービスに散在するアンチパターン
DNS
ドメイン名を IP アドレスに変換するインターネットの名前解決システム
オニオンアーキテクチャ
ドメインロジックを中心に据え、外側の層が内側に依存する同心円状のアーキテクチャ
リポジトリパターン
データアクセスロジックをカプセル化し、ビジネスロジックからデータストアの詳細を隠蔽するパターン
集約
ドメイン駆動設計において、一貫性を保つべきオブジェクト群をまとめ、単一のルートエンティティ経由でアクセスする設計パターン