狠狠撸
Submit Search
私がドメイン駆动设计をやる理由
Aug 23, 2014
54 likes
23,022 views
増田 亨
DevLOVE現場甲子園2014 東日本大会 技
Software
Read more
1 of 25
Download now
Downloaded 106 times
1
2
3
4
Most read
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
More Related Content
What's hot
(20)
PDF
ドメイン駆動で開発する ラフスケッチから実装まで
増田 亨
?
PPTX
境界付けられたコンテキスト 概念編 (ドメイン駆動設計用語解説シリーズ)
Koichiro Matsuoka
?
PDF
ドメイン駆動設計 基本を理解する
増田 亨
?
PDF
ドメインオブジェクトの见つけ方?作り方?育て方
増田 亨
?
PDF
ドメイン駆动设计 分析しながら设计する
増田 亨
?
PDF
ドメイン駆動設計 の 実践 Part3 DDD
増田 亨
?
PDF
ドメイン駆動設計 失敗したことと成功したこと
BIGLOBE Inc.
?
PDF
ドメイン駆动设计(顿顿顿)の実践笔补谤迟2
増田 亨
?
PDF
3週連続DDDその3 ドメイン駆動設計 戦略的設計
増田 亨
?
PDF
ドメインオブジェクトの设计ガイドライン
増田 亨
?
PDF
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
Koichiro Matsuoka
?
PDF
ドメイン駆动设计に15年取り组んでわかったこと
増田 亨
?
PDF
リッチなドメインモデル 名前探し
増田 亨
?
PDF
RDRA DDD Agile
増田 亨
?
PDF
ドメイン駆动设计 コアドメインを语り合ってみよう
増田 亨
?
PPTX
ドメイン駆动设计の学习曲线とブレークポイント
増田 亨
?
PDF
実践的な设计って、なんだろう?
増田 亨
?
PDF
ドメイン駆动设计という仕事の流仪
増田 亨
?
PDF
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
?
PDF
ドメイン駆动设计サンプルコードの彻底解説
増田 亨
?
ドメイン駆動で開発する ラフスケッチから実装まで
増田 亨
?
境界付けられたコンテキスト 概念編 (ドメイン駆動設計用語解説シリーズ)
Koichiro Matsuoka
?
ドメイン駆動設計 基本を理解する
増田 亨
?
ドメインオブジェクトの见つけ方?作り方?育て方
増田 亨
?
ドメイン駆动设计 分析しながら设计する
増田 亨
?
ドメイン駆動設計 の 実践 Part3 DDD
増田 亨
?
ドメイン駆動設計 失敗したことと成功したこと
BIGLOBE Inc.
?
ドメイン駆动设计(顿顿顿)の実践笔补谤迟2
増田 亨
?
3週連続DDDその3 ドメイン駆動設計 戦略的設計
増田 亨
?
ドメインオブジェクトの设计ガイドライン
増田 亨
?
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
Koichiro Matsuoka
?
ドメイン駆动设计に15年取り组んでわかったこと
増田 亨
?
リッチなドメインモデル 名前探し
増田 亨
?
RDRA DDD Agile
増田 亨
?
ドメイン駆动设计 コアドメインを语り合ってみよう
増田 亨
?
ドメイン駆动设计の学习曲线とブレークポイント
増田 亨
?
実践的な设计って、なんだろう?
増田 亨
?
ドメイン駆动设计という仕事の流仪
増田 亨
?
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
?
ドメイン駆动设计サンプルコードの彻底解説
増田 亨
?
Viewers also liked
(8)
PPTX
How to customize redmine public
Hirotaka Nishimiya
?
PDF
20141108 俺のエンシ?ニアリンク? #devlove
Takao Oyobe
?
PDF
ドメインモデルの育て方
増田 亨
?
PPTX
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
A AOKI
?
PDF
20140301ハッカース?チャンフ?ルー告知濒迟
Koichiro Nishijima
?
PDF
困らない程度の闯顿碍入门
Yohei Oda
?
PPTX
超先取り厂丑别苍补苍诲辞补丑骋颁
Yohei Oda
?
PDF
叠迟辞颁でバインド変数
Yoshito Ueki
?
How to customize redmine public
Hirotaka Nishimiya
?
20141108 俺のエンシ?ニアリンク? #devlove
Takao Oyobe
?
ドメインモデルの育て方
増田 亨
?
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
A AOKI
?
20140301ハッカース?チャンフ?ルー告知濒迟
Koichiro Nishijima
?
困らない程度の闯顿碍入门
Yohei Oda
?
超先取り厂丑别苍补苍诲辞补丑骋颁
Yohei Oda
?
叠迟辞颁でバインド変数
Yoshito Ueki
?
Ad
Similar to 私がドメイン駆动设计をやる理由
(20)
PDF
ソフトウェアの核心にある复雑さに立ち向かう
増田 亨
?
PDF
レガシーコードの复雑さに立ち向かう~ドメイン駆动设计のアプローチ
増田 亨
?
PDF
ドメイン駆动设计をゲーム开発に活かす
増田 亨
?
PDF
ドメイン駆动设计の正しい歩き方
増田 亨
?
PDF
「ト?メイン駆动设计」の复雑さに立ち向かう
増田 亨
?
PDF
ドメイン駆动设计入门
増田 亨
?
PDF
20130202 ドメイン駆動設計読書会at名古屋のお誘い
Ryo RKTM
?
PDF
ドメイン駆動設計 本格入門
増田 亨
?
PDF
ドメインロジックに集中せよ ?ドメイン駆動設計 powered by Spring
増田 亨
?
PDF
実践に向けたト?メイン駆动设计のエッセンス
GuildWorks
?
PPT
ドメインロジックの実装方法とドメイン駆动设计
Tadayoshi Sato
?
PDF
ドメイン駆动设计入门
Yukei Wachi
?
PDF
ドメイン駆动设计のプラクティスでカバーできること、できないこと摆顿顿顿闭
Koichiro Matsuoka
?
PDF
ドメイン駆动设计という设计スタイル
増田 亨
?
PDF
20130202 ドメイン駆動設計読書会at名古屋のお誘い β
Ryo RKTM
?
PDF
いまなぜドメイン駆动设计か
増田 亨
?
PDF
Python におけるドメイン駆動設計(戦術面)の勘どころ
Junya Hayashi
?
PDF
【19-叠-5】出张!顿顿顿难民救済キャンプ
kentaro watanabe
?
PDF
ト?メイン駆動設計の捉え方 20150718
Mao Ohnishi
?
PPTX
ドメイン駆动设计入门
KenjiroUehara
?
ソフトウェアの核心にある复雑さに立ち向かう
増田 亨
?
レガシーコードの复雑さに立ち向かう~ドメイン駆动设计のアプローチ
増田 亨
?
ドメイン駆动设计をゲーム开発に活かす
増田 亨
?
ドメイン駆动设计の正しい歩き方
増田 亨
?
「ト?メイン駆动设计」の复雑さに立ち向かう
増田 亨
?
ドメイン駆动设计入门
増田 亨
?
20130202 ドメイン駆動設計読書会at名古屋のお誘い
Ryo RKTM
?
ドメイン駆動設計 本格入門
増田 亨
?
ドメインロジックに集中せよ ?ドメイン駆動設計 powered by Spring
増田 亨
?
実践に向けたト?メイン駆动设计のエッセンス
GuildWorks
?
ドメインロジックの実装方法とドメイン駆动设计
Tadayoshi Sato
?
ドメイン駆动设计入门
Yukei Wachi
?
ドメイン駆动设计のプラクティスでカバーできること、できないこと摆顿顿顿闭
Koichiro Matsuoka
?
ドメイン駆动设计という设计スタイル
増田 亨
?
20130202 ドメイン駆動設計読書会at名古屋のお誘い β
Ryo RKTM
?
いまなぜドメイン駆动设计か
増田 亨
?
Python におけるドメイン駆動設計(戦術面)の勘どころ
Junya Hayashi
?
【19-叠-5】出张!顿顿顿难民救済キャンプ
kentaro watanabe
?
ト?メイン駆動設計の捉え方 20150718
Mao Ohnishi
?
ドメイン駆动设计入门
KenjiroUehara
?
Ad
More from 増田 亨
(16)
PDF
ソフトウェア开発のやり方の改善
増田 亨
?
PDF
事业活动モデル?システム机能モデル?ビジネスロジックの记述
増田 亨
?
PDF
オブジェクト指向プログラミングの现在?过去?未来
増田 亨
?
PDF
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
増田 亨
?
PDF
プロダクトづくりのためのソフトウェア设计スタイル
増田 亨
?
PDF
ソフトウェア设计の学び方を考える
増田 亨
?
PDF
マイクロサービス 4つの分割アプローチ
増田 亨
?
PDF
ビジネスルールの复雑さに立ち向かう
増田 亨
?
PDF
DDD sample code explained in Java
増田 亨
?
PDF
アジャイルなソフトウェア设计を目指して
増田 亨
?
PDF
SoR 2.0 summary
増田 亨
?
PDF
毎日が越境だ!
増田 亨
?
PDF
SoR 2.0 基幹システムの再定義と再構築
増田 亨
?
PDF
越境する情シス:进化可能なアーキテクチャを手に入れる
増田 亨
?
PDF
ドメイン駆动设计の基础知识:设计のスタイル、开発のスタイル
増田 亨
?
PDF
现场で役立つシステム设计の原则
増田 亨
?
ソフトウェア开発のやり方の改善
増田 亨
?
事业活动モデル?システム机能モデル?ビジネスロジックの记述
増田 亨
?
オブジェクト指向プログラミングの现在?过去?未来
増田 亨
?
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
増田 亨
?
プロダクトづくりのためのソフトウェア设计スタイル
増田 亨
?
ソフトウェア设计の学び方を考える
増田 亨
?
マイクロサービス 4つの分割アプローチ
増田 亨
?
ビジネスルールの复雑さに立ち向かう
増田 亨
?
DDD sample code explained in Java
増田 亨
?
アジャイルなソフトウェア设计を目指して
増田 亨
?
SoR 2.0 summary
増田 亨
?
毎日が越境だ!
増田 亨
?
SoR 2.0 基幹システムの再定義と再構築
増田 亨
?
越境する情シス:进化可能なアーキテクチャを手に入れる
増田 亨
?
ドメイン駆动设计の基础知识:设计のスタイル、开発のスタイル
増田 亨
?
现场で役立つシステム设计の原则
増田 亨
?
私がドメイン駆动设计をやる理由
1.
私がドメイン駆动设计をやる理由 ギルドワークス 増田 2014年8月26日 DevLOVE 現場甲子園2014
東日本大会 「技」
2.
ソフトウェアの変更に 苦しんでいませんか? ? どこに何が書いてあるか、わからない ? ちょっとした変更なのに、あちこち修正が必要 ?
副作用が怖くて、既存コードがいじれない …
3.
ドメイン駆動設計をがんばると ソフトウェアの変更コストが 劇的に下がる 変更コストが下がれば ソフトウェアの 成長の可能性が広がる
4.
before ドメイン駆動設計
5.
after ドメイン駆動設計
6.
ドメイン駆動設計 before - after これ以上なにもできないソフトウェア
成长力のあるソフトウェア
7.
ドメイン駆動設計のエッセンス ? モデル駆動 ? 三層+ドメインモデル ?
チームをドメイン駆动に
8.
モデル駆動 現実世界 の関心事 モデル (模型) ソースコード 単純化 コードで 表現 動くソフトウェア
9.
モデル駆動 ? 現実世界の「関心事の模型」をつくる – 単純化(要点と基本の構造) ?
クラス図っぽい絵 ? 言葉 – 会話(打合せ、雑談、…) – 文章(メール、wiki、issue、commit , … ) ? 「関心事の模型」をコードで表現 – 動くソフトウェア – プログラミング言語/フレームワーク/実行環境とい う「制約」 ? 改善を繰り返す
10.
改善を繰り返す 現実世界 の関心事 モデル (模型) ソースコード 単純化 コードで 表現 動くソフトウェア 一回では うまくいかない 一回では うまくいかない 動くソフトウェアで検証
11.
プロジェクト初日の関心事模型 ? パッケージ図 顧客 商品 注文 出荷 売上?請 求?回収 値引き
返品 <<use>> ( = import 文) 関心事の基本構造 =プログラムの基本構造 参照関係の「複雑さ」や「あいまいさ」が、設計課題を暗示している ? ? ?
12.
三層+ドメインモデル ? 業務視点でコードを整理する枠組み – このアーキテクチャに移行したのが、ドメイン駆動設計 実践のターニングポイントだった –
業務の関心事を「ドメインモデル」に集約する ? 業務の関心事の構造をプログラムの構造に反映 – どこに何が書いてあるか「業務の関心事」の視点で、 コードを整理する – 変更の依頼があった時に、変更箇所が探しやすくなる – 業務的に関連しない箇所で、変更の副作用が起きな くなる
13.
三層アーキテクチャの問題 プレゼンテーション層 アプリケーション層 データソース層 OrderForm.vm OrderConfirm.vm OrderRegistered.vm @Controller class OrderEntryController … //
bind & validate @Service class OrderRegisterService … void register( Order order ) @Repository class OrderDatasource … void save( Order order ) 業務ロジックの断片が まぎれこみがち かつ その断片が複数画面に 重複しがち 複数の機能に 同じロジックが重複しがち 業務ロジックの断片が まぎれこみがち かつ 複数の機能や画面用に 同じコードを書きがち
14.
三層+ドメインモデル プレゼンテーション層 アプリケーション層 データソース層 OrderForm.vm OrderConfirm.vm OrderRegistered.vm @Controller class OrderEntryController … //
bind & validate @Service class OrderRegisterService … void register( Order order ) @Repository class OrderDatasource … void save( Order order ) ドメインモデル class Order class Items class ShipTo class BillingTo class ContactInfo … interface OrderRepository <<use>> import model.Order 業務ロジックの抽出と移動 矢印の意味
15.
ドメイン駆動設計にたどりつくまで ? 大炎上プロジェクト ? 分岐点 ?
チームがドメイン駆动に変わっていく
16.
大炎上プロジェクト ? バグだらけ – 変更画面は使用不可、レポート出力タイムアウト、他のユーザのデータ が丸見え、データ整合性チェックバッチ、… ?
リファクタリングやりほうだい – いまより悪くなるわけない – 一か月くらい、毎日2回本番リリース ? リファクタリングの効果絶大/面白いほどコード整理が進んだ – 名前の変更 – 説明用変数 – メソッドの抽出 – クラスの抽出 – ビューとモデルの分離 – モデルとデータベース操作の分離 …
17.
ドメイン駆動設計への分かれ道 ? クラス構成やレイヤ構成で意見に違いがでてきた – 技術視点のコード整理 –
業務視点のコード整理 ? 技術視点のコード整理 – ネタは盛りだくさん – 当時発展しつつあった、Webアプリケーションのフレー ムワークやツール導入の誘惑 ? 業務視点のコード整理 – 障害は業務的なものばかり ? テクニカルには正しく動くようになってきていた – 機能の追加?修正の要求は業務的なものばかり
18.
業務視点のコード整理 ? 三層+ドメインモデルのアーキテクチャ – ターニングポイント –
業務の関心事構造=プログラムの構造 – 業務の用語を、パッケージ名/クラス名/メソッド 名/引数名/変数名に反映 ? 業務視点のリファクタリング – 初期の設計よりも、継続的な設計改善がポイント ? 改善する機会が多い ? 累積効果も大きい
19.
チームがドメイン駆动に変わっていく ? 業務視点でコードを整理する効果の実感 ? 手続型からオブジェクト指向へ ?
技术视点から业务视点へ
20.
業務視点でコードを整理する効果の実感 ? 業務視点のリファクタリング – やり方と効果を実感できると、がらっと変わる –
障害対応や機能追加が絶好のチャンス – 変更の前に「必ずやるべき作業」として徹底する ? 業務ロジックの重複記述を発見する – メソッドやクラスに抽出して重複をなくしておく ? 他のレイヤの業務ロジックの断片を発見する – メソッドに抽出して、ドメインのクラスに移動しておく ? 効果 – 変更すべき箇所を特定しやすい – 変更するコード量が減る – 変更の影響範囲がローカルになり、副作用の心配が減る – 自信を持って変更できる
21.
手続き型からオブジェクト指向へ ? 最初は小学生ルール – メソッドやクラスの行数とか、引数の数とか –
「リファクタリング」の「いやな臭い」の勉強会 – 怪しい箇所/直すべき箇所の臭いがだんだんわかってくる ? 設計改善の基本テクニックの習得 – メソッドの抽出 – ガード節と早期リターン – Value Object – ファーストクラスコレクション – 振る舞いを持った定数 – 「区分」ごとのサブクラス化 ? 区分ごとのロジックをそれぞれ専用クラスに分ける ? 「業務視点のリファクタリング」の徹底 – 業務ルール(加工、判断、計算)をメソッド化する – 業務用語のクラス化/パッケージ化 – 改善を繰り返す(放置すると劣化する)
22.
技术视点から业务视点へ ? 語彙力 – 業務用語の「語彙」を増やす(使う機会を増やす) –
会話や文書で「業務用語」の正しい使い方を確認 – 似た用語の「使い分け」の練習 ? ビジネス論理力 – 顧客の関心度の強弱を当てる練習 ? Q&Aや状況説明などで、業務のいちばんの関心事(用語)を一番最初 に持ってくる練習 ? whatとwhyの説明に業務の用語をちりばめる練習 ? 断片化しあちこちにちらばった業務ロジックの発見ゲーム – ビュー – コントローラ – データベースアクセス ? 技術者だけで話す時に、使う言葉が変わってきたら、本物
23.
チームがドメイン駆动に変わっていく ? 業務視点でコードを整理する効果の実感 ? 手続型からオブジェクト指向へ ?
技术视点から业务视点へ
24.
ソフトウェアの変更に 苦しんでいませんか? ? どこに何が書いてあるか、わからない ? ちょっとした変更なのに、あちこち修正が必要 ?
副作用が怖くて、既存コードがいじれない …
25.
ドメイン駆動設計があなたを救う これ以上なにもできないソフトウェア 成长力のあるソフトウェア
Download