境界付けられたコンテキストとは

概要

コンテキストマップで整理されたコンテキストについて、なぜそのような切り分け方をしたのか、切り分ける意味が何かといったことを開発者以外にも伝えたい、という課題があった。

そこで本稿では、「境界づけられたコンテキスト」について、開発者以外にも伝わるような説明を試みる。

コンテキストの違いを意識する

同じ言葉であっても、コンテキストが異なれば言葉の意味が変わることがある。

例えば「注文」という言葉を例に挙げる。

営業部門では「お客様からの依頼」を指し、倉庫では「出荷の指示」、会計部門では「請求対象のデータ」を意味するかもしれない。

他にも以下のような例がある。

  • 「ユーザー」:開発チームではログインする人、カスタマーサポートでは問い合わせをしてくる人、マーケティングではターゲット顧客を指す
  • 「サービス」:技術者はAPIを、営業は顧客向けプランを意味する

このように、同じ言葉でも使われる業務や立場によって意味が変わる

この違いを明確にするのが、「コンテキスト」という考え方である。

コンテキストとは

コンテキストとは、言葉やルールの意味が一貫して通用する業務のまとまりのことである。

ドメイン駆動設計(DDD)においては、これを「バウンデッドコンテキスト(Bounded Context)」と呼ぶ。

例えば「注文」という言葉も、コンテキストによって意味が以下のように異なる。

  • コンテキストAでは、顧客の購入意思
  • コンテキストBでは、倉庫への出荷依頼
  • コンテキストCでは、請求の対象

このように、それぞれの業務で言葉の意味やルールが変わるところを「区切って」扱うのが、コンテキストの特徴である。

なぜコンテキストを整理するのか?

このコンテキストを意識せずに業務を進めたり、システムを設計したりすると、さまざまな問題が発生する。

  • 「注文」テーブルに請求や出荷の情報まで詰め込んだ結果、複雑で壊れやすいシステムとなる
  • チーム間で「○○ってどういう意味?」という質問が飛び交い、認識齟齬や責任の不明確さが生じる
  • 業務改善をしようとしても、影響範囲が読めず手が出せない

逆に、コンテキストを分けて整理しておけば、以下のようなメリットが得られる。

  • 言葉の意味が明確になる
  • 業務やシステムの責任範囲が整理される
  • チームの分担や変更がしやすくなる

つまり、コンテキストが適切に整理されることで、システムや組織は次のような恩恵を得ることができる。

  • コミュニケーションコストの削減
  • システムの設計や実装の複雑性の低減
  • チーム間の役割分担や責任範囲の明確化

正しくコンテキストが整理されていることは、システムと組織の両面における安定性の向上につながる。

コンテキストの例:ECサイトの「注文」

ECサイトの注文に関する業務を、3つの部門に分けてみる。

部門 「注文」の意味
フロントサイト 顧客がカートで確定した内容
倉庫業務 出荷対象の指示データ
会計 請求処理すべき売上データ

これらはいずれも「注文」という言葉を使っているが、扱っている内容・目的・処理がまったく異なる

この違いを無視してひとつの言葉でまとめてしまうと、

  • システムは複雑化する
  • 修正時の影響範囲が不明になる
  • 誤解が生まれやすくなる

だからこそ、「コンテキスト」を分けて考えることが重要である。

開発者だけの話ではない

コンテキストは、開発者だけが理解していれば良いものではない。

例えば以下のような疑問に思い当たることはないだろうか?

  • 「うちのチームはどこからどこまでが担当なのか?」
  • 「これは営業に聞くべきか?開発か?サポートか?」
  • 「この変更はどこに影響するのか?」

こうした問いは、すべてコンテキストの整理と密接に関係している。

業務の目的や言葉の意味が変わるところに境界を引き、その境界ごとに役割や責任を明確にする。

この視点は、開発者に限らず、営業、サポート、企画など、あらゆる職種にとって有益である。

まとめ

  • 同じ言葉でも意味が異なることは多い
  • その意味の違いに気づき、業務やシステムの境界として整理するのが「コンテキスト」である
  • コンテキストを明確にすることで、認識のズレやシステムの複雑性を防ぐことができる
  • チーム間の役割分担や業務改善にもつながる、全職種にとって有効な考え方である