ざっくり ddd 入門!!
TRANSCRIPT
和智 右桂
JavaEE勉強会 所属
グロースエクスパートナーズ株式会社 勤務
Yukei Wachi
@digitalsoul0124Digital Romanticism
http://d.hatena.ne.jp/digitalsoul
ネコ好き
Photo by @digitalsoul0124 All rights reserved.
IT アーキテクト
•導入•DDD的アプリの構造•モデル駆動設計
アジェンダ
Photo by @digitalsoul0124 All rights reserved.
スライド中で使用されている画像について、その著作権の全部または一部は、 クレジットに示した著者によって保留されています。
3D Character and Question Mark http://www.flickr.com/photos/crystaljingsr/3914729343/ by 姒儿喵喵
今までに開発したシステムについて、
ドメインをどれだけ理解していましたか?
いわゆるトランザクションスクリプト
Ancient Tamil Script http://www.flickr.com/photos/symphoney/76513801/ by Idol
手続きにまで分解
<script var a= var xl if(xls
SQL
SQLテンプレートパラメタ
結果セット
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
<script var a= var xl if(xls
入力チェック
<script var a= var xl if(xls
編集ロジック
データベース
DBアクセス
処理の種類に応じたモジュール化
処理内容に関わらず構造は安定
重要なロジックが埋もれる
航海
積載量
貨物
サイズ*
仕様書
データモデル
ソースコード
<script var a= var xl if(xls
10 %のオーバーブッキングを認める
// 貨物を追加するint 予約済み貨物量 = …if(予約済み貨物量 + 貨物.サイズ > 航海.積載量 * 1.1){ // 予約できない return … ;}
貨物予約ドメイン
ただし...
航海
積載量
貨物
サイズ*
仕様書
ドメインモデル
ソースコード
<script var a= var xl if(xls
10 %のオーバーブッキングを認める
// 貨物を追加するint 予約済み貨物量 = …if(オーバーブッキングポリシー.allows(貨物, 航海)){ // 予約できない return … ;}
貨物予約ドメイン
オーバーブッキングポリシー
{貨物のサイズの合計 < 航海の積載量 * 1.1}
制約をコード内で可視化する
ただし、バランスが重要
https://github.com/Mikkeren/FizzBuzzEnterpriseEdition/blob/master/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/BuzzStrategy.java
Astrolabe http://www.flickr.com/photos/kotomi-jewelry/4171052675/ by Kotomicreations (aka- kotomigd)
モデルとは専門家によって
整理され単純化された
世界観
まずは、モデルを共有しよう!Microsoft Bing Maps' datacenter http://www.flickr.com/photos/scobleizer/4870003098/ by Robert Scoble
escher wannabe b/w http://www.flickr.com/photos/midlander/54915243/ by you are your atman
ソフトウェアに
モデルを反映させる
3D Character and Question Mark http://www.flickr.com/photos/crystaljingsr/3914729343/ by 姒儿喵喵
ところでモデルと言われて、どんなものを思い浮かべますか?