dddをじっくり語る 60分 - umtp 特定非営利 ... · dddをじっくり語る 60分...

56
DDDをじっくり語る 60分 グロースエクスパートナーズ(株) ITアーキテクト 和智 右桂 UMTP MF 2014

Upload: others

Post on 27-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

DDDをじっくり語る60分

グロースエクスパートナーズ(株) ITアーキテクト 和智 右桂

UMTP MF 2014

Page 2: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

和智 右桂

JavaEE勉強会 所属

グロースエクスパートナーズ株式会社 勤務

Yukei Wachi

@digitalsoul0124Digital Romanticism

http://d.hatena.ne.jp/digitalsoul

ネコ好き

Photo by @digitalsoul0124 All rights reserved.

IT アーキテクト

Page 3: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

時々翻訳をしています

Page 4: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

普段の開発経験を元に、第三部、第四部の実践について考えていきます。

Page 5: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

•DDDとは•モデリングとは•大規模開発の課題•ドメイン分割とコンウェイの法則•コアドメインとしなやかな設計•まとめ

アジェンダ

Photo by @digitalsoul0124 All rights reserved.

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

Page 6: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

DDDとは

Page 7: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

Domain DrivenDesign

Page 8: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

Eric Evans http://www.flickr.com/photos/chrstopher/1447594745/ by Chrstopher

Eric Evans

Page 9: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

出版は2003年• 2001年 Windows XP• 2002年 J2SE 1.4 リリース• 2003年 Spring Framework リリース• 2004年 Oracle 10g リリース• 2005年 StrutsがApacheトップレベル プロジェクトに昇格

Chronology http://www.flickr.com/photos/elsie/4607687530/ by Elsie esq.

Page 10: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

DDDの主な参考文献

Page 11: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

エッセンスは?

Page 12: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

顧客の仕事を理解すること

View At Work http://www.flickr.com/photos/slightlynorth/2127922888/ by Slightlynorth

Domain

Page 13: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

顧客の言葉で理解すること

Langua!Meeting in the Office http://www.flickr.com/photos/antoniofurno/1031022163/ by antoniofurno

Page 14: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

モデルを共有すること

hands wikipedia aussiegall http://www.flickr.com/photos/nojhan/3204073130/ by nojhan

Model

Page 15: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

Astrolabe http://www.flickr.com/photos/biker_jun/4450890981/ by Biker Jun (Offseason mode!)

モデルを基に

Model D"ven Development

ソフトウェアを作ること

Page 16: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

モデリングとは

Page 17: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

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

モデリングとは?

Page 18: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

“モデルとは、知識の表象である”

- Trygve ReenskaugTree of Knowledge http://www.flickr.com/photos/knilram/64366434/ by Knilram

1979

Page 19: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

モデリングとは、知識に基づく

表現の構造化・立体化である

Page 20: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

そう言われましても

Page 21: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

お題

新年会幹事の仕事を新人に教える

Page 22: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

手続き型•お店を選ぶ•メンバーの出欠を確認する•お店を予約する•当日の乾杯指名 / 一本締め•お金を集める•支払いをする

Page 23: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

モデル型企画 遂行 会計

予算感 傾斜ジョウゲカンケイ

補助金

新年会幹事業務の “モデリング”

Page 24: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

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

システム開発にとってモデリングとは?

Page 25: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

システムの性質による多機能

特定機能

汎用 個別

いわゆるエンプラ

いわゆるパッケージ

Page 26: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

パッケージ•汎用化は抽象化によって実現•Adaptiveなモデル•必然的に難易度が高くなる

Page 27: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

エンタープライズ•具体的でやっかいな業務•機能間難易度の濃淡が激しい

本発表のテーマ

Page 28: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

大規模開発の課題

Page 29: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

個別 / 多機能 / 大人数開発

http://www.slideshare.net/gxp/sgt2014gxp

Page 30: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

課題•スケールアウトにどう耐えるか•継続的な変化をどう実現するか

Page 31: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

柔軟さと単純さのバランス•変化するところはしなやかに•変化しないところは硬く

Page 32: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

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

どうバランスをとるの?

Page 33: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

手続き型 vs モデル型

機能追加のコスト

ロジックの複雑度

トランザクションスクリプト

ドメインモデル

損益分岐点

PoEAAより

Page 34: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

システムの基本モデル

ユーザは、ユーザインターフェイスを通じて、データにアクセスする。

ユーザー

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

ロジック

Page 35: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

ロジックの構成方針・トランザクションスクリプト ・ユーザーの要求を満たす手続き・ドメインモデル  ・複雑なロジックを   オブジェクト指向で解決する

Page 36: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

<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アクセス

トランザクションスクリプト

Page 37: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

ドメインモデル

オブジェクト

オブジェクト

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データベース

リポジトリクライアント

オブジェクト

ドメイン層

レイヤ化アーキテクチャ

Page 38: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

そう言われましても

Page 39: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

ドメイン分割と

コンウェイの法則

Page 40: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

トランザクションスクリプトとドメインモデルという対比を軸に、システム全体をどう組み立てるのか

テーマ

Page 41: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

基本方針•ドメインの境界は明確に•ドメイン同士を結びつけるインターフェイスは注意して設計する

•ドメインの分割に際して体制を無視しない•コンウェイの法則重要

Page 42: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

最初のドメイン分割

Page 43: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

目的の違い「サマリーレベル」(雲または凧)のユーザーゴール

広告 注文 請求

広告を作る

広告を参照する 注文する 請求書を

作る請求書を送る

Alister Cockburn “Writing Effective Use Cases” Addison-Wesley 2001 p.62

基本

Page 44: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

横断的関心業務的な関心が複数のドメインにまたがる

広告

注文

請求

権限

基本

Page 45: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

コンウェイの法則

汎用モジュール

職人

個別モジュール

開発者

個別モジュール

開発者個別モジュール

開発者

組織の構造とプロダクトの構造をそろえておく

Page 46: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

コアドメインと

しなやかな設計

Page 47: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

複雑さを凝集したドメインにどう立ち向かうか

テーマ

Page 48: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

基本方針

•レイヤ化アーキテクチャにより、オブジェクトが動ける空間を作る•基本はオブジェクト指向の手筋•業務的な意味のある概念に対して敏感になること

Page 49: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

レイヤ化アーキテクチャシステム的な都合から業務的な概念を分離するための空間•「SQLを発行して結果セットを取得する」から「リポジトリに問い合わせてオブジェクトを取得する」へ

Page 50: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

オブジェクト指向

•小さいクラス、 小さいメソッドを作ることを怖がらない•手続きに意味を与える手段になる

•ストラテジーパターン多用

Page 51: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

概念の抽出制約プロセス組み合わせがあるルール

Page 52: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

制約が手続きに溶け込む

航海

積載量

貨物

サイズ*

仕様書

データモデル

ソースコード

<script var a= var xl if(xls

10 %のオーバーブッキングを認める

// 貨物を追加するint 予約済み貨物量 = …if(予約済み貨物量 + 貨物.サイズ > 航海.積載量 * 1.1){ // 予約できない return … ;}

貨物予約ドメイン

Page 53: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

制約が可視化される

航海

積載量

貨物

サイズ*

仕様書

ドメインモデル

ソースコード

<script var a= var xl if(xls

10 %のオーバーブッキングを認める

// 貨物を追加するint 予約済み貨物量 = …if(オーバーブッキングポリシー.allows(貨物, 航海)){ // 予約できない return … ;}

貨物予約ドメイン

オーバーブッキングポリシー

{貨物のサイズの合計 < 航海の積載量 * 1.1}

Page 54: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

まとめ

Page 55: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

•DDDはオブジェクト指向の「正しい」使い方を教えてくれる本•エンタープライズでは、オブジェクト指向の使い所が難しい•システムの急所を見極めて、しなやかな設計を

Page 56: DDDをじっくり語る 60分 - UMTP 特定非営利 ... · dddをじっくり語る 60分 グロースエクスパートナーズ(株) itアーキテクト 和智 右桂 umtp

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