-
- Page 2
-
- 境界づけられたコンテキスト間の連携方法を示す「統合パターン」
- (1)共有カーネル
- (2)巨大な泥団子
- (3)公開ホストサービス(OHS:Open Host Service)
- (4)公表された言語(PL:Published Language)
- (5)腐敗防止層(ACL:Anti Corruption Layer)
- SaaSOvationにおけるコンテキストマップの例
- SaaSOvationにおける「境界づけられたコンテキスト」の分析
- SaaSOvationにおける「コンテキストマップ」の洗練
- SaaSOvationにおけるコンテキストの統合方式例
- 他コンテキストに依存しない設計
- リアルタイム性よりも「結果整合性」を重視
コンテキスト間の連携のシーケンス図
上記のことを踏まえた上で「アジャイルプロジェクト管理コンテキスト」と「認証・アクセス管理コンテキスト」間の連携の流れについて描かれたシーケンス図を見てみましょう。
このシーケンス図は、左側「アジャイルプロジェクト管理コンテキスト(下流)」から開始し、中央の「腐敗防止層」を経て、右端「認証・アクセス管理コンテキスト(上流)」の「公開ホストサービス/公表された言語」を呼び出しています。
上流側の公開ホストサービスでは、認証メンバーの変更状態を通知するAPI(この例では「https://{ドメイン}/tenants/notifications/{id}」)を提供しています。下流側のコンテキストが複数ある場合、この変更状態を使用するコンテキストだけが、このAPIを呼び出します。
ミニマル指向によるモデルの分離
シーケンス図にある通り「アジャイルプロジェクト管理コンテキスト」では、腐敗防止層として専用のアダプタとファサードを作成しモデルの変換処理を行っています。そのため、上流のモデルの概念が、下流のコンテキストモデルに入り込まないようになっています。
このようにコンテキスト間で同期するデータを最小にし、リモートモデルの属性のうち必要なものだけをローカルモデルに連携させることを「ミニマル指向」と呼びます。リモートモデルへの依存を減らすことで、自コンテキストのモデルに他の概念が混ざらなくなります。また、不必要な属性の同期がなくなるため、処理がシンプルになります。
SaaSOvationにおける実装方法のまとめ
このシーケンス図では上流側のWebサービスを呼び出していますが、リアルタイム性が必須ではありません。この構成であれば、「認証・アクセスコンテキスト」のWebサービスがダウンしていても「アジャイル管理コンテキスト」が影響を受けず独立して動作することが理解いただけると思います。
従来の開発であれば、1つのDBにしてしまったり、Webサービスと密結合にしてしまったりと、依存関係が高くなる課題を抱えていましたが、このDDDの例ではコンテキスト間の関係を疎結合にして、相互の依存関係を低くしています。
SaaSOvationの組織パターン
最後に組織パターンの観点からも確認してみます。SaaSOvationの場合「コラボレーションコンテキスト」と「アジャイルプロジェクト管理コンテキスト」間の関係は「顧客/供給者」と考えられます。SaaSOvationは同一組織で開発しているシナリオのため、あまり難しくありませんが、実プロジェクトでは他のチームとの関係が不明瞭な場合も多いため、適切に情報を収集し組織パターンを明確にするようにします。
最後に
本稿では、コンテキストマップについて紹介してきました。単純なサブシステム構成図のように思われがちですが、最適な連携方法を探るコミュニケーション図であることが理解できたと思います。コンテキストマップはDDD開発において非常に重要な図ですので、目立つところに貼って、チームで共有するよう努めてみてはいかがでしょうか。
次回の第4回では、DDDのアーキテクチャについて紹介します。
参考資料
この記事は参考になりましたか?
既に会員の方はを行ってください。
- IDDD本から理解するドメイン駆動設計連載記事一覧
- この記事の著者
-
WINGSプロジェクト 青木 淳夫(アオキ アツオ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
