ざっくり ddd 入門!!

34
ざっくりDDD入門!! グロースエクスパートナーズ(株) 和智 右桂 java-ja DDD

Upload: yukei-wachi

Post on 20-Aug-2015

9.885 views

Category:

Documents


4 download

TRANSCRIPT

ざっくりDDD入門!!グロースエクスパートナーズ(株)

和智 右桂

java-ja DDD

和智 右桂

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.

スライド中で使用されている画像について、その著作権の全部または一部は、 クレジットに示した著者によって保留されています。

導入

ソフトウェアは複雑だ...

複雑なのは、ドメインそのもの、

すなわち、ユーザの活動やビジネスなのである。

ドメイン駆動設計 p.xiv

3D Character and Question Mark http://www.flickr.com/photos/crystaljingsr/3914729343/ by 姒儿喵喵

今までに開発したシステムについて、

ドメインをどれだけ理解していましたか?

業務知識とは?キーパーソン

現場の手際

経済の知識

業務知識とは?

データの構造

ルール

システム間連携

演算

業務知識を反映させることで、ソフトウェアは柔軟に変更したり

拡張したりできるようになる

DDD的ソフトウェアの構造

業務知識を反映したソフトウェアの構造とは?

その前に

業務知識を反映したソフトウェアの構造とは?

それほど しない

いわゆるトランザクションスクリプト

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}

制約をコード内で可視化する

“正しい”オブジェクト指向設計?

モデル駆動開発

複雑なドメインの設計は

モデルを基にする

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

ソフトウェアに

モデルを反映させる

続きは実践編へ!

One More !ing...

3D Character and Question Mark http://www.flickr.com/photos/crystaljingsr/3914729343/ by 姒儿喵喵

ところでモデルと言われて、どんなものを思い浮かべますか?

作るべきは、業務のモデル

シンプルなら、ほぼE-R図

続きは実践編へ!

ありがとうございました!Photo by @digitalsoul0124 All rights reserved.