scrumfx

システム設計:AIと共に探るベストプラクティス

ContextMap 順応者 (Conformist) について

順応者(Anticorruption Layer)

DDDのコンテキストマップの順応者について調査しました。

オンラインショッピングシステムの例

システムは、注文管理コンテキスト在庫管理コンテキストという2つの境界づけられたコンテキストで構成されていると仮定します。 それぞれのコンテキストは独自のドメインモデルを持ち、異なるチームによって開発されています。

注文管理コンテキストは、顧客注文処理を担当しています。顧客商品注文すると、在庫管理コンテキスト商品在庫確保を依頼する必要があります。 しかし、注文管理コンテキスト在庫管理コンテキストは、それぞれ異なるドメインモデルと言語を持っています。

このような状況で、順応者を導入して両コンテキスト間の連携を円滑に行います。

  1. 注文管理コンテキスト在庫管理コンテキスト商品在庫確保を依頼する際、順応者を使用します。
  2. 順応者は、注文管理コンテキストのモデルや言語を在庫管理コンテキストが理解できる形式に変換します。例えば、注文管理コンテキストでは「Order」オブジェクトが使用されている場合、順応者はこれを在庫管理コンテキストの「InventoryRequest」オブジェクトに変換します。
  3. 在庫管理コンテキストは、順応者を介して受け取ったデータを使用して、在庫確保処理を実行します。処理が完了したら、結果を順応者に返します。
  4. 順応者は、在庫管理コンテキストからの結果を注文管理コンテキストが理解できる形式に変換し、注文管理コンテキストに返します。

このように、順応者を使用することで、注文管理コンテキスト在庫管理コンテキスト疎結合を保ちつつ、効果的に連携することができます。 それぞれのコンテキストは、自身のドメインモデルに沿ってデータを処理できるため、システム全体の一貫性や品質が向上します。

ビジネス管理システムの例

コンテキストマップの順応者(Conformist)の具体例を、ビジネス管理システムを使用して説明します。 このシステムには、従業員管理コンテキスト給与計算コンテキストという2つの境界づけられたコンテキストがあります。

従業員管理コンテキストは、従業員個人情報役職所属部門などのデータを管理しています。 一方、給与計算コンテキストは、従業員給与やボーナス控除を計算し、支払い処理を担当しています。

このシナリオでは、給与計算コンテキスト従業員管理コンテキストから従業員情報を取得する必要があります。 しかし、従業員管理コンテキストは、システム全体で使用されるため、他のコンテキストの要求に合わせて変更を行うことが難しい場合があります。

そこで、給与計算コンテキストは順応者(Conformist)の役割を担い、従業員管理コンテキストが提供するデータ構造やインターフェースに従います。 これにより、給与計算コンテキスト従業員管理コンテキストと円滑に連携することができ、システム全体の調整を容易にします。

順応者関係の実現方法:

  1. 給与計算コンテキストは、従業員管理コンテキストが提供するAPIやデータ構造を利用して、従業員情報を取得します。
  2. 給与計算コンテキストは、従業員管理コンテキストのデータ構造やインターフェースに従い、自身のビジネスロジックを実装します。
  3. 従業員管理コンテキストが変更された場合、給与計算コンテキストはそれに応じて自身の実装を更新し、システム全体の調整を容易にします。

順応者のアプローチは、1つのコンテキストが他のコンテキストの影響を受け入れ、連携を円滑に進めることを目指しています。