Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
非エンジニアがDDD (ドメイン駆動設計)について説明してみる。 くまごろー
Slide 2
Slide 2 text
ドメイン駆動設計(Domain Driven Design) ・Eric Evansという人が提唱した設計思想 ・ドメインモデルをソフトウェア開発の中心にすえる手法 ・他にも色んな駆動設計 ・テスト駆動設計(TDD) ・モデル駆動設計(MDD)
Slide 3
Slide 3 text
実際どういう設計思想? ドメインモデルをソフトウェア開発の中心にすえ、コードやコミュ ニケーションを常にドメインモデルと一体化させながら、ドメイン モデルを反復的に深化させることで、価値の高いアプリケーショ ンを生み出していこうとする考え方。
Slide 4
Slide 4 text
よくわからないので 分解してみる。
Slide 5
Slide 5 text
「ドメイン」 ・ソフトウェアが対象としている業務領域 → ソフトウェア化の対象となるもの 例:会計ソフトであれば、会計処理の部分がドメイン領域ということになる
Slide 6
Slide 6 text
「ドメインモデル」 ・ドメインに存在する概念を抽象化したもの。 ※概念・・・在庫管理の「倉庫」や「移動」等 ・ ドメインに存在する本質的な振る舞いは、すべてドメインモデルに属する形でモデリ ングされる
Slide 7
Slide 7 text
これらをかみ砕くと・・・ ・現実にある業務(ドメイン)を正しく理解して「ドメインモデル」として表現し、ドメインモ デルを元にコードを作成する設計思想 ・運用と共にモデルを改善・進化させ続けることで現実の業務とコードの一体化を進 め、運用しやすいアプリケーションを作る
Slide 8
Slide 8 text
どんな利点があるのか? ・DDDを実践することで、ドメイン知識がそのままコードへ反映される ・ドメイン知識とコードが地続きになる → 変化に強いソフトウェアを構築できる
Slide 9
Slide 9 text
実際何をやるのか? 〇 ドメインオブジェクトを見つける (1)ドメインエキスパートからのヒアリング・業務用語集の作成 (2)業務用語を図式化(業務知識を要約し、関係性を明らかにする) (3)ドメインを洗い出す → コードに落とし込む
Slide 10
Slide 10 text
疑問1:MDDとDDDは何が違うの? ・MDDは「モデル」を元に行なう設計技法 ・MDDはドメインだけが適用範囲ではない。(UI等、純粋に技術的なものにも適用でき る) ※ ただ、DDDはその実現方法の中心にMDDを採用している。 → ドメインの複雑さを理解し、ソフトウェアに反映させる最善策はモデルを使うことで あるというスタンス
Slide 11
Slide 11 text
疑問2:DDDとOOPはセットなの? 結論:セットではない ・DDDでよく用いられるMDDを実現するのに、オブジェクト指向は(プログラミング技法 として)最適 → DDD=OOPでないといけないわけではない
Slide 12
Slide 12 text
DDDを理解する上で重要そうな言葉① <ドメインエキスパート> ・ドメイン領域に精通した人のこと。(ユーザーになることが多い) つまり・・・ DDDには非エンジニアの協力が欠かせないということ。(これが時にDDD導入の壁 になるらしい)
Slide 13
Slide 13 text
DDDを理解する上で重要そうな言葉② <ユビキタス言語> ・エンジニアとドメインエキスパート双方が理解できる共通用語 → エンジニアはドメインエキスパートと比べドメイン領域の知識が少ない。そのた め、エンジニア側がエキスパートの話を正しく理解できず、齟齬を生じさせることがあ る。これを解決するために必要
Slide 14
Slide 14 text
参考になったページ ・DDD難民に捧げる Domain-Driven Designのエッセンス 第1回 ドメイン駆動設計とは ・非エンジニアの方に「DDDって何なの?」と聞かれたときの説明[ドメイン駆動設計] ・業務知識を中心に考える設計手法ドメイン駆動設計の基礎知識 ・ドメイン駆動設計に2年間関わって学んだこと ・ドメイン駆動設計で保守性をあげたリニューアル事例 〜 ショッピングクーポンの設計紹介
Slide 15
Slide 15 text
ご清聴ありがとうございました