Successfully reported this slideshow.
Your SlideShare is downloading. ×

ドメイン駆動設計再入門

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 61 Ad

More Related Content

Slideshows for you (20)

Viewers also liked (20)

Advertisement

Similar to ドメイン駆動設計再入門 (20)

Advertisement

Recently uploaded (20)

ドメイン駆動設計再入門

  1. 1. ドメイン駆動設計 再入門 グロースエクスパートナーズ(株) ITアーキテクト 和智 右桂 Developers Summit 2015
  2. 2. 和智 右桂 JavaEE勉強会 所属 グロースエクスパートナーズ株式会社 勤務 Yukei Wachi @digitalsoul0124 Digital Romanticism http://d.hatena.ne.jp/digitalsoul ネコ好き Photo by @digitalsoul0124 All rights reserved. IT アーキテクト
  3. 3. 時々翻訳をしています Coming Soon !
  4. 4. • DDD nutshell • DDDの魅力 • システムの中のDDD • まとめ アジェンダ Photo by @digitalsoul0124 All rights reserved. スライド中で使用されている画像について、 その著作権の全部または一部は、 クレジットに示した著者によって保留されています。
  5. 5. DDD nutshell
  6. 6. 基礎 https://www.flickr.com/photos/pgoyette/2280685630/
  7. 7. モデルとは?
  8. 8. モデルとは、 知識の表象である - Trygve Reenskaug 1979 http://www.flickr.com/photos/knilram/64366434/
  9. 9. メンタルモデルを写し取るもの 出典:http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html by Trygve M. H. Reenskaug Mental Model
  10. 10. MVCからDCIへ DCIアーキテクチャ モデル・ビュー・コントローラ http://d.hatena.ne.jp/digitalsoul/20100913/1284330448 http://d.hatena.ne.jp/digitalsoul/20100131/1264925022
  11. 11. Domain-Driven Design http://www.flickr.com/photos/hlegius/3072942016/in/photostream/ by Hélio Costa https://www.flickr.com/photos/kakutani/608079788/ 本に書かれていること
  12. 12. 第1部 ドメインモデルを 機能させる
  13. 13. モデルの基本的な用法 1. モデルと設計の核心の相互作用 • モデルと設計/実装を結びつける • →モデル駆動設計 2. コミュニケーションの基盤 • モデルの言葉を会話でも使う • →ユビキタス言語 3. 蒸留された知識 • ドメインエキスパートの知識の表現
  14. 14. http://www.flickr.com/photos/biker_jun/4450890981/ モデルはソフトウェアの中核となる
  15. 15. モデルはビジネスパーソンと開発者をつなぐ https://www.flickr.com/photos/adriansnood/14252302357/
  16. 16. 第2部 モデル駆動設計の 構成要素
  17. 17. モデルの実装のために 1. モデルのためのレイヤを作る • UIおよび永続化層との分離 • →レイヤ化アーキテクチャ 2. ドメインレイヤ内でモデルを実装する • パラダイムとしてのオブジェクト指向
  18. 18. オブジェクト オブジェクト Search Small Pop-Up Pop-Up Menu Small Combo Combo Box Bits BobsThings Stuff OKCancel Label Ends Odds Help Tag Explanotext A Very Nice Window Indeed SIDEBAR Search Odds Ends UI データベース リポジトリクライアント オブジェクト ドメイン層 ドメイン層とは、モデルが息づく場所
  19. 19. 第3部 より深い洞察へ向かう リファクタリング
  20. 20. モデルの深化 • 時間をかけてモデルは深まっていく • モデリングは発見のプロセス • ブレイクスルー • 深いモデルを作るためのテクニック • 暗黙的な概念の明示化 • しなやかな設計 • 先達からの学習 • デザインパターン
  21. 21. 第4部 戦略的設計
  22. 22. モデリングのスケールアップ • モデルの整合性 • モデルの境界設計 • 蒸留 • 本質の抽出 • 大規模な構造 • 巨大なシステムの俯瞰
  23. 23. https://www.flickr.com/photos/gulfu/15704325507/ 後に続く本
  24. 24. モデルを核としたシステム観 • GOOS (2009) • Steve Freeman、Nat Pryce • テストをガイドとして、オブジェク ト指向のシステムを育てる • DSL (2010) • Martin Fowler • DSLは、モデルの表層を取り巻く ベニヤのようなものである
  25. 25. DDDの魅力
  26. 26. https://www.flickr.com/photos/ideacreamanuelapps/3541399009/ ある抽象度でのモデリングは絶対に必要
  27. 27. ソフトウェアとしての本筋 https://www.flickr.com/photos/shoobydooby/389551020
  28. 28. SIの現場への福音 https://www.flickr.com/photos/ideacreamanuelapps/3541399009/
  29. 29. 現場の閉塞感とは?
  30. 30. サイロ https://www.flickr.com/photos/jesusbelzunce/7235172294
  31. 31. 滝 https://www.flickr.com/photos/spyker3292/5562267244/
  32. 32. 規律 https://www.flickr.com/photos/mythoto/2441449507
  33. 33. http://www.flickr.com/photos/symphoney/76513801/ トランザクションスクリプト
  34. 34. • 顧客と会話しながら • イテレーティブかつインクリメンタルに • 変化に柔軟に対応しながら • 技術的に難易度の高いものを作る https://www.flickr.com/photos/dariobn/15460074140 Agile
  35. 35. ただし
  36. 36. バランスが大切 https://www.flickr.com/photos/cs-fotografie/15448459660/
  37. 37. システムの中の DDD
  38. 38. 広告 注文 請求 広告を 作る 広告を 参照する 注文する 請求書を 作る 請求書を 送る Alister Cockburn Writing Effective Use Cases Addison-Wesley 2001 p.62 モデルをどこまで保つべきか?
  39. 39. 作るのは ドメインモデルだけでいいのか?
  40. 40. ドメインレイヤの外側 • ユーザーインターフェイス • 永続化層 • 他システムとの統合層 オブジェクト オブジェクト Search Small Pop-Up Pop-Up Menu Small Combo Combo Box Bits BobsThings Stuff OKCancel Label Ends Odds Help Tag Explanotext A Very Nice Window Indeed SIDEBAR Search Odds Ends UI データベース リポジトリクライアント オブジェクト ドメイン層
  41. 41. すべてを統合する https://www.flickr.com/photos/ofernandezberrios/2719742541
  42. 42. すべての機能は複雑なのか?
  43. 43. ・トランザクションスクリプト  ・ユーザーの要求を満たす手続き ・ドメインモデル   ・複雑なロジックを    オブジェクト指向で解決する
  44. 44. 機能追加の コスト ロジックの複雑度 トランザクションスクリプト ドメインモデル 損益分岐点を見極める
  45. 45. 複雑さは囲い込む https://www.flickr.com/photos/24354425@N03/15735373141
  46. 46. 慣れた人に任せるしかないよね -- Martin Fowler(PofEAA) http://www.flickr.com/photos/52086903@N07/5611639409/
  47. 47. 何を対象とするのか?
  48. 48. デザインするのは メンタルモデルだけでいいのか?
  49. 49. ドメイン ドメイン ドメイン ユーザー ドメイン システムの外側で 起きることへの配慮
  50. 50. https://www.flickr.com/photos/mtsofan/14303159072/ 顧客と同じものを見る
  51. 51. 成長するのは モデルだけなのか?
  52. 52. システムを取り巻く流れ • 企業のビジネス • システムを使う人の動き • 社会の状況 https://www.flickr.com/photos/pablolfc/8508796272/
  53. 53. https://www.flickr.com/photos/pablolfc/8508796272/ システム全体のフィードバックループを設計する https://www.flickr.com/photos/brewbooks/7358153986
  54. 54. チームも成長する https://www.flickr.com/photos/brent_nashville/15623635958/
  55. 55. まとめ
  56. 56. https://www.flickr.com/photos/kanaka/3002744372/ DDDは素晴らしい構想
  57. 57. https://www.flickr.com/photos/gsfc/6074582633/ システム全体で考えよう
  58. 58. 最後に
  59. 59. https://www.flickr.com/photos/antontwang/10221284164/ 世界に対するエンジニアの貢献は コードの優劣では決まらない
  60. 60. システムを通じて 社会に貢献する
  61. 61. ありがとうございました! Photo by @digitalsoul0124 All rights reserved.

×