Chapter 2. Discovering Domain Knowledge
2-1. Business Problems/ビジネス課題
2-2. Knowledge Discovery/ナレッジ発見
2-3. Communication/コミュニケーション
2-4. What is a Ubiquitous Language?/ユビキタス言語とは?
2-5. Language of the Business/ビジネスの言語
2-6. Model of the business domain/ビジネスドメインのモデル
2-7. Conclusion/結論
2-8. Exercise/エクササイズ
Slide 4
Slide 4 text
It's developers' (mis)understanding,
not domain experts' knowledge, that
gets released in production.
-Alberto Brandolini
製品としてリリースされるのは、開発者の(誤った)理解であって、ドメインエキスパートの
知識ではない。
ドメイン駆動設計では、
ユビキタス言語を使うことで、ドメ
インエキスパートからエンジニアに
知識を伝える
2-3. Communication
Slide 17
Slide 17 text
2-4. What is a Ubiquitous
Language?
/ユビキタス言語とは?
Slide 18
Slide 18 text
従来のソフトウェア開発ライフサイク
ルでは、右記のような変換をしてい
る。
継続的に変換する代わりに、ビジネス
を説明するための単一言語であるユ
ビキタス言語を育成する。
● ドメイン知識を分析モデルへ
● 分析モデルを要求へ
● 要求事項をシステム設計へ
● システム設計をソースコードへ
2-4. What is a Ubiquitous Language?
Slide 19
Slide 19 text
すべてのステークホルダーが、翻訳に頼るのではなくユビキタス言語を話し、
記述しなければならない。
ドメインエキスパートが、ビジネスドメインについて推論をする際に、ユビキタス
言語を快適に使用できることが重要。ビジネスドメインとドメインエキスパートの
メンタルモデルの両方を表現する。
2-4. What is a Ubiquitous Language?
Slide 20
Slide 20 text
2-5. Language of the Business
/ビジネスの言語
Slide 21
Slide 21 text
ユビキタス言語は、ビジネスの言語である。ビジネス領域に関連する用語のみ
で構成される必要がある。(技術的な専門用語は使わない)
ユビキタス言語の目的は、ドメインエキスパートのビジネス知識とメンタルモデ
ルを、理解しやすい言葉にすること。
2-5. Language of the Business
Slide 22
Slide 22 text
ビジネスの言葉で作成されたステートメント。
1. 広告キャンペーンでは、さまざまなクリエ
イティブな素材を表示できます。
2. キャンペーンは、そのプレースメントの少
なくとも1つがアクティブである場合にのみ
公開できます。
3. 販売手数料は、取引が承認された後に会
計処理されます。
2-5. Language of the Business - Senarios
技術的な言葉で作成されたステートメント。
1. 広告フレームには、HTMLファイルが表示
されます。
2. キャンペーンは、active-placements
テーブルに少なくとも 1つの関連レコード
がある場合にのみ公開できます。
3. 販売手数料は、取引テーブルと承認済み
販売テーブルの相関レコードに基づいて
います。
Slide 23
Slide 23 text
2-5. Language of
the Business -
Senarios
技術的な言葉で作成されたステートメント。
1. 広告フレームには、 HTMLファイルが表示されま
す。
2. キャンペーンは、active-placements テーブ
ルに少なくとも1つの関連レコードがある場合に
のみ公開できます。
3. 販売手数料は、取引テーブルと承認済み販売
テーブルの相関レコードに基づいています。
技術的な言葉は、ドメインエキ
スパートにとっては不明瞭なも
のであり、エンジニアもビジネ
スロジックを完全には理解でき
ない。
Slide 24
Slide 24 text
ユビキタス言語は、正確で一貫している必要がある。ユビキタス言語の各用語
は1つだけの意味を持つ。
2-5. Language of the Business -
Consistency
曖昧な用語
たとえば、「ポリシー」という用語は、規制規則また
は保険契約を意味する場合がある。正確な意味
は、文脈に応じて人間同士で相互理解ができる
が、ソフトウェアは曖昧さを理解できない。
同義語
たとえば、「ユーザー」という用語は、訪問者、管理
者、アカウントなどの他の用語と同じ意味で使われ
ていることがある。特定のコンテクストにおいて各
用語を明示的に使用することで、用語の違いを理
解でき、単純で明確なモデルと実装を構築すること
ができる。
Slide 25
Slide 25 text
2-6. Modelof the Business Domain
/ビジネスドメインのモデル
Slide 26
Slide 26 text
モデルとは、あるものや現象を、ある面を意図的に強調し、他の面を無視して
簡略して表現したもの。特定の用途を想定して抽象化したもの。
モデルは現実世界のコピーではなく、現実世界のシステムを理解するのに役
立つ人間の構成物である。
2-6. Model of the Business Domain
Slide 27
Slide 27 text
モデルの典型例として、地図がある。
どの地図もモデルであり、ナビゲーショ
ン、地形、地下鉄などを表している。そ
れぞれのモデルで、特定の目的や解決
したい問題をサポートするのに十分な
データが含まれている。
2-6. Model of the Business Domain
出典: Learning Domain-Driven Design
Slide 28
Slide 28 text
Effective Modeling
効果的なモデルには、その目的を達成するために必要な詳細のみが含まれて
いる。本質的にはモデルは抽象化であり、不要な詳細を省略する。問題を解
決するために必要なものだけを残すことで、複雑さを処理する。
2-6. Model of the Business Domain
Slide 29
Slide 29 text
Modeling the Business Domain
ビジネスドメインのモデルを効果的に構築するには、関与する事業体とその行
動、因果関係、及び不変条件を反映する。必要なシステムの実装を可能にす
るのに十分なビジネスドメインの側面が含まれている。
ソフトウェアが解決しようとしている特定の問題に対処するため、ドメインのす
べてを網羅することは想定しない。
2-6. Model of the Business Domain
Slide 30
Slide 30 text
Continuous Effort
ユビキタス言語は、ドメインエキスパートとのやり取りによって、不正確さや欠
陥のある箇所を明らかにすることができる。
ユビキタス言語の育成は継続的なプロセスとなる。要件、ドキュメント、ソース
コードもユビキタス言語を使用する。日常的に使用することで、ビジネスドメイ
ンに対するより深い洞察が可能になる。
2-6. Model of the Business Domain
Slide 31
Slide 31 text
Tool
ユビキタス言語の管理プロセスを軽減できるツールやテクノロジーがある。たと
えば、Wikiはユビキタス言語を文書化するための用語集として使用できる。用
語集は全てのチームメンバーが更新する。
2-6. Model of the Business Domain
Slide 32
Slide 32 text
Tool
「名詞」も大事だが、行動を捉えることが非常に
重要。動詞に関連づけられたただのリストでは
なく、ルール、仮定、及び不変条件を含むビジ
ネスロジックがある。これは用語集では表現し
にくい。
ユースケースやGherkin言語で書かれたテスト
コードは、ユビキタス言語をキャプチャできる。
ndependでは、ユビキタス言語を静的解析でき
る。
2-6. Model of the Business Domain
出典: Learning Domain-Driven Design
Challenges
ドメイン知識を収集する唯一の信頼できる方法は、ドメインエキスパートと会話
すること。多くの場合、最も重要な知識は暗黙知にある。
ドメインエキスパート自身のビジネスドメインの理解にも、曖昧さや明示的な定
義がないものもある。学習プロセスは相互のものであり、ドメインエキスパート
が自分たちのビジネスドメインをよりよく理解する助けになる。
2-6. Model of the Business Domain