CodeZine(コードジン)

特集ページ一覧

実践DDD本 第2章「ドメイン」「サブドメイン」「境界づけられたコンテキスト」を読み解く

IDDD本から理解するドメイン駆動設計 第2回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2016/11/08 14:00

目次

IDDD本の架空サンプルプロジェクト「SaaSOvation」

 それでは、IDDD本のサンプルプロジェクトを元に「ドメイン」と「境界づけられたコンテキスト」をどのように分割するかについて見ていきましょう。

 「SaaSOvation」とは、IDDD本の中で登場するサンプルプロジェクトです。SaaSOvationは、「CollabOvation」と「ProjectOvation」という2つの製品から構成されます(「Ovation」という英語の意味は「喝采」で、スタンディングオベーションという言葉などで使われます)。

 「CollabOvation」は、最先端のソーシャル機能を持つ企業向けの「Webコラボレーションスイート製品」です。フォーラム、カレンダー、Wiki、伝言板、文書管理、一斉通知、アクティビティ追跡などの機能が含まれます。これまで中心的に提供してきた製品で、すでに一定数の顧客も獲得できています。

 「ProjectOvation」は「アジャイルプロジェクトの管理」を行う新しい製品です。Scrumを用いたプロジェクトマネージメントを行うことができます。バックログアイテムをスプリントに割り当てリリースを行います。バックログアイテムアイテムの見積もりにおいて「事業価値」を算出する機能を提供し「費用対効果」の分析を行える点が特徴です。

 販売構想としては、「ProjectOvation」に「CollabOvation」をアドインとして組み込みます。プロジェクト管理ツールにコラボレーションツールを組み込むことで、チーム間の議論がスムーズになることが製品の強みと考えています。

「SaaSOvation」におけるドメイン分割例

 早速、SaaSOvationにおいて「ドメイン」と「境界づけられたコンテキスト」をどのように管理するかをみてみましょう。

 IDDD本では「ドメイン」と「境界づけられたコンテキスト」をそれぞれ3つに分離しています(よくある失敗として、DBやプログラムを共通化したほうが良いと判断して、1つのドメインにまとめてしまう場合があります。この場合、将来的に切り離せない複雑な構成となってしまいます)。それでは3つのドメインを見ていきましょう。

(1)コアドメイン「アジャイルプロジェクト管理ドメイン」

 1つ目のドメインは「アジャイルプロジェクト管理ドメイン」で、開発を行う最重要ドメインとなります。そのため「コアドメイン」となり、ビジネス価値において重要な領域と判断しています。

「アジャイルプロジェクト管理ドメイン」のドメインモデル
「アジャイルプロジェクト管理ドメイン」のドメインモデル

 「アジャイルプロジェクト管理ドメイン」のドメインモデルは上図の通りです。ドメインモデルを構成する要素(エンティティ、値オブジェクト、集約、ドメインイベント等)については、今後の章でご紹介しますので、今回はイメージだけ掴んで頂ければと思います。

(2)支援サブドメイン「コラボレーションドメイン」

 2つ目のドメインが「コラボレーションドメイン」で「支援サブドメイン」となります。コアドメインから利用され、業務的に特別な意味を持つため支援サブドメインとなります。

 なお「アジャイルプロジェクト管理ドメイン」が登場するまでは、「コラボレーションドメイン」が「コアドメイン」でした。このようにチームの置かれている状況によって「コアドメイン」が変化していくことがあります。

「コラボレーションドメイン」のドメインモデル
「コラボレーションドメイン」のドメインモデル

(3)汎用サブドメイン「認証・アクセスドメイン」

 3つ目のドメインが「認証・アクセスドメイン」で「汎用サブドメイン」となります。ここでは、ユーザー、グループ、ロールなどを管理します。SaaSOvationのシステムにおいて必要な機能ですが、差し替えは可能なため、汎用サブドメインといえます。

 「認証・アクセスコンテキスト(IdOvation)」という新しいドメインが登場した背景は、ユーザーやパーミションの概念が、コラボレーションコンテキストとはなんの関係もなく、ユビキタス言語にも含まれないことが理由です。

「認証・アクセスドメイン」のドメインモデル
「認証・アクセスドメイン」のドメインモデル

 以上、サンプルプロジェクトの場合、ドメインと境界づけられたコンテキストが3つに分割されることがわかりました。続けて、この分割内容が正しいかを評価する方法について紹介していきます。

SaaSOvationのサンプルコード

 SaaSOvationのサンプルコードは、GitHubにて公開されています。
Java版は「https://github.com/VaughnVernon/IDDD_Samples」に、
C#版は「https://github.com/VaughnVernon/IDDD_Samples_NET」に公開されています。
(なお、C#側はJava版に比べてインフラ系の実装が少ないため注意してください。)


  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:IDDD本から理解するドメイン駆動設計

もっと読む

著者プロフィール

  • WINGSプロジェクト 青木 淳夫(アオキ アツオ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きた...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XM...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5