DDD / Modeling Out Loud


DDD

声に出してモデリングを行う (P30)

要約

  • 人間は話すことが得意なので、話すことを他のコミュニケーションと分けてしまうのは大きなロスだ
  • 要件定義や設計の際、我々はドメインモデルの言葉で話しているように思うかもしれないが、そうではない
    • ドメインモデルの関連や相互作用を表す単語を使っていない
  • モデルを洗練させるには、モデルの取りうる様々な可能性を声に出して試してみるとよい
    • 「Routing Serviceに出発地、目的地、到着時間を与えると、Routing Serviceは貨物を置く場所を見つけて・・・ええと、それをデータベースに投入する」(曖昧で技術的)
    • 「出発地や目的地などをRouting Serviceに渡すと、必要な物を全て持っている Itinerary が返ってくる」(より完璧だが、冗長)
    • 「Routing Serviceが、Routing Specification を満たす Itinerary を見つける」(簡潔)
  • 図表で視覚による推論をしたり、分析力を使って入念に分析や設計したりするのと同様に、言語力を使ってモデルの振る舞いを試すのは大事だが、見落とされやすい
  • 現に、人間の脳は会話の中で複雑さを扱うことにおいて、特別な何かを持っている
    • 例えば、言語的な背景が違う人同士が取引をするとき、人は自分たちで言葉の違いを見つけ出し、ピジン語と呼ばれる言語を作り出す
  • また、筆者は大学でスペイン語しか話してはいけない講義に出たが、それによって流暢に話せるようになった
  • ユビキタス言語で開発者とドメインの専門家が話すと、ユビキタス言語を流暢に話せるようになる
    • 図表や文書でやり取りしただけでは、そうはいかない
  • ユビキタス言語をソフトウェアプロジェクトに持ち込むのは大変だし人間が持つ自然な能力が必要となるが、図表で情報を素早く把握できるのと同様に、言語を扱う能力をドメイン駆動開発に有効に使うことができる
  • 「ユビキタス言語パターンへの補遺」
    • システムについて話す時には、モデルを演じよう。モデルの要素や相互作用について、モデルの方法で概念を結びつけ、声に出してシナリオを記述しよう。自分が言いたいことを簡単に言い直すことができれば、それを図表やコードに反映させよう。

担当者(本間)のつぶやき

ピジン語と言うのは、中国語のbusinessの意から来てる言葉らしいです。

みんなの突っ込み

  • 一番最初のフレーズですが、正確には、「話し言葉が、それ以外のコミュニケーションのあり方とかけ離れてしまうのとりわけ大きな損失だ。というのも私たち人間は話し言葉に対する天分を持っているのだから」だと思われます。最後の太字箇所については、「システムについて話す時には、モデルを使って行おう。シナリオについて語るときには、モデルの要素と相互作用を使い、また、モデルが許す仕方で概念を結びつけよう」だと思います。全体的にポイントは、【プロジェクト内で日常交わされる会話でも、モデルの言語を使用することが大事】ということですよね。 -- 和智? 2008-08-23 (土) 02:25:02
  • 最初の文は、超訳過ぎたので直しました(笑)。後半は、(1)asが時を表す、(2)usingとcombiningは同列、って辺りを間違えていたので、指摘を参考に修正しました。 -- 本間? 2008-08-23 (土) 12:29:00

まとめ (議事録)