6章

複雑な業務ロジックに立ち向かう

 前の章で、比較的単純な業務ロジックを扱う二つの方法、つまりトランザクションスクリプトアクティブレコードを検討しました。この章も引き続き業務ロジックの実装方法を検討します。この章で紹介するのは、複雑な業務ロジックの実装方法、つまりドメインモデルです。

6.1 歴史

 ドメインモデルは、マーチン・ファウラーが『エンタープライズアプリケーションアーキテクチャパターン』で紹介した、業務ロジックの実装方法の一つです。トランザクションスクリプトとアクティブレコードもこの本で紹介されています。ファウラーは、ドメインモデルの説明の最後で、「エリック・エヴァンスがドメインモデルの作り方について本を執筆中である」と書いています。この執筆中の本こそ『エリック・エヴァンスのドメイン駆動設計』です。

 エヴァンスはこの本で、ソースコードとその根底にある事業活動のモデルをしっかりと関連づける手法として、集約値オブジェクト、リポジトリなどを提示しました。これらの手法は、ファウラーが書き残した内容を忠実に踏まえています。そして、ドメインモデルを実装するための、効果的な工具セットとなっています。

 エヴァンスが紹介したこれらの手法は「戦術的なドメイン駆動設計」と呼ばれることがあります。ドメイン駆動設計に取り組むことと、業務ロジックの実装にエヴァンスが紹介した手法を使うことを混同しないように、私はファウラーの用語にこだわりたいと思います。業務ロジックの実装方法は「ドメインモデル」です。集約と値オブジェクトは、ドメインモデルを実装するための部品です。

6.2 ドメインモデル

 ドメインモデルは複雑な業務ロジックを扱うための設計手法です。この章では、データベースのCRUD操作ではなく、複雑な状態遷移、業務ルールそして不変条件、つまり常に保護されるべきルール、を扱います。 ...

Get ドメイン駆動設計をはじめよう ―ソフトウェアの実装と事業戦略を結びつける実践技法 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.