CodeZine(コードジン)

特集ページ一覧

実践DDD本 第3章「コンテキストマップ」~「境界づけられたコンテキスト」の関係を俯瞰する地図~

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

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

目次

コンテキスト間の連携のシーケンス図

 上記のことを踏まえた上で「アジャイルプロジェクト管理コンテキスト」と「認証・アクセス管理コンテキスト」間の連携の流れについて描かれたシーケンス図を見てみましょう。

コンテキスト統合のシーケンス例
コンテキスト統合のシーケンス例

 このシーケンス図は、左側「アジャイルプロジェクト管理コンテキスト(下流)」から開始し、中央の「腐敗防止層」を経て、右端「認証・アクセス管理コンテキスト(上流)」の「公開ホストサービス/公表された言語」を呼び出しています。

 上流側の公開ホストサービスでは、認証メンバーの変更状態を通知するAPI(この例では「https://{ドメイン}/tenants/notifications/{id}」)を提供しています。下流側のコンテキストが複数ある場合、この変更状態を使用するコンテキストだけが、このAPIを呼び出します。

ミニマル指向によるモデルの分離

 シーケンス図にある通り「アジャイルプロジェクト管理コンテキスト」では、腐敗防止層として専用のアダプタとファサードを作成しモデルの変換処理を行っています。そのため、上流のモデルの概念が、下流のコンテキストモデルに入り込まないようになっています。

 このようにコンテキスト間で同期するデータを最小にし、リモートモデルの属性のうち必要なものだけをローカルモデルに連携させることを「ミニマル指向」と呼びます。リモートモデルへの依存を減らすことで、自コンテキストのモデルに他の概念が混ざらなくなります。また、不必要な属性の同期がなくなるため、処理がシンプルになります。

SaaSOvationにおける実装方法のまとめ

 このシーケンス図では上流側のWebサービスを呼び出していますが、リアルタイム性が必須ではありません。この構成であれば、「認証・アクセスコンテキスト」のWebサービスがダウンしていても「アジャイル管理コンテキスト」が影響を受けず独立して動作することが理解いただけると思います。

 従来の開発であれば、1つのDBにしてしまったり、Webサービスと密結合にしてしまったりと、依存関係が高くなる課題を抱えていましたが、このDDDの例ではコンテキスト間の関係を疎結合にして、相互の依存関係を低くしています。

SaaSOvationの組織パターン

 最後に組織パターンの観点からも確認してみます。SaaSOvationの場合「コラボレーションコンテキスト」と「アジャイルプロジェクト管理コンテキスト」間の関係は「顧客/供給者」と考えられます。SaaSOvationは同一組織で開発しているシナリオのため、あまり難しくありませんが、実プロジェクトでは他のチームとの関係が不明瞭な場合も多いため、適切に情報を収集し組織パターンを明確にするようにします。

最後に

 本稿では、コンテキストマップについて紹介してきました。単純なサブシステム構成図のように思われがちですが、最適な連携方法を探るコミュニケーション図であることが理解できたと思います。コンテキストマップはDDD開発において非常に重要な図ですので、目立つところに貼って、チームで共有するよう努めてみてはいかがでしょうか。

 次回の第4回では、DDDのアーキテクチャについて紹介します。

参考資料



  • 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