0
ドメイン駆動設計入門
和智 右桂 @digitalsoul0124
DevLOVE 2010.10.27
Beautiful Development
和智 右桂
JavaEE勉強会 所属
InfoQ Japanでときどき翻訳
Yukei Wachi
@digitalsoul0124
Digital Romanticism
http://d.hatena.ne.jp/digitalsoul
ネ...
•導入
•オブジェクトとは?
•モデルとは?
•ドメイン駆動設計とは?
アジェンダ
Photo by @digitalsoul0124 All rights reserved.
スライド中で使用されている画像について、
その著作権の全部または一...
導入
Domain-Driven Design http://www.flickr.com/photos/hlegius/3072942016/in/photostream/ by Hélio Costa
Eric Evans http://www.flickr.com/photos/chrstopher/1447594745/ by Chrstopher
オブジェクトとは?
デザインパターンを
実装するためのもの?
Strategy
Composite
Visitor
Chain of Responsibility
Template
Immersive Archeology - Aura Lily breathes...
The word no made from jigsaw puzzle pieces http://www.flickr.com/photos/horiavarlan/4536149424/ by Horia Varlan
オブジェクト指向があって
パターンがある。
その逆ではない。
...Insert Caption Here... http://www.flickr.com/photos/darrentunnicliff/3432070258/ by ĐāżŦ...
現実世界の モノ ?
動物オブジェクト
狐オブジェクト
狸オブジェクト
woodland animals http://www.flickr.com/photos/merwing/4460283913/ by merwing✿little de...
cute but wrong http://www.flickr.com/photos/gerardstolk/4989786533/ by Gerard Stolk
虹は何種類の色からできている?
Rainbows End http://www.flickr.com/photos/tomraven/3045385852/ by TomRaven
7色?
誰かがグラデーションに名前をつけただけ
color wheel http://www.flickr.com/photos/unleashingmephotography/2316833560/ by unleashingmephotog...
僕らは言葉によって世界を切り分け
そこに名前を与え
意味に囲まれて生きている
XIX: The Dyson Sun http://www.flickr.com/photos/arenamontanus/3407128256/ by Arenam...
オブジェクトは
概念 を
表現するためのもの
Concept
Woman's Hands with Rose http://www.flickr.com/photos/stephenkwilli/3258065448/ by Stephen K...
モデルとは?
Fashion @ the Curve - Jasmine http://www.flickr.com/photos/duke9042004/2971587200/ by duke9042004
モデル・ビュー・コントローラ
MVC
Model
View
Controller
Model
これがモデル?
if (hoge) {
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (fuga) {
if (fuzz) {
// do something
...
if(hoge){
for(inti=0;i<10;i++){
for(intj=0;j<10;j++){
if(fuga){
if(fuzz){
//dosomething
}
}else{
if(buzz){
//dosomething
}...
Script View Controller
Procedure View Controller
いわゆる
トランザクションスクリプト
Ancient Tamil Script http://www.flickr.com/photos/symp...
モデルとは、
知識の表象である
- Trygve Reenskaug
Tree of Knowledge http://www.flickr.com/photos/knilram/64366434/ by Knilram
1979
メンタルモデルを写し取るもの
出典:http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html by Trygve M. H. Reenskaug
Mental Model
言葉によって構築された、世界の像
メンタルモデルとは
kandinsky_composition_viii http://www.flickr.com/photos/williamcromar/4598260907/ by williamcro...
Object O#ented
概念をクラスとして表現し
London Bridge (Tower Bridge) : Reflection on the River Thames http://www.flickr.com/photos/ani...
ドメイン駆動設計とは?
ドメインとは?
知識を持ち、
影響を与え、
活動する領域
Sphere http://www.flickr.com/photos/maurizio_l/3477330734/ by mlaudisa
Domain
ドメインモデルとは?
専門家は
ドメインをとらえる
モデルを持っている
Astrolabe http://www.flickr.com/photos/kotomi-jewelry/4171052675/ by Kotomicreations (...
ドメイン駆動設計とは?
まず、ドメインとドメインロジックに
焦点を合わせる
複雑なドメインの設計は
モデルをベースにする
Astrolabe http://www.flickr.com/photos/biker_jun/4450890981/ ...
まずは、ドメインモデルを共有しよう!
Microsoft Bing Maps' datacenter http://www.flickr.com/photos/scobleizer/4870003098/ by Robert Scoble
武器は言葉
同じ言葉で、同じものを見る
Aurora (by unknown) http://www.flickr.com/photos/stijnvogels/20282205/ by Stijn Vogels
One team, one l...
言葉は世界を切り分けるもの
他の言葉との関係において意味を持つ
World Map 1689 — No. 1 http://www.flickr.com/photos/caveman_92223/3185534518/ by Chuck “Ca...
モデルを構成する言葉を
あらゆる場所で使う
会話でも、ドキュメントでも
ユビキタス言語
Ubiquit&s
Langua%
Interview: The Colour Of Sound 17.10.08 http://www.flickr.co...
あらゆる場所...
もちろん、コードの中でも
モデル駆動開発
Model D#ven Development
ドメインモデルを反映してソフトウェアを作る
escher wannabe b/w http://www.flickr.com/photos/midlander/54915243/ ...
A Diamond For The Love Flower DUC #57 http://www.flickr.com/photos/kacey/515389402/ by KaCey97007
専門家 開発者
ドメインモデル
ソフトウェア
どうやって?
アーキテクチャ
プロセス
3D Character and Question Mark http://www.flickr.com/photos/crystaljingsr/3914729343/ by 姒儿喵喵
アーキテクチャとは
構造を規定しつつ、可変性を支える戦略
City Planning III http://www.flickr.com/photos/42311564@N00/2410209145/ by Sebastian Niedlich ...
レイヤ型
アーキテクチャ
ドメインレイヤとは、
ドメインモデルが息づく場所
DSC_0082 http://www.flickr.com/photos/artgoeshere/2338940084/ by artgoeshere
Layered
...
ドメインモデルの構成要素
エンティティ
サービス
バリューオブジェクト
リポジトリ
Bright Blocks http://www.flickr.com/photos/venosdale/4323751812/ by KTVee
Entity...
イテレーティブなプロセス
コミュニケーションを通じて
モデルは深みを増していく
"S'il te plaît, fais moi un dessin..." http://www.flickr.com/photos/locktofob/4212...
言葉に導かれて...
新しい言葉を見つけることで
見えていなかったものが見えてくる
deeper insight
366 • 18 • New frames http://www.flickr.com/photos/sveinhal/22015...
Break(r&gh
変化は突然訪れる
Junk yard sexy (spark) http://www.flickr.com/photos/28481088@N00/2746176084/ by tanakawho
積み重ねた日々が
ある日...
この変化を支えるもの
レイヤ型アーキテクチャ
柔軟に設計されたモデル
Cat stairs http://www.flickr.com/photos/fofurasfelinas/54837986/ by fofurasfelinas
Laye...
もう一歩先へ...
戦略的設計
文脈
抽出
大局的構造
システムが巨大化しても
モデルは実装と結びついていなければならない
ISS http://www.flickr.com/photos/wildopallei/2087950431/ by Opal Lei
C...
言葉の意味を支えるもの
それが、文脈
20100411robodiversity http://www.flickr.com/photos/worldworldworld/4509419598/ by cesarharada.com
B&nde...
本質を見極めろ!
Drip http://www.flickr.com/photos/amagill/3252897830/ by AMagill
Core Domain
本質を抽出し
他の雑多なものから
切り離す
大局観を失うな!
大局的構造によって
システムを俯瞰的に理解する
Fall Creek Cornell Planations Aerial Photo http://www.flickr.com/photos/24994567@N06/2604...
M*sion Complete !
Photo by @digitalsoul0124 All rights reserved.
つまづくことがあっても、
立ち上がって
前へ進んでいけ!
- Eric Evans
Try, Try again.
A Garden of Climbs http://www.flickr.com/photos/cptspock/2557842...
最後に
One more (ing...
ウォーターフォールだからできない?
トランザクションスクリプトで
書くことになっている?
お前が欲しいのは口実だろう?
Waterfall
Transaction Sc#pt
クラス名にこだわっているか?
メソッド名にこだわっているか?
変数名にこだわっているか?
世の中に不満があるなら
自分を変えろ!
関心事は適切に分離されているか?
コードの臭いにふたをしていないか?
Name
Concern
Refacto#n...
そして何より
コードに
誇りを持っているか?
P#de
Fai(
未来を創れ
お前にだって
コードが書けるだろ
IDEだってある
コミュニティにも
アクセスできる
ソフトウェアは一編の小説である
緻密に構築され
美しく語られなければならない
ご質問は
ありますか?
ありがとうございました!
Photo by @digitalsoul0124 All rights reserved.
Upcoming SlideShare
Loading in...5
×

ドメイン駆動設計入門

6,874

Published on

Beautiful Development - DevLOVE 2010.10.27

Published in: Technology, Business
1 Comment
22 Likes
Statistics
Notes
  • スタッフのみなさま、聞いて下さったみなさま、ありがとうございました。
    発表原稿は以下のアドレスで公開しています。
    http://d.hatena.ne.jp/digitalsoul/20101027/1288180208

    注意:
    スライドのライセンスは'表示—非営利—継承'としていますが、スライド内の写真によっては改変不可のものもあります。2次利用の際にはご注意下さい。
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
6,874
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
119
Comments
1
Likes
22
Embeds 0
No embeds

No notes for slide

Transcript of "ドメイン駆動設計入門"

  1. 1. ドメイン駆動設計入門 和智 右桂 @digitalsoul0124 DevLOVE 2010.10.27 Beautiful Development
  2. 2. 和智 右桂 JavaEE勉強会 所属 InfoQ Japanでときどき翻訳 Yukei Wachi @digitalsoul0124 Digital Romanticism http://d.hatena.ne.jp/digitalsoul ネコ好き Photo by @digitalsoul0124 All rights reserved. 思想系プログラマ
  3. 3. •導入 •オブジェクトとは? •モデルとは? •ドメイン駆動設計とは? アジェンダ Photo by @digitalsoul0124 All rights reserved. スライド中で使用されている画像について、 その著作権の全部または一部は、 クレジットに示した著者によって保留されています。
  4. 4. 導入
  5. 5. Domain-Driven Design http://www.flickr.com/photos/hlegius/3072942016/in/photostream/ by Hélio Costa
  6. 6. Eric Evans http://www.flickr.com/photos/chrstopher/1447594745/ by Chrstopher
  7. 7. オブジェクトとは?
  8. 8. デザインパターンを 実装するためのもの? Strategy Composite Visitor Chain of Responsibility Template Immersive Archeology - Aura Lily breathes life into the architecture and culture of Ancient Egypt http://www.flickr.com/photos/pathfinderlinden/199857439/ by John E. Lester
  9. 9. The word no made from jigsaw puzzle pieces http://www.flickr.com/photos/horiavarlan/4536149424/ by Horia Varlan
  10. 10. オブジェクト指向があって パターンがある。 その逆ではない。 ...Insert Caption Here... http://www.flickr.com/photos/darrentunnicliff/3432070258/ by ĐāżŦ {bad contact, no biscuit}
  11. 11. 現実世界の モノ ? 動物オブジェクト 狐オブジェクト 狸オブジェクト woodland animals http://www.flickr.com/photos/merwing/4460283913/ by merwing✿little dear
  12. 12. cute but wrong http://www.flickr.com/photos/gerardstolk/4989786533/ by Gerard Stolk
  13. 13. 虹は何種類の色からできている? Rainbows End http://www.flickr.com/photos/tomraven/3045385852/ by TomRaven
  14. 14. 7色? 誰かがグラデーションに名前をつけただけ color wheel http://www.flickr.com/photos/unleashingmephotography/2316833560/ by unleashingmephotography
  15. 15. 僕らは言葉によって世界を切り分け そこに名前を与え 意味に囲まれて生きている XIX: The Dyson Sun http://www.flickr.com/photos/arenamontanus/3407128256/ by Arenamontanus
  16. 16. オブジェクトは 概念 を 表現するためのもの Concept Woman's Hands with Rose http://www.flickr.com/photos/stephenkwilli/3258065448/ by Stephen K. Willi
  17. 17. モデルとは?
  18. 18. Fashion @ the Curve - Jasmine http://www.flickr.com/photos/duke9042004/2971587200/ by duke9042004
  19. 19. モデル・ビュー・コントローラ MVC Model View Controller Model
  20. 20. これがモデル? if (hoge) { for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (fuga) { if (fuzz) { // do something } } else { if (buzz) { // do something } } } } }
  21. 21. if(hoge){ for(inti=0;i<10;i++){ for(intj=0;j<10;j++){ if(fuga){ if(fuzz){ //dosomething } }else{ if(buzz){ //dosomething } } } } } M !?
  22. 22. Script View Controller Procedure View Controller いわゆる トランザクションスクリプト Ancient Tamil Script http://www.flickr.com/photos/symphoney/76513801/ by Idol 確かに、処理の流れは分かりやすいけれど...
  23. 23. モデルとは、 知識の表象である - Trygve Reenskaug Tree of Knowledge http://www.flickr.com/photos/knilram/64366434/ by Knilram 1979
  24. 24. メンタルモデルを写し取るもの 出典:http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html by Trygve M. H. Reenskaug Mental Model
  25. 25. 言葉によって構築された、世界の像 メンタルモデルとは kandinsky_composition_viii http://www.flickr.com/photos/williamcromar/4598260907/ by williamcromar !e way we see " world
  26. 26. Object O#ented 概念をクラスとして表現し London Bridge (Tower Bridge) : Reflection on the River Thames http://www.flickr.com/photos/anirudhkoul/3499471010/ by Anirudh Koul メンタルモデルを映し取る
  27. 27. ドメイン駆動設計とは?
  28. 28. ドメインとは? 知識を持ち、 影響を与え、 活動する領域 Sphere http://www.flickr.com/photos/maurizio_l/3477330734/ by mlaudisa Domain
  29. 29. ドメインモデルとは? 専門家は ドメインをとらえる モデルを持っている Astrolabe http://www.flickr.com/photos/kotomi-jewelry/4171052675/ by Kotomicreations (aka- kotomigd) Domain Model
  30. 30. ドメイン駆動設計とは? まず、ドメインとドメインロジックに 焦点を合わせる 複雑なドメインの設計は モデルをベースにする Astrolabe http://www.flickr.com/photos/biker_jun/4450890981/ by Biker Jun (Offseason mode!) Domain D#ven Design
  31. 31. まずは、ドメインモデルを共有しよう! Microsoft Bing Maps' datacenter http://www.flickr.com/photos/scobleizer/4870003098/ by Robert Scoble
  32. 32. 武器は言葉 同じ言葉で、同じものを見る Aurora (by unknown) http://www.flickr.com/photos/stijnvogels/20282205/ by Stijn Vogels One team, one langua%
  33. 33. 言葉は世界を切り分けるもの 他の言葉との関係において意味を持つ World Map 1689 — No. 1 http://www.flickr.com/photos/caveman_92223/3185534518/ by Chuck “Caveman” Coker
  34. 34. モデルを構成する言葉を あらゆる場所で使う 会話でも、ドキュメントでも ユビキタス言語 Ubiquit&s Langua% Interview: The Colour Of Sound 17.10.08 http://www.flickr.com/photos/divid3d/2961571702/ by divid3d
  35. 35. あらゆる場所... もちろん、コードの中でも
  36. 36. モデル駆動開発 Model D#ven Development ドメインモデルを反映してソフトウェアを作る escher wannabe b/w http://www.flickr.com/photos/midlander/54915243/ by you are your atman
  37. 37. A Diamond For The Love Flower DUC #57 http://www.flickr.com/photos/kacey/515389402/ by KaCey97007 専門家 開発者 ドメインモデル ソフトウェア
  38. 38. どうやって? アーキテクチャ プロセス 3D Character and Question Mark http://www.flickr.com/photos/crystaljingsr/3914729343/ by 姒儿喵喵
  39. 39. アーキテクチャとは 構造を規定しつつ、可変性を支える戦略 City Planning III http://www.flickr.com/photos/42311564@N00/2410209145/ by Sebastian Niedlich (Grabthar)
  40. 40. レイヤ型 アーキテクチャ ドメインレイヤとは、 ドメインモデルが息づく場所 DSC_0082 http://www.flickr.com/photos/artgoeshere/2338940084/ by artgoeshere Layered Architecture
  41. 41. ドメインモデルの構成要素 エンティティ サービス バリューオブジェクト リポジトリ Bright Blocks http://www.flickr.com/photos/venosdale/4323751812/ by KTVee Entity Value Object Service Repository ファクトリ Factory Aggregate 集約 モジュールModule
  42. 42. イテレーティブなプロセス コミュニケーションを通じて モデルは深みを増していく "S'il te plaît, fais moi un dessin..." http://www.flickr.com/photos/locktofob/4212943811/ by Locktofob deep model
  43. 43. 言葉に導かれて... 新しい言葉を見つけることで 見えていなかったものが見えてくる deeper insight 366 • 18 • New frames http://www.flickr.com/photos/sveinhal/2201546999/ by Pragmagraphr
  44. 44. Break(r&gh 変化は突然訪れる Junk yard sexy (spark) http://www.flickr.com/photos/28481088@N00/2746176084/ by tanakawho 積み重ねた日々が ある日ブレイクスルーを起こす
  45. 45. この変化を支えるもの レイヤ型アーキテクチャ 柔軟に設計されたモデル Cat stairs http://www.flickr.com/photos/fofurasfelinas/54837986/ by fofurasfelinas Layered Architecture Su)le Design
  46. 46. もう一歩先へ...
  47. 47. 戦略的設計 文脈 抽出 大局的構造 システムが巨大化しても モデルは実装と結びついていなければならない ISS http://www.flickr.com/photos/wildopallei/2087950431/ by Opal Lei Context D*tillation lar%-scale ,ructureStrategic Design
  48. 48. 言葉の意味を支えるもの それが、文脈 20100411robodiversity http://www.flickr.com/photos/worldworldworld/4509419598/ by cesarharada.com B&nded Context Context Map
  49. 49. 本質を見極めろ! Drip http://www.flickr.com/photos/amagill/3252897830/ by AMagill Core Domain 本質を抽出し 他の雑多なものから 切り離す
  50. 50. 大局観を失うな! 大局的構造によって システムを俯瞰的に理解する Fall Creek Cornell Planations Aerial Photo http://www.flickr.com/photos/24994567@N06/2604256130/ by lvanvlee8 Sy,em Metaphor Evolving Order
  51. 51. M*sion Complete ! Photo by @digitalsoul0124 All rights reserved.
  52. 52. つまづくことがあっても、 立ち上がって 前へ進んでいけ! - Eric Evans Try, Try again. A Garden of Climbs http://www.flickr.com/photos/cptspock/2557842978/ by Jasen Miller
  53. 53. 最後に One more (ing...
  54. 54. ウォーターフォールだからできない? トランザクションスクリプトで 書くことになっている? お前が欲しいのは口実だろう? Waterfall Transaction Sc#pt
  55. 55. クラス名にこだわっているか? メソッド名にこだわっているか? 変数名にこだわっているか? 世の中に不満があるなら 自分を変えろ! 関心事は適切に分離されているか? コードの臭いにふたをしていないか? Name Concern Refacto#ng 要件を理解しているか?Model
  56. 56. そして何より
  57. 57. コードに 誇りを持っているか? P#de Fai(
  58. 58. 未来を創れ お前にだって コードが書けるだろ IDEだってある コミュニティにも アクセスできる
  59. 59. ソフトウェアは一編の小説である 緻密に構築され 美しく語られなければならない ご質問は ありますか?
  60. 60. ありがとうございました! Photo by @digitalsoul0124 All rights reserved.
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×