0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「Canonical Model」と「Bounded Context Model」の違い

Posted at

「Canonical Model」と「Bounded Context Model」は、どちらもシステム設計においてデータを扱う方法ですが、目的や使われ方が異なります。

Canonical Modelとは

目的: システム間の統合をシンプルにする

使い方: 異なるシステムやサービス間でデータをやり取りするときに、データを統一した「共通の形式」にするために使われます。各システムは、独自のデータ形式を持っていても、データ交換の際には共通の形式(Canonical Model)に変換します。これにより、システム同士のつながりをシンプルにし、保守性を向上させることができます。

例:

  • Aシステムが「Product」、Bシステムが「Item」と呼んでいる商品情報を、共通の「ProductData」として統一して扱う。
  • これにより、AシステムやBシステムは自分たちの形式から「ProductData」に変換するだけで、他のシステムとデータをやり取りできるようになります。

特徴: システム間の「共通言語」を作るようなイメージで、データの一貫性を重視します。

Bounded Context Modelとは

目的: 各ドメイン(業務領域)に最適化されたデータ設計をする

使い方: ドメイン駆動設計(Domain-Driven Design, DDD)の中で用いられる概念で、システム全体をいくつかの「文脈(コンテキスト)」に分け、それぞれのコンテキスト内で独自のデータモデルを定義します。各コンテキストは、自分の業務領域に合わせたデータ形式を使うので、他のコンテキストと異なるデータモデルを持っていても問題ありません。

例:

  • 「注文管理」コンテキストでは、顧客情報を「Customer」と呼ぶが、「マーケティング」コンテキストでは、同じ顧客情報を「Lead」と呼ぶことができる。
  • それぞれのコンテキストは、自分たちの業務に最適化された形でデータを扱うので、共通のフォーマットに無理に合わせる必要がありません。

特徴: 各コンテキストが独自のデータモデルを持ち、必要に応じてコンテキスト間で変換やマッピングを行います。システム全体を統一するのではなく、むしろそれぞれの領域の違いを尊重します。

違いのまとめ

項目 Canonical Model Bounded Context Model
目的 システム間の統合をシンプルにする 各ドメインに最適化されたデータ設計
データの扱い方 システム全体で共通のデータ形式を使う 各コンテキストごとに独自のデータモデルを定義
使われる場面 システム統合(API連携やESBなど)での共通データモデルが必要な場合 ドメイン駆動設計(DDD)のように、業務領域に分かれた設計が必要な場合
変換の考え方 すべてのシステムが共通モデルに変換 必要に応じてコンテキスト間で変換やマッピング

例えると:

  • Canonical Modelは、異なる言語を話す人たちが「共通の言語(例えば英語)」を使って会話するようなものです。みんなが同じ言葉を使うので、理解しやすくなります。
  • Bounded Context Modelは、それぞれのグループが自分たちの文化や方言を持っていて、その方言を尊重しながら交流するようなものです。それぞれが自分にとって使いやすい言語を使い、必要に応じて翻訳します。

まとめ

  • Canonical Modelは、システム統合における「共通の言語」を作り、データの一貫性を持たせるために使います。
  • Bounded Context Modelは、システムの内部で各ドメインがそれぞれに最適なデータ形式を使い、違いを尊重しつつ協力するために使います。

それぞれのアプローチには長所があり、プロジェクトの性質や目的に応じて使い分けることが大切です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?