Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
増田 亨
23,068 views
私がドメイン駆動設計をやる理由
DevLOVE現場甲子園2014 東日本大会 技
Software
◦
Read more
54
Save
Share
Embed
Embed presentation
Download
Downloaded 106 times
1
/ 25
2
/ 25
3
/ 25
4
/ 25
5
/ 25
6
/ 25
7
/ 25
8
/ 25
9
/ 25
10
/ 25
11
/ 25
12
/ 25
13
/ 25
14
/ 25
15
/ 25
16
/ 25
17
/ 25
18
/ 25
19
/ 25
20
/ 25
21
/ 25
22
/ 25
23
/ 25
24
/ 25
25
/ 25
More Related Content
PDF
ドメイン駆動で開発する ラフスケッチから実装まで
by
増田 亨
PDF
ドメイン駆動設計(DDD)の実践Part2
by
増田 亨
PDF
ドメイン駆動設計に15年取り組んでわかったこと
by
増田 亨
PDF
ドメインオブジェクトの設計ガイドライン
by
増田 亨
PDF
ドメイン駆動設計のためのオブジェクト指向入門
by
増田 亨
PDF
ドメイン駆動設計 の 実践 Part3 DDD
by
増田 亨
PDF
3週連続DDDその1 ドメイン駆動設計の基本を理解する
by
増田 亨
PDF
ドメイン駆動設計とは何か 【入門編】
by
増田 亨
ドメイン駆動で開発する ラフスケッチから実装まで
by
増田 亨
ドメイン駆動設計(DDD)の実践Part2
by
増田 亨
ドメイン駆動設計に15年取り組んでわかったこと
by
増田 亨
ドメインオブジェクトの設計ガイドライン
by
増田 亨
ドメイン駆動設計のためのオブジェクト指向入門
by
増田 亨
ドメイン駆動設計 の 実践 Part3 DDD
by
増田 亨
3週連続DDDその1 ドメイン駆動設計の基本を理解する
by
増田 亨
ドメイン駆動設計とは何か 【入門編】
by
増田 亨
What's hot
PDF
ドメイン駆動設計サンプルコードの徹底解説
by
増田 亨
PDF
Python におけるドメイン駆動設計(戦術面)の勘どころ
by
Junya Hayashi
PDF
ドメインオブジェクトの見つけ方・作り方・育て方
by
増田 亨
PDF
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
by
Koichiro Matsuoka
PDF
世界でいちばんわかりやすいドメイン駆動設計
by
増田 亨
PPTX
ドメイン駆動設計の学習曲線とブレークポイント
by
増田 亨
PDF
ドメイン駆動設計 基本を理解する
by
増田 亨
PDF
正しいものを正しく作る塾-設計コース
by
増田 亨
PDF
ドメイン駆動設計 分析しながら設計する
by
増田 亨
PDF
ドメイン駆動設計という仕事の流儀
by
増田 亨
PDF
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
by
増田 亨
PDF
ドメイン駆動設計をゲーム開発に活かす
by
増田 亨
PDF
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
by
Koichiro Matsuoka
PDF
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
by
Koichiro Matsuoka
PDF
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
by
A AOKI
PDF
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
by
Koichiro Matsuoka
PDF
ドメイン駆動設計 本格入門
by
増田 亨
PDF
RDRA DDD Agile
by
増田 亨
PDF
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
by
増田 亨
PDF
PostgreSQLアンチパターン
by
Soudai Sone
ドメイン駆動設計サンプルコードの徹底解説
by
増田 亨
Python におけるドメイン駆動設計(戦術面)の勘どころ
by
Junya Hayashi
ドメインオブジェクトの見つけ方・作り方・育て方
by
増田 亨
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
by
Koichiro Matsuoka
世界でいちばんわかりやすいドメイン駆動設計
by
増田 亨
ドメイン駆動設計の学習曲線とブレークポイント
by
増田 亨
ドメイン駆動設計 基本を理解する
by
増田 亨
正しいものを正しく作る塾-設計コース
by
増田 亨
ドメイン駆動設計 分析しながら設計する
by
増田 亨
ドメイン駆動設計という仕事の流儀
by
増田 亨
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
by
増田 亨
ドメイン駆動設計をゲーム開発に活かす
by
増田 亨
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
by
Koichiro Matsuoka
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
by
Koichiro Matsuoka
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
by
A AOKI
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
by
Koichiro Matsuoka
ドメイン駆動設計 本格入門
by
増田 亨
RDRA DDD Agile
by
増田 亨
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
by
増田 亨
PostgreSQLアンチパターン
by
Soudai Sone
Viewers also liked
PPTX
How to customize redmine public
by
Hirotaka Nishimiya
PDF
20141108 俺のエンジニアリング #devlove
by
Takao Oyobe
PDF
ドメインモデルの育て方
by
増田 亨
PPTX
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
by
A AOKI
PDF
20140301ハッカーズチャンプルー告知lt
by
Koichiro Nishijima
PDF
困らない程度のJDK入門
by
Yohei Oda
PPTX
超先取りShenandoahGC
by
Yohei Oda
PDF
BtoCでバインド変数
by
Yoshito Ueki
How to customize redmine public
by
Hirotaka Nishimiya
20141108 俺のエンジニアリング #devlove
by
Takao Oyobe
ドメインモデルの育て方
by
増田 亨
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
by
A AOKI
20140301ハッカーズチャンプルー告知lt
by
Koichiro Nishijima
困らない程度のJDK入門
by
Yohei Oda
超先取りShenandoahGC
by
Yohei Oda
BtoCでバインド変数
by
Yoshito Ueki
Similar to 私がドメイン駆動設計をやる理由
PDF
ソフトウェアの核心にある複雑さに立ち向かう
by
増田 亨
PDF
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
by
増田 亨
PDF
ドメイン駆動設計の正しい歩き方
by
増田 亨
PDF
「ドメイン駆動設計」の複雑さに立ち向かう
by
増田 亨
PDF
ドメイン駆動設計入門
by
増田 亨
PDF
20130202 ドメイン駆動設計読書会at名古屋のお誘い
by
Ryo RKTM
PDF
実践に向けたドメイン駆動設計のエッセンス
by
GuildWorks
PDF
実践に向けたドメイン駆動設計のエッセンス
by
増田 亨
PPT
ドメインロジックの実装方法とドメイン駆動設計
by
Tadayoshi Sato
PDF
ドメイン駆動設計入門
by
Yukei Wachi
PDF
ドメイン駆動設計という設計スタイル
by
増田 亨
PDF
20130202 ドメイン駆動設計読書会at名古屋のお誘い β
by
Ryo RKTM
PDF
いまなぜドメイン駆動設計か
by
増田 亨
PDF
【19-B-5】出張!DDD難民救済キャンプ
by
kentaro watanabe
PDF
ドメイン駆動設計のための Spring の上手な使い方
by
増田 亨
PDF
ドメイン駆動設計の捉え方 20150718
by
Mao Ohnishi
PPTX
ドメイン駆動設計入門
by
KenjiroUehara
PPTX
ドメイン駆動設計と サーバサイドと私
by
Noriaki Kadota
PDF
QCon Tokyo 2013
by
増田 亨
PDF
これって、ドメイン駆動設計?
by
Michitaka Yumoto
ソフトウェアの核心にある複雑さに立ち向かう
by
増田 亨
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
by
増田 亨
ドメイン駆動設計の正しい歩き方
by
増田 亨
「ドメイン駆動設計」の複雑さに立ち向かう
by
増田 亨
ドメイン駆動設計入門
by
増田 亨
20130202 ドメイン駆動設計読書会at名古屋のお誘い
by
Ryo RKTM
実践に向けたドメイン駆動設計のエッセンス
by
GuildWorks
実践に向けたドメイン駆動設計のエッセンス
by
増田 亨
ドメインロジックの実装方法とドメイン駆動設計
by
Tadayoshi Sato
ドメイン駆動設計入門
by
Yukei Wachi
ドメイン駆動設計という設計スタイル
by
増田 亨
20130202 ドメイン駆動設計読書会at名古屋のお誘い β
by
Ryo RKTM
いまなぜドメイン駆動設計か
by
増田 亨
【19-B-5】出張!DDD難民救済キャンプ
by
kentaro watanabe
ドメイン駆動設計のための Spring の上手な使い方
by
増田 亨
ドメイン駆動設計の捉え方 20150718
by
Mao Ohnishi
ドメイン駆動設計入門
by
KenjiroUehara
ドメイン駆動設計と サーバサイドと私
by
Noriaki Kadota
QCon Tokyo 2013
by
増田 亨
これって、ドメイン駆動設計?
by
Michitaka Yumoto
More from 増田 亨
PDF
ソフトウェア開発のやり方の改善
by
増田 亨
PDF
事業活動モデル・システム機能モデル・ビジネスロジックの記述
by
増田 亨
PDF
オブジェクト指向プログラミングの現在・過去・未来
by
増田 亨
PDF
ドメイン駆動設計 コアドメインを語り合ってみよう
by
増田 亨
PDF
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
by
増田 亨
PDF
プロダクトづくりのためのソフトウェア設計スタイル
by
増田 亨
PDF
ソフトウェア設計の学び方を考える
by
増田 亨
PDF
マイクロサービス 4つの分割アプローチ
by
増田 亨
PDF
ビジネスルールの複雑さに立ち向かう
by
増田 亨
PDF
DDD sample code explained in Java
by
増田 亨
PDF
アジャイルなソフトウェア設計を目指して
by
増田 亨
PDF
SoR 2.0 summary
by
増田 亨
PDF
毎日が越境だ!
by
増田 亨
PDF
SoR 2.0 基幹システムの再定義と再構築
by
増田 亨
PDF
越境する情シス:進化可能なアーキテクチャを手に入れる
by
増田 亨
PDF
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
by
増田 亨
PDF
現場で役立つシステム設計の原則
by
増田 亨
ソフトウェア開発のやり方の改善
by
増田 亨
事業活動モデル・システム機能モデル・ビジネスロジックの記述
by
増田 亨
オブジェクト指向プログラミングの現在・過去・未来
by
増田 亨
ドメイン駆動設計 コアドメインを語り合ってみよう
by
増田 亨
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
by
増田 亨
プロダクトづくりのためのソフトウェア設計スタイル
by
増田 亨
ソフトウェア設計の学び方を考える
by
増田 亨
マイクロサービス 4つの分割アプローチ
by
増田 亨
ビジネスルールの複雑さに立ち向かう
by
増田 亨
DDD sample code explained in Java
by
増田 亨
アジャイルなソフトウェア設計を目指して
by
増田 亨
SoR 2.0 summary
by
増田 亨
毎日が越境だ!
by
増田 亨
SoR 2.0 基幹システムの再定義と再構築
by
増田 亨
越境する情シス:進化可能なアーキテクチャを手に入れる
by
増田 亨
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
by
増田 亨
現場で役立つシステム設計の原則
by
増田 亨
私がドメイン駆動設計をやる理由
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