ドメインとは
ソフトウェア開発における「ドメイン」とは、ビジネス上の問題領域や取り扱う対象範囲を指します。
システムが解決すべき課題や、付加価値を提供する領域が「ドメイン」にあたります。
コアドメインとは
「コアドメイン(Core Domain)」は、組織やサービスが独自の価値や競合優位性を生み出す中核領域です。
ここに注力することで、「なぜ顧客に選ばれるのか」という差別化の理由を明確にします。
コアドメインの実例
サービス | コアドメイン | 説明 |
---|---|---|
Netflix | レコメンドエンジン | 視聴履歴や嗜好に応じた最適な作品推薦で顧客エンゲージメント向上 |
Amazon | 在庫・物流最適化 | 膨大なデータ分析による効率的な在庫管理・配送で顧客満足度強化 |
Uber | リアルタイム配車マッチング | 需要と供給を瞬時に結びつけ、待ち時間を最小化する独自アルゴリズム |
サポートドメインとは
「サポートドメイン(Support Domain)」は、事業を支えるために必要だが、特別な差別化にならない機能領域です。
例えば、一般的なユーザー認証や基本的なCRUD操作、ログ管理などはサポートドメインにあたります。
これらは汎用的なソリューションや外部サービスで十分対応可能なため、自社の貴重なリソースを集中投下する必要はありません。
サポートドメインの例
領域 | 例 |
---|---|
認証/認可 | ユーザー名・パスワードでのログイン機能 |
通知機能 | メール通知、プッシュ通知、SMS送信 |
データ操作 | 基本的なCRUD(作成・更新・取得・削除)処理 |
ログ管理 | システム動作状況を記録する標準的なログ出力機能 |
決済処理 | 一般的な決済ゲートウェイと連携したクレジット決済機能 |
コアドメイン化のステップ
コアドメインを探し出すのはシステムやサービスの価値を最大化かつ差別化するにあたって必要なタスクです。以下に必要なステップについてまとめてみました
No. | ステップ | やること | 成果物/結果 | ポイント |
---|---|---|---|---|
1 | ビジネスヒアリング・洞察収集 | ドメインエキスパートへのインタビュー、競合分析、市場調査 | ビジネス目的・差別化要因に関するインサイト、「なぜ」の明確化 | 「なぜこのビジネスが存在するのか」を把握することでコアドメインの種を発見 |
2 | 価値・差別化要因抽出 | 得られたインサイトから顧客価値・競合優位性を明確にする | コアドメイン候補の領域や、重要な要件リスト | 顧客が選ぶ理由・競合との違いを特定し、コアドメインを絞り込む |
3 | モデル化(抽象化) | 抽出したコアドメイン要素をドメインモデルとして抽象化・整理する | ドメインモデル、エンティティ・サービスの概念設計 | コアドメインを技術的・論理的に表現できる形へ落とし込む |
4 | ユースケース定義 | モデル化した要素を具体的なユーザー行動・利用シナリオへ展開 | ユースケース図、ユーザーストーリー、インタラクション設計 | 「なぜ」を実現する「どのような利用シナリオか」を明確にする |
5 | 機能設計・実装 | ユースケースを元に機能要件化し、設計・開発へ落とし込む | 要件定義書、設計書、コード | コアドメインを具現化し、実際のサービスとして提供する |
必ずコアドメインが必要か
必ずしもコアドメインを定義する必要はありません。
差別化が不要で、標準的な機能だけでビジネス価値が成立する場合、コアドメインを意識せずに開発することも可能です。
コアドメインが必要/不要な例
例 | コアドメインが必要な場合 | コアドメインが不要な場合 |
---|---|---|
勤怠システム | グローバル規模で多様な労務規制や時差を考慮し、シフト配置を自動最適化する独自アルゴリズムを持つ | 一般的な出退勤記録、休暇申請のみを行う標準的機能 |
ECサイト | 大量の顧客行動データを解析し、顧客ごとに最適な商品の推薦や価格設定を行う独自エンジン | 商品登録・カート・決済といった基本機能のみ |
教育サービス | 学習履歴・テスト結果を活用して個々に最適な学習プランを自動生成する学習アルゴリズム | 汎用的な動画配信とテスト機能のみを提供 |
配車アプリ | 交通状況や需要予測を考慮し、最短待ち時間・最適料金を算出する独自マッチング機能 | シンプルな配車依頼受付と位置情報表示のみ |