ドメイン駆動設計再入門
Post on 16-Jul-2015
7.269 Views
Preview:
TRANSCRIPT
和智 右桂
JavaEE勉強会 所属
グロースエクスパートナーズ株式会社 勤務
Yukei Wachi
@digitalsoul0124Digital Romanticism
http://d.hatena.ne.jp/digitalsoul
ネコ好き
Photo by @digitalsoul0124 All rights reserved.
IT アーキテクト
• DDD nutshell • DDDの魅力 • システムの中のDDD • まとめ
アジェンダ
Photo by @digitalsoul0124 All rights reserved.
スライド中で使用されている画像について、 その著作権の全部または一部は、 クレジットに示した著者によって保留されています。
基礎
https://www.flickr.com/photos/pgoyette/2280685630/
“モデルとは、 知識の表象である”
- Trygve Reenskaug
1979
http://www.flickr.com/photos/knilram/64366434/
“メンタルモデルを写し取るもの”出典:http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html by Trygve M. H. Reenskaug
Mental Model
MVCからDCIへ
DCIアーキテクチャ
モデル・ビュー・コントローラhttp://d.hatena.ne.jp/digitalsoul/20100913/1284330448
http://d.hatena.ne.jp/digitalsoul/20100131/1264925022
Domain-Driven Design http://www.flickr.com/photos/hlegius/3072942016/in/photostream/ by Hélio Costahttps://www.flickr.com/photos/kakutani/608079788/
本に書かれていること
モデルの基本的な用法 1. モデルと設計の核心の相互作用 • モデルと設計/実装を結びつける • →モデル駆動設計
2. コミュニケーションの基盤 • モデルの言葉を会話でも使う • →ユビキタス言語
3. 蒸留された知識 • ドメインエキスパートの知識の表現
http://www.flickr.com/photos/biker_jun/4450890981/
モデルはソフトウェアの中核となる
オブジェクト
オブジェクト
Search
Small Pop-Up
Pop-Up Menu
Small Combo
Combo BoxBits
BobsThings
Stuff
OKCancel
Label
Ends
Odds
Help Tag
Explanotext
A Very Nice Window Indeed
SIDEBAR
Search
Odds
Ends
UIデータベース
リポジトリクライアント
オブジェクト
ドメイン層
“ドメイン層とは、モデルが息づく場所”
モデルの深化 • 時間をかけてモデルは深まっていく • モデリングは発見のプロセス • ブレイクスルー • 深いモデルを作るためのテクニック • 暗黙的な概念の明示化 • しなやかな設計 • 先達からの学習 • デザインパターン
モデルを核としたシステム観 • GOOS (2009) • Steve Freeman、Nat Pryce • テストをガイドとして、オブジェクト指向のシステムを育てる
• DSL (2010) • Martin Fowler • “DSLは、モデルの表層を取り巻くベニヤのようなものである”
https://www.flickr.com/photos/ideacreamanuelapps/3541399009/
ある抽象度でのモデリングは絶対に必要
SIの現場への福音https://www.flickr.com/photos/ideacreamanuelapps/3541399009/
滝
https://www.flickr.com/photos/spyker3292/5562267244/
規律
https://www.flickr.com/photos/mythoto/2441449507
http://www.flickr.com/photos/symphoney/76513801/
トランザクションスクリプト
•顧客と会話しながら • イテレーティブかつインクリメンタルに • 変化に柔軟に対応しながら • 技術的に難易度の高いものを作る
https://www.flickr.com/photos/dariobn/15460074140
Agile
バランスが大切
https://www.flickr.com/photos/cs-fotografie/15448459660/
広告 注文 請求
広告を作る
広告を参照する 注文する 請求書を
作る請求書を送る
Alister Cockburn “Writing Effective Use Cases” Addison-Wesley 2001 p.62
モデルをどこまで保つべきか?
ドメインレイヤの外側 • ユーザーインターフェイス • 永続化層 • 他システムとの統合層
オブジェクト
オブジェクト
Search
Small Pop-Up
Pop-Up Menu
Small Combo
Combo BoxBits
BobsThings
Stuff
OKCancel
Label
Ends
Odds
Help Tag
Explanotext
A Very Nice Window Indeed
SIDEBAR
Search
Odds
Ends
UIデータベース
リポジトリクライアント
オブジェクト
ドメイン層
複雑さは囲い込む
https://www.flickr.com/photos/24354425@N03/15735373141
“慣れた人に任せるしかないよね” -- Martin Fowler(PofEAA)
http://www.flickr.com/photos/52086903@N07/5611639409/
https://www.flickr.com/photos/mtsofan/14303159072/
顧客と同じものを見る
システムを取り巻く流れ • 企業のビジネス • システムを使う人の動き • 社会の状況
https://www.flickr.com/photos/pablolfc/8508796272/
https://www.flickr.com/photos/pablolfc/8508796272/
システム全体のフィードバックループを設計する
https://www.flickr.com/photos/brewbooks/7358153986
https://www.flickr.com/photos/gsfc/6074582633/
システム全体で考えよう
https://www.flickr.com/photos/antontwang/10221284164/
世界に対するエンジニアの貢献は コードの優劣では決まらない
top related