ドメイン駆動設計のリファレンス本

井上です。

現在、ドメイン駆動設計(Domain Driven Desing . 以下 DDD)を用いて開発を行っています。

DDDの参考書籍といえば、もちろん「エリック・エヴァンスのドメイン駆動設計 ソフトウェアの核心にある複雑さに立ち向かう」(以下 DDD本)ですが、その著者であるエリック・エヴァンスが最近(2014/9/22)「Domain-Driven Design Reference: Definitions and Pattern Summaries」という新しい本(以下 DDDリファレンス本)を出していることに気がつきました。

DDDリファレンス本とは

早速DDDリファレンス本を取り寄せてみました。88ページと非常にコンパクトな本になっています。

内容的には、以下で公開されているPDFに新しい図や写真を追加してペーパーバックとして出版したもののようです。

DDD REFERENCE: PATTERNS AND DEFINITIONS

本の内容を簡単にまとめると、以下のような内容になっています。

  • DDD本に記載されているパターンが要約形式でまとめられている
  • 概念をより明確に説明する為に、幾つかのパターンの要約が大々的に書き換えられている
  • DDD本に記載されていない新しいパターンが幾つか含まれている
  • DDDの原則を知っている人たちにとって便利なリファレンスである
  • DDDに関する完全な説明が含まれているわけではないので、補足資料として使うことが推奨されている

3つの新しいパターン

上記で触れたように、DDDリファレンス本には幾つか新しいパターンが含まれているのですが、具体的には以下の3つのパターンが追加されていました。

  1. Domain Event
  2. Partnership
  3. Big Ball of Mud

ここでは、上記3つのパターンについて、簡単に紹介します。

Domain Event (ドメイン イベント)

DDD本においてもイベントについて扱われていましたが、あくまでエンティティの一種として扱われていました。(7章における「荷役イベント」等)
しかし、ここでは、Domain Event (ドメインイベント) として明確に区別するように述べられています。

分散システムといった一貫性のある状態を保つことが難しい状況を例に挙げ、ドメインにおけるアクティビティ情報を一連の個別のイベントとして扱い、それぞれのイベントをドメインオブジェクトとして表現することの重要性を述べています。

また、ドメインイベントは、通常「イベントが発生したタイムスタンプ」「イベントに関連するエンティティの識別子」を含みます。また、それ以外にも「イベントがシステムに投入されたタイムスタンプ」「イベントをシステムに投入した人物の識別子」も含むこともあり、これらのプロパティのサブセットが、例えば分散システムにおけるドメインイベントの識別子に使われる、といったことにも触れています。

Partnership (パートナーシップ)

お互い依存していて、かつ異なるコンテキスト上にあるサブシステム同士におけるPartnership (パートナーシップ)の重要性を述べています。

パートナーシップが不足すると、両方のプロジェクトに失敗をもたらし、また、一方のサブシステムのインタフェースがもう一方のサブシステムの期待にそぐわない場合、インテグレーションの失敗を引き起こすとしています。

また、パートナーシップの具体例として、開発計画の協調や共通のインテグレーションテストをプロセスに盛り込むこと等の重要性が述べられています。

さらには、インテグレーションを管理するために、サーバーシステムのインタフェースがクライアントシステムの期待を満たしていることを証明するような特別なテストスイートを用意し、サーバーシステムの継続的インテグレーションの一部として実行するといった例が挙げられています。

Big Ball of Mud (大きな泥だんご)

あるコンテキストが、その境界に動機付けが無く、複数の概念モデルが入り交じり、不確かなロジックによって動いている状態である場合、結果的にコンテキストは Big Ball of Mud (大きな泥だんご) となってしまいます。

このような場合、上記で述べたような寄せ集め部分の周りにコンテキスト境界を引き、それを大きな泥だんごであると定義し、そのコンテキスト境界内に洗練されたモデルを無理に適用しようとはしないこと、そして大きな泥だんごが他のコンテキストへ広がってしまわないように注力するべきであると述べられています。

まとめ

今回は、DDDリファレンス本について簡単に紹介しました。
DDD本の良いリファレンス本としては勿論、DDD本には含まれない新しいパターンも記載されていますので、興味のある方は手に取ってみては如何でしょうか?

ドメイン駆動設計のリファレンス本」への1件のフィードバック

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中