• Like
ざっくり DDD 入門!!
Upcoming SlideShare
Loading in...5
×

ざっくり DDD 入門!!

  • 7,976 views
Uploaded on

2013/3/25 java-ja DDD

2013/3/25 java-ja DDD

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
7,976
On Slideshare
0
From Embeds
0
Number of Embeds
20

Actions

Shares
Downloads
40
Comments
0
Likes
29

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. java-ja DDDざっくりDDD入門!! グロースエクスパートナーズ(株) 和智 右桂
  • 2. JavaEE勉強会 所属 Yukei Wachi グロースエクスパートナーズ株式会社 勤務 和智 右桂 ネコ好き IT アーキテクト @digitalsoul0124 Digital Romanticism http://d.hatena.ne.jp/digitalsoul Photo by @digitalsoul0124 All rights reserved.
  • 3. アジェンダ•導入•DDD的アプリの構造•モデル駆動設計 スライド中で使用されている画像について、 その著作権の全部または一部は、 クレジットに示した著者によって保留されています。 Photo by @digitalsoul0124 All rights reserved.
  • 4. 導入
  • 5. ソフトウェアは複雑だ...
  • 6. 複雑なのは、ドメインそのもの、 すなわち、 ユーザの活動やビジネスなのである。 ドメイン駆動設計 p.xiv
  • 7. 今までに開発したシステムについて、ドメインをどれだけ理解していましたか? 3D Character and Question Mark http://www.flickr.com/photos/crystaljingsr/3914729343/ by 姒儿喵喵
  • 8. 業務知識とは? キーパーソン 現場の手際 経済の知識
  • 9. 業務知識とは? データの構造 演算 ルール システム間連携
  • 10. 業務知識を反映させることで、 ソフトウェアは 柔軟に変更したり拡張したりできるようになる
  • 11. DDD的ソフトウェアの 構造
  • 12. 業務知識を反映した ソフトウェアの 構造とは?
  • 13. その前に
  • 14. それほど しない業務知識を反映した ソフトウェアの 構造とは?
  • 15. いわゆるトランザクションスクリプト 手続きにまで分解 Ancient Tamil Script http://www.flickr.com/photos/symphoney/76513801/ by Idol
  • 16. 処理の種類に応じたモジュール化 入力チェック <script var a= var xl if(xls DBアクセス A Very Nice Window Indeed パラメタ Search Search SIDEBAR Pop-Up Menu Small Pop-Up SQLテンプレート Stuff Combo Box Bits Things Bobs Small Combo Odds Odds Ends Ends Help Tag Label Explanotext データベース Cancel OK 結果セット UI <script var a= var xl if(xls SQL 編集ロジック <script var a= var xl if(xls処理内容に関わらず構造は安定
  • 17. ただし... 貨物予約ドメイン 10 %のオーバーブッキングを認める 仕様書 航海 貨物 データモデル 積載量 * サイズ // 貨物を追加する <script var a= var xl if(xls int 予約済み貨物量 = … ソースコード if(予約済み貨物量 + 貨物.サイズ > 航海.積載量 * 1.1){  // 予約できない  return … ; } 重要なロジックが埋もれる
  • 18. 基本設計書に書いてある? ここらへん
  • 19. あらためて業務知識を反映した ソフトウェアの 構造とは?
  • 20. 制約をコード内で可視化する 貨物予約ドメイン 10 %のオーバーブッキングを認める 仕様書 航海 貨物 ドメインモデル 積載量 * サイズ {貨物のサイズの合計 < 航海の積載量 * 1.1} オーバーブッキング ポリシー // 貨物を追加する <script var a= var xl if(xls int 予約済み貨物量 = … ソースコード if(オーバーブッキングポリシー.allows(貨物, 航海)){  // 予約できない  return … ; }
  • 21. ただし、バランスが重要https://github.com/Mikkeren/FizzBuzzEnterpriseEdition/blob/master/src/main/java/com/seriouscompany/business/java/fizzbuzz/ packagenamingpackage/impl/strategies/BuzzStrategy.java
  • 22. 正しい オブジェクト指向設計?
  • 23. モデル駆動開発
  • 24. 複雑なドメインの設計は モデルを基にする
  • 25. モデルとは 専門家によって 整理され 単純化された 世界観Astrolabe http://www.flickr.com/photos/kotomi-jewelry/4171052675/ by Kotomicreations (aka- kotomigd)
  • 26. まずは、モデルを共有しよう! Microsoft Bing Maps datacenter http://www.flickr.com/photos/scobleizer/4870003098/ by Robert Scoble
  • 27. シナリオ モデル
  • 28. ソフトウェアに モデルを反映させる escher wannabe b/w http://www.flickr.com/photos/midlander/54915243/ by you are your atman
  • 29. 続きは実践編へ!
  • 30. One More !ing...
  • 31. ところでモデルと言われて、どんなものを思い浮かべますか? 3D Character and Question Mark http://www.flickr.com/photos/crystaljingsr/3914729343/ by 姒儿喵喵
  • 32. 作るべきは、業務のモデル シンプルなら、ほぼE-R図
  • 33. 続きは実践編へ!
  • 34. ありがとうございました! Photo by @digitalsoul0124 All rights reserved.