Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

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

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

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

 ドメイン駆動設計(DDD)は、顧客と開発者が業務を戦略的に理解し、共通の言葉を用いてシステムを発展させていく開発手法です。第1回となる前回は「DDDの概要」「ユビキタス言語」「DDDを始める方法」について紹介しました。第2回となる本稿では「戦略的設計」において重要な概念「ドメイン」「サブドメイン」「境界づけられたコンテキスト」について紹介します。

目次

「ドメイン」と「境界づけられたコンテキスト」の全体像

 それでは、DDDにおける主要概念である「ドメイン」と「境界づけられたコンテキスト」について紹介していきます。広義の意味での「ドメイン」は「チームが取り組んでいる事業全体」を表します。このドメインの全体像が下図となります。

コアドメイン、サブドメイン、境界づけられたコンテキストの全体像
コアドメイン、サブドメイン、境界づけられたコンテキストの全体像

 広義のドメインには分析対象となる問題領域」と「事業課題の改善に取り組む解決領域」が含まれています。そして、分析対象となる問題領域が「ドメイン」であり、その問題や課題に取り組む解決領域が「境界づけられたコンテキスト」となります。

 具体的な例は本稿の後半で紹介しますが、まずはビジネス課題を表す「ドメイン」と、その課題をソフトウェアにて解決する「境界づけられたコンテキスト」が存在することを理解して頂ければと思います。それでは、順番に見ていきましょう。

ドメインとは

 ドメインとは対象とする事業が取り扱う世界を表しています。この世界には独自のルールと文化が存在しています。良い開発を行うためには、この世界をチームメンバーが深く理解する必要があります。しかし、すべての仕組みを理解するにはあまりにも大きく複雑すぎるため、通常は「コアドメイン」「サブドメイン」という適切な大きさに分割します。

「コアドメイン」と「サブドメイン」とは

 「コアドメイン」とは事業的に最も重要で戦略的に不可欠な部分です。優秀なメンバーを参加させ、積極的に成長させビジネス的な差別化を図ります。DDDで開発を行う場合、十分に議論を行い、その部分が本当にコアドメインかどうかを確認する必要があります。コアドメインと定義した部分にビジネス的な強みが無い場合は、DDDで開発を行うかを再検討する必要があります。

 そして「コアドメイン」ではない補助的な部分を「サブドメイン」と呼びます。サブドメインはコアドメインにとって必要な部分となります。なお、当事者の視点によって「コアドメイン」と「サブドメイン」が入れ替わることに注意します。例えばECとERPが含まれるシステムの場合、ERP構築企業の視点ではコアドメインはERPで、サブドメインがECとなります。逆にEC構築企業の視点ではコアドメインはECで、サブドメインがERPとなります。

「支援サブドメイン」と「汎用サブドメイン」とは

 システム的に必要でありつつもコアドメインではない部分を「サブドメイン」と呼びます。サブドメインは「支援サブドメイン」と「汎用サブドメイン」の2種類に分類されます。

 「支援サブドメイン」はコアドメインほど重要ではないものの、業務的に特別なものを表します。例えば、コアドメインの支援を行う独自機能などが該当します。

 「汎用サブドメイン」は、業務的に特別ではないが、今回のシステムにおいて必要な箇所を表します。例えば認証機能やERPやECなど、極端な場合、交換されたとしても差し支えのない機能が該当します。


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

著者プロフィール

  • WINGSプロジェクト 青木 淳夫 (株式会社ネクストスケープ)(アオキ アツオ)

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

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

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

バックナンバー

連載:IDDD本から理解するドメイン駆動設計
All contents copyright © 2005-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5