狠狠撸

狠狠撸Share a Scribd company logo
2017/11/28
松岡 幸一郎
ドメイン駆動設計用語解説
境界付けられたコンテキスト 概念編
● 松岡 幸一郎
● @little_hand_s
発表者紹介
公式DDD Referenceの定義は以下の通りです。(和訳はだいぶ意訳しています)
???なかなかよくわからないですね。
● 2つの観点からの解説が必要
○ 概念としての境界付けられたコンテキスト
○ 境界付けられたコンテキストをどう実装に落としこむか
● ドメイン駆動設計ではすべての人(ソフトウェア開発者、ドメインエキスパート)
が同じ意味で言葉を使うことを目指します。
● 例えば、ECサイトで商品を販売するシステムを考えてみましょう。
ここでは、エンジニアと販売管理する人たちの中で、「商品」に関しては同じ
モデルを共有します。
● エンジニアと販売部のコミュニケーションがうまくいき、「商品」について同
じモデル、言葉を共有することができました。
● では、販売から配送までをシステム管理したくなったとします。
● おっと、配送部の人は「商品」と言った時に
全く別のものをイメージすることがわかりました。
● ドメイン駆動設計では、
すべての人が同じ意味で言葉を使うことを
目指すのではなかったのでしょうか?
● それでは強引に、「商品」の概念を統一しましょう。
● 『「商品」は売値、在庫数、配送先、配送状況を持ちます』????
なにやらややこしくなってきました。
● さらに、ドメイン駆動設計ではこれをコードに落とし込むことを目指すので、
「商品」の振る舞いを「商品」クラスに詰め込んでいくことに???
上手くいくイメージが湧きますか?
● さらに、請求の管理までをシステム化することになり、
カウンターパートとして経理部の人も増えました。
● 当然、経理の人は「商品」に関して违うイメージを持っています。
● さて、すべての人が同じ意味で言葉を使うことを目指す???ことは可能でし
ょうか?
● そう、システムが大規模になると、関係者すべてで統一したモデルを作ること
は難しくなるのです。
● エリック?エヴァンスのドメイン駆動設計で以下のようなことが語られていま
す。
● そこで、ドメイン駆動設計では大きなシステムを
「境界付けられたコンテキスト」に分割し、
それぞれの中でモデル、言語の統一を目指すのです。
● コンテキストを分割することができました!
「販売コンテキスト」「配送コンテキスト」それぞれが
一つの「境界付けられたコンテキスト」になります。
● さて、販売と配送を別のコンテキストとして定義し、
「商品」を別のモデルにしましたが、現実的には「商品」は繋がっています。
● ということは、このコンテキストをまたいで「商品」を
どう扱うかを決めないといけません。
● このようなコンテキスト同士の関係性を簡単な図で表すことを、
コンテキストマッピングと言います。
● このように
1.モデリング対象を境界付けられたコンテキストで分割する
2.コンテキスト同士の関係をマッピングする
という手順を踏むことが、ドメイン駆動設計の第一歩です。
● なぜなら、ドメイン駆動設計では、
「ドメイン専門家とソフトウェア専門家のコラボレーションで
モデルを探求する」ことを目指しますが、
「モデル」はまず適用するコンテキストを区切らないと定義できないからです。
● さて、ここまでで概念はおわかりいただけたと思います。
● ただ、
「言いたいことはわかった、
でも結局どうやって実装するのか全然わからないよ」
という状況ですよね?
● 次の记事ではその実装について书きたいと思います。お楽しみに!
● ブログでは他にもいろいろなDDD解説記事を書いています!!
● http://little-hands.hatenablog.com/entry/top
ありがとうございました

More Related Content

境界付けられたコンテキスト 概念編 (ドメイン駆動設計用語解説シリーズ)