DDD Domain-Driven Designについての軽い歴史

すごくざっくりいうと、Domain-Driven DesignはEric Evansさんによって2003年に提唱された考え方で、システムを作る際も業務と切り離さず、密接に設計・実装しようというものです。

何がいいの?

ビジネスの境界とシステムの境界を1:1にすることがよいと提唱していて、今ぐんぐん来ているマイクロサービスを分ける際の境目として最適だと言われています。
ビジネスの境界によって分けられたシステムというのは高凝集・疎結合に分けられるという利点があり、まさしくマイクロサービスとの親和性がすごく高いと言えます。

簡単な用語説明

  • ドメイン 業務領域全体のこと
  • サブドメイン 業務領域のうち、小さく区切られたもの
  • ユビキタス言語 Bounded Contextの中で使われる用語のこと。
  • Bounded Context システムの境界。サブドメインと1:1であることが望ましい

ユビキタス言語について

ユビキタス言語はBounded Context内で使われる用語、って何言っているかよくわからないかもしれませんが、関西で「たぬきそば」というと「油揚げいりのそば」なのに対し、関東で「たぬきそば」というと「天かすいりのそば」というように、同じ言葉でも意味が異なることがあります。
それを、ユビキタス言語として定めて使いましょうというものです。もともと、システム屋さんと業務屋さんで異なる言葉を用いていたが、同じユビキタス言語を用いて会話をするようにって言われています。

簡単なドメインとサブドメインの例

例えばですが、牛丼屋というドメインだったとすると、サブドメインとしては以下のようなものが考えられると思います。

  • 料理を作る
  • 食器を洗浄する
  • 店内の環境を快適にする
  • 料理/ドリンクを提供する
  • などなど・・・

本日は以上で終わりにしたいと思います。
次回はサブドメインはどう分割するのがいいか自分なりの見解を述べたいと思っています。