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
増田 亨
PDF, PPTX
36,215 views
実践的な設計って、なんだろう?
Devlove 名古屋 2014-5-18 DDD, Object Oriented Design, ドメイン駆動設計 オブジェクト指向設計
Technology
◦
Related topics:
Object-Oriented Concepts
•
Read more
161
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 135
2
/ 135
3
/ 135
4
/ 135
5
/ 135
6
/ 135
7
/ 135
8
/ 135
9
/ 135
10
/ 135
11
/ 135
12
/ 135
13
/ 135
14
/ 135
15
/ 135
16
/ 135
17
/ 135
18
/ 135
19
/ 135
20
/ 135
21
/ 135
22
/ 135
23
/ 135
24
/ 135
25
/ 135
26
/ 135
27
/ 135
28
/ 135
29
/ 135
30
/ 135
31
/ 135
32
/ 135
33
/ 135
34
/ 135
35
/ 135
36
/ 135
37
/ 135
38
/ 135
39
/ 135
40
/ 135
41
/ 135
42
/ 135
43
/ 135
44
/ 135
45
/ 135
46
/ 135
47
/ 135
48
/ 135
49
/ 135
50
/ 135
51
/ 135
52
/ 135
53
/ 135
54
/ 135
55
/ 135
56
/ 135
57
/ 135
58
/ 135
59
/ 135
60
/ 135
61
/ 135
62
/ 135
63
/ 135
64
/ 135
65
/ 135
66
/ 135
67
/ 135
68
/ 135
69
/ 135
70
/ 135
71
/ 135
72
/ 135
73
/ 135
74
/ 135
75
/ 135
76
/ 135
77
/ 135
78
/ 135
79
/ 135
80
/ 135
81
/ 135
82
/ 135
83
/ 135
84
/ 135
85
/ 135
86
/ 135
87
/ 135
88
/ 135
89
/ 135
90
/ 135
91
/ 135
92
/ 135
93
/ 135
94
/ 135
95
/ 135
96
/ 135
97
/ 135
98
/ 135
99
/ 135
100
/ 135
101
/ 135
102
/ 135
103
/ 135
104
/ 135
105
/ 135
106
/ 135
107
/ 135
108
/ 135
109
/ 135
110
/ 135
111
/ 135
112
/ 135
113
/ 135
114
/ 135
115
/ 135
116
/ 135
117
/ 135
118
/ 135
119
/ 135
120
/ 135
121
/ 135
122
/ 135
123
/ 135
124
/ 135
125
/ 135
126
/ 135
127
/ 135
128
/ 135
129
/ 135
130
/ 135
131
/ 135
132
/ 135
133
/ 135
134
/ 135
135
/ 135
More Related Content
PDF
ドメイン駆動設計のためのオブジェクト指向入門
by
増田 亨
PDF
オブジェクト指向の設計と実装の学び方のコツ
by
増田 亨
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
by
Koichiro Matsuoka
PDF
オブジェクト指向プログラミングのためのモデリング入門
by
増田 亨
PDF
ドメイン駆動設計 ( DDD ) をやってみよう
by
増田 亨
PDF
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
by
増田 亨
PDF
リーンなコードを書こう:実践的なオブジェクト指向設計
by
増田 亨
PDF
40歳過ぎてもエンジニアでいるためにやっていること
by
onozaty
ドメイン駆動設計のためのオブジェクト指向入門
by
増田 亨
オブジェクト指向の設計と実装の学び方のコツ
by
増田 亨
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
by
Koichiro Matsuoka
オブジェクト指向プログラミングのためのモデリング入門
by
増田 亨
ドメイン駆動設計 ( DDD ) をやってみよう
by
増田 亨
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
by
増田 亨
リーンなコードを書こう:実践的なオブジェクト指向設計
by
増田 亨
40歳過ぎてもエンジニアでいるためにやっていること
by
onozaty
What's hot
PDF
イミュータブルデータモデル(入門編)
by
Yoshitaka Kawashima
PDF
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
by
Koichiro Matsuoka
PDF
リッチなドメインモデル 名前探し
by
増田 亨
PDF
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
by
Koichiro Matsuoka
PDF
ドメイン駆動設計 基本を理解する
by
増田 亨
PDF
なぜデータモデリングが重要なのか?
by
Yoshitaka Kawashima
PPTX
世界一わかりやすいClean Architecture
by
Atsushi Nakamura
PDF
ドメイン駆動で開発する ラフスケッチから実装まで
by
増田 亨
PDF
強いて言えば「集約どう実装するのかな、を考える」な話
by
Yoshitaka Kawashima
PDF
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
by
A AOKI
PDF
正しいものを正しく作る塾-設計コース
by
増田 亨
PDF
ドメイン駆動設計 の 実践 Part3 DDD
by
増田 亨
PDF
ドメイン駆動設計(DDD)の実践Part2
by
増田 亨
PDF
CRDT in 15 minutes
by
Shingo Omura
PDF
ドメイン駆動設計に15年取り組んでわかったこと
by
増田 亨
PDF
イミュータブルデータモデルの極意
by
Yoshitaka Kawashima
PDF
デキるプログラマだけが知っているコードレビュー7つの秘訣
by
Masahiro Nishimi
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
PDF
ドメイン駆動設計のための Spring の上手な使い方
by
増田 亨
PDF
ドメインオブジェクトの見つけ方・作り方・育て方
by
増田 亨
イミュータブルデータモデル(入門編)
by
Yoshitaka Kawashima
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
by
Koichiro Matsuoka
リッチなドメインモデル 名前探し
by
増田 亨
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
by
Koichiro Matsuoka
ドメイン駆動設計 基本を理解する
by
増田 亨
なぜデータモデリングが重要なのか?
by
Yoshitaka Kawashima
世界一わかりやすいClean Architecture
by
Atsushi Nakamura
ドメイン駆動で開発する ラフスケッチから実装まで
by
増田 亨
強いて言えば「集約どう実装するのかな、を考える」な話
by
Yoshitaka Kawashima
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
by
A AOKI
正しいものを正しく作る塾-設計コース
by
増田 亨
ドメイン駆動設計 の 実践 Part3 DDD
by
増田 亨
ドメイン駆動設計(DDD)の実践Part2
by
増田 亨
CRDT in 15 minutes
by
Shingo Omura
ドメイン駆動設計に15年取り組んでわかったこと
by
増田 亨
イミュータブルデータモデルの極意
by
Yoshitaka Kawashima
デキるプログラマだけが知っているコードレビュー7つの秘訣
by
Masahiro Nishimi
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
ドメイン駆動設計のための Spring の上手な使い方
by
増田 亨
ドメインオブジェクトの見つけ方・作り方・育て方
by
増田 亨
Viewers also liked
PDF
ちいさなオブジェクトでドメインモデルを組み立てる
by
増田 亨
PDF
技術者の働き方/ リモートワークという働き方 powered byドメイン駆動設計
by
GuildWorks
PDF
現場コーチから見えてきた越境する現場の3つの特徴
by
GuildWorks
PDF
現場で役立つシステム設計の原則
by
増田 亨
PDF
データベース設計徹底指南
by
Mikiya Okuno
PDF
越境する情シス:進化可能なアーキテクチャを手に入れる
by
増田 亨
PPTX
当たり前を当たり前に:Agile2017レポート
by
LINE Corporation
ちいさなオブジェクトでドメインモデルを組み立てる
by
増田 亨
技術者の働き方/ リモートワークという働き方 powered byドメイン駆動設計
by
GuildWorks
現場コーチから見えてきた越境する現場の3つの特徴
by
GuildWorks
現場で役立つシステム設計の原則
by
増田 亨
データベース設計徹底指南
by
Mikiya Okuno
越境する情シス:進化可能なアーキテクチャを手に入れる
by
増田 亨
当たり前を当たり前に:Agile2017レポート
by
LINE Corporation
More from 増田 亨
PDF
ソフトウェア開発のやり方の改善
by
増田 亨
PDF
事業活動モデル・システム機能モデル・ビジネスロジックの記述
by
増田 亨
PDF
ドメインオブジェクトの設計ガイドライン
by
増田 亨
PDF
オブジェクト指向プログラミングの現在・過去・未来
by
増田 亨
PDF
ドメイン駆動設計 コアドメインを語り合ってみよう
by
増田 亨
PDF
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
by
増田 亨
PDF
ドメイン駆動設計という設計スタイル
by
増田 亨
PDF
プロダクトづくりのためのソフトウェア設計スタイル
by
増田 亨
PDF
ソフトウェア設計の学び方を考える
by
増田 亨
PDF
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
by
増田 亨
PDF
ドメイン駆動設計の正しい歩き方
by
増田 亨
PDF
マイクロサービス 4つの分割アプローチ
by
増田 亨
PDF
ビジネスルールの複雑さに立ち向かう
by
増田 亨
PDF
ソフトウェアの核心にある複雑さに立ち向かう
by
増田 亨
PDF
ドメイン駆動設計サンプルコードの徹底解説
by
増田 亨
PDF
ドメイン駆動設計 本格入門
by
増田 亨
PDF
DDD sample code explained in Java
by
増田 亨
PDF
アジャイルなソフトウェア設計を目指して
by
増田 亨
PDF
世界でいちばんわかりやすいドメイン駆動設計
by
増田 亨
PDF
ドメイン駆動設計をゲーム開発に活かす
by
増田 亨
ソフトウェア開発のやり方の改善
by
増田 亨
事業活動モデル・システム機能モデル・ビジネスロジックの記述
by
増田 亨
ドメインオブジェクトの設計ガイドライン
by
増田 亨
オブジェクト指向プログラミングの現在・過去・未来
by
増田 亨
ドメイン駆動設計 コアドメインを語り合ってみよう
by
増田 亨
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
by
増田 亨
ドメイン駆動設計という設計スタイル
by
増田 亨
プロダクトづくりのためのソフトウェア設計スタイル
by
増田 亨
ソフトウェア設計の学び方を考える
by
増田 亨
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
by
増田 亨
ドメイン駆動設計の正しい歩き方
by
増田 亨
マイクロサービス 4つの分割アプローチ
by
増田 亨
ビジネスルールの複雑さに立ち向かう
by
増田 亨
ソフトウェアの核心にある複雑さに立ち向かう
by
増田 亨
ドメイン駆動設計サンプルコードの徹底解説
by
増田 亨
ドメイン駆動設計 本格入門
by
増田 亨
DDD sample code explained in Java
by
増田 亨
アジャイルなソフトウェア設計を目指して
by
増田 亨
世界でいちばんわかりやすいドメイン駆動設計
by
増田 亨
ドメイン駆動設計をゲーム開発に活かす
by
増田 亨
Recently uploaded
PDF
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
by
嶋 是一 (Yoshikazu SHIMA)
PDF
自転車ユーザ参加型路面画像センシングによる点字ブロック検出における性能向上方法の模索 (20260123 SeMI研)
by
Yuto Matsuda
PDF
PMBOK 7th Edition_Project Management Process_WF Type Development
by
akipii ogaoga
PDF
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf
by
akipii ogaoga
PDF
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
by
e-Patent Co., Ltd.
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
by
akipii ogaoga
PDF
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S...
by
akipii ogaoga
PDF
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
by
CRI Japan, Inc.
PDF
FY2025 IT Strategist Afternoon I Question-1 Balanced Scorecard
by
akipii ogaoga
PDF
PMBOK 7th Edition Project Management Process Scrum
by
akipii ogaoga
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
by
akipii ogaoga
PDF
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版
by
sorabatake
PDF
PMBOK 7th Edition_Project Management Context Diagram
by
akipii ogaoga
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
by
嶋 是一 (Yoshikazu SHIMA)
自転車ユーザ参加型路面画像センシングによる点字ブロック検出における性能向上方法の模索 (20260123 SeMI研)
by
Yuto Matsuda
PMBOK 7th Edition_Project Management Process_WF Type Development
by
akipii ogaoga
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf
by
akipii ogaoga
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
by
e-Patent Co., Ltd.
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
by
akipii ogaoga
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S...
by
akipii ogaoga
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
by
CRI Japan, Inc.
FY2025 IT Strategist Afternoon I Question-1 Balanced Scorecard
by
akipii ogaoga
PMBOK 7th Edition Project Management Process Scrum
by
akipii ogaoga
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
by
akipii ogaoga
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版
by
sorabatake
PMBOK 7th Edition_Project Management Context Diagram
by
akipii ogaoga
実践的な設計って、なんだろう?
1.
実践的な設計って なんだろう? ギルドワークス株式会社 増田 亨 DevLove Nagoya
2014/5/19
2.
Agile is dead. TDD
is dead. Long live the DDD.
3.
正しいものを正しくつくる!!
4.
プロセスやツールよりも 正しいものを正しくつくる!!
5.
たいせつなのは設計なんですよ プロセスやツールよりも 正しいものを正しくつくる!!
6.
たいせつなのは設計なんですよ 設計 プロセスやツールよりも 正しいものを正しくつくる!!
7.
設計ってなんだろう?
8.
コードを整理整頓する工夫 設計ってなんだろう?
9.
なんのために?
10.
なんのために? 変更コストを下げたい
11.
設計とは 変更コストを下げるために コードを整理整頓する 実践的な工夫
12.
「実践的」ってなんだろう?
13.
「実践的」ってなんだろう? 全体 部分
14.
「実践的」ってなんだろう? 全体 部分 長期 短期
15.
「実践的」ってなんだろう? 全体 部分 広さ 深さ 長期
短期
16.
「実践的」ってなんだろう? 全体 部分 論理 感覚 広さ
深さ 長期 短期
17.
「実践的」ってなんだろう? 全体 部分 論理 感覚 理想
現実 広さ 深さ 長期 短期
18.
「実践的」ってなんだろう? 全体 部分 論理 感覚 理想
現実 広さ 深さ 長期 短期 行ったり来たり動きながらバランスを取る
19.
実践的な設計 全体 部分 論理 感覚 理想
現実 広さ 深さ 長期 短期 左右のバランスを取りながら 変更コストを下げる工夫を続ける
20.
具体的にどうやるの?
21.
具体的にどうやるの? 変更コストの原因を知る
22.
変更コストの最大の敵
23.
変更コストの最大の敵 重複したコード
24.
変更コストの最大の敵 重複したコード あちこち調べ
25.
変更コストの最大の敵 重複したコード あちこち調べ あちこち直し
26.
変更コストの最大の敵 重複したコード あちこち調べ あちこち直し 思わぬ副作用と格闘する
27.
重複したコードのいやな臭い
28.
重複したコードのいやな臭い 長いメソッド
29.
重複したコードのいやな臭い 長いメソッド 大きなクラス
30.
重複したコードのいやな臭い 長いメソッド 大きなクラス たくさんの引数
31.
重複したコードのいやな臭い 長いメソッド 大きなクラス たくさんの引数 同じコードがあちこちに 書かれている臭いがする
32.
マスダ流 重複の臭い判定基準
33.
マスダ流 重複の臭い判定基準 クラス 50行 メソッド
3行 引数 0
34.
マスダ流 重複の臭い判定基準 クラス 50行 メソッド
3行 引数 0 これを超えたら警戒警報
35.
マスダ流 重複の臭い判定基準 クラス 50行
100行 メソッド 3行 5行 引数 0 1
36.
マスダ流 重複の臭い判定基準 クラス 50行
100行 メソッド 3行 5行 引数 0 1 これを超えたら 一息いれて設計やり直し
37.
コード整理の基本パターン
38.
コード整理の基本パターン Value Object
39.
コード整理の基本パターン Value Object 振る舞いを持った区分
40.
コード整理の基本パターン Value Object 振る舞いを持った区分 ファーストクラスコレクション
41.
Value Object パターン
42.
Value Object パターン privateなデータ
+ public な振る舞い
43.
Value Object パターン privateなデータ
+ public な振る舞い 不変(immutable)
44.
Value Object パターン privateなデータ
+ public な振る舞い 不変(immutable) 例:String型
45.
Value Object パターン privateなデータ
+ public な振る舞い 不変(immutable) private final char value[]; private final int count; String substring() { … } String trim() { … } int length() { … } boolean startsWith { … } 例:String型
46.
Value Object パターン getValue()しない
47.
Value Object パターン データをget()して 加工/計算/判断すると、 ロジックが散らばる
48.
Value Object パターン データをget()して 加工/計算/判断すると、 ロジックが散らばる だから
49.
Value Object パターン データをget()して 加工/計算/判断すると、 ロジックが散らばる だから データのある場所に ロジックを寄せる
50.
Value Object パターン setValue()しない
51.
Value Object パターン データを 加工/計算/判断して set()すると 状態管理のコードが散らばる
52.
Value Object パターン データを 加工/計算/判断して set()すると 状態管理のコードが散らばる だから
53.
Value Object パターン データを 加工/計算/判断して set()すると 状態管理のコードが散らばる だから 不変オブジェクトにする
54.
業務アプリの Value Object
55.
業務アプリの Value Object String StringBuilder List<String>
56.
業務アプリの Value Object String StringBuilder List<String>+業務ロジック
57.
業務アプリの Value Object String StringBuilder List<String> 商品名称(ProductName) 備考(Remarks) 摘要(Abstract)
+業務ロジック
58.
業務アプリの Value Object String StringBuilder List<String> BigDecimal Integer 商品名称(ProductName) 備考(Remarks) 摘要(Abstract)
+業務ロジック
59.
業務アプリの Value Object String StringBuilder List<String> BigDecimal Integer 商品名称(ProductName) 備考(Remarks) 摘要(Abstract)
+業務ロジック +業務ロジック
60.
業務アプリの Value Object String StringBuilder List<String> BigDecimal Integer 金額(Money) 数量(Quantity) 単位(Unit) 商品名称(ProductName) 備考(Remarks) 摘要(Abstract)
+業務ロジック +業務ロジック
61.
業務アプリの Value Object String StringBuilder List<String> BigDecimal Integer Calendar Date/Long 金額(Money) 数量(Quantity) 単位(Unit) 商品名称(ProductName) 備考(Remarks) 摘要(Abstract)
+業務ロジック +業務ロジック
62.
業務アプリの Value Object String StringBuilder List<String> BigDecimal Integer Caleldar Date/Long 金額(Money) 数量(Quantity) 単位(Unit) 商品名称(ProductName) 備考(Remarks) 摘要(Abstract)
+業務ロジック +業務ロジック +業務ロジック
63.
業務アプリの Value Object String StringBuilder List<String> BigDecimal Integer Caleldar Date/Long 起算日(InitialDate) 期限(DueDate) 有効期間(ValidTerm) 金額(Money) 数量(Quantity) 単位(Unit) 商品名称(ProductName) 備考(Remarks) 摘要(Abstract)
+業務ロジック +業務ロジック +業務ロジック
64.
業務アプリの Value Object String StringBuilder List<String> BigDecimal Integer Caleldar Date/Long 起算日(InitialDate) 期限(DueDate) 有効期間(ValidTerm) 金額(Money) 数量(Quantity) 単位(Unit) 商品名称(ProductName) 備考(Remarks) 摘要(Abstract)
+業務ロジック +業務ロジック +業務ロジック
65.
振る舞いを持った区分
66.
振る舞いを持った区分 enum MemberType { normal, silver,
gold }
67.
振る舞いを持った区分 MemberType type =
gold; gold.chargeRate() gold.description() gold.isLimitOver()
68.
振る舞いを持った区分 区分定数に 業務の知識を持たせる MemberType type =
gold; gold.chargeRate() gold.description() gold.isLimitOver()
69.
振る舞いを持った区分 CodeIQ で出題中 (6月2日まで) 「顧客区分」を列挙型で宣言し、 「顧客区分」ごとに異なる振る舞い を持たせてみましょう。
70.
ファーストクラスコレクション
71.
ファーストクラスコレクション privateなコレククション + public な振る舞い private
final char value[]; private final int count; String substring() { … } String trim() { … } int length() { … } boolean startsWith { … } 例:String型
72.
ファーストクラスコレクション コレクションをget()して 操作すると あちこちに同じコードが登場する
73.
ファーストクラスコレクション コレクションをget()して 操作すると あちこちに同じコードが登場する だから
74.
ファーストクラスコレクション コレクションをget()して 操作すると あちこちに同じコードが登場する だから コレクションを持つクラスに ループ処理を閉じ込めて
75.
ファーストクラスコレクション コレクションをget()して 操作すると あちこちに同じコードが登場する だから コレクションを持つクラスに ループ処理を閉じ込めて 一元管理する
76.
ファーストクラスコレクション
77.
ファーストクラスコレクション 顧客一覧 (Customers)
78.
ファーストクラスコレクション 顧客一覧 注文明細 (Customers) (OrderLines)
79.
ファーストクラスコレクション 顧客一覧 注文明細 利用履歴 (Customers) (OrderLines) (UsageHistory)
80.
ファーストクラスコレクション 顧客一覧 注文明細 利用履歴 To-do リスト (Customers) (OrderLines) (UsageHistory) (ToDoList)
81.
ファーストクラスコレクション 顧客一覧 注文明細 利用履歴 To-do リスト 未読一覧 (Customers) (OrderLines) (UsageHistory) (ToDoList) (UnReads)
82.
ファーストクラスコレクション 顧客一覧 注文明細 利用履歴 To-do リスト 未読一覧 選択候補 (Customers) (OrderLines) (UsageHistory) (ToDoList) (UnReads) (Candidates)
83.
コードの整理 アンチパターン
84.
コードの整理 アンチパターン Smart UI
85.
コードの整理 アンチパターン Smart UI トランザクションスクリプト
86.
コードの整理 アンチパターン Smart UI トランザクションスクリプト Active
Record
87.
コードの整理 アンチパターン Smart UI トランザクションスクリプト Active
Record 必ずコードが重複する
88.
コードの整理 アンチパターン 画面仕様書
89.
コードの整理 アンチパターン 画面仕様書 画面単位で開発
90.
コードの整理 アンチパターン 画面仕様書 画面単位で開発 Smart UI プログラム
91.
コードの整理 アンチパターン 画面仕様書 画面単位で開発 Smart UI プログラム 画面Aと画面Bで コード重複
92.
コードの整理 アンチパターン 画面仕様書 画面単位で開発 Smart UI プログラム 画面Aと画面Bで コード重複 機能仕様書
93.
コードの整理 アンチパターン 画面仕様書 画面単位で開発 Smart UI プログラム 画面Aと画面Bで コード重複 機能仕様書 機能単位で開発
94.
コードの整理 アンチパターン 画面仕様書 画面単位で開発 Smart UI プログラム 画面Aと画面Bで コード重複 機能仕様書 機能単位で開発 トランザクション スクリプト
95.
コードの整理 アンチパターン 画面仕様書 画面単位で開発 Smart UI プログラム 画面Aと画面Bで コード重複 機能Aと機能Bで コード重複機能仕様書 機能単位で開発 トランザクション スクリプト
96.
コードの整理 アンチパターン 画面仕様書 画面単位で開発 Smart UI プログラム 画面Aと画面Bで コード重複 機能Aと機能Bで コード重複機能仕様書 機能単位で開発 テーブル 定義書 トランザクション スクリプト
97.
コードの整理 アンチパターン 画面仕様書 画面単位で開発 Smart UI プログラム 画面Aと画面Bで コード重複 機能Aと機能Bで コード重複機能仕様書 機能単位で開発 テーブル単位で開発 テーブル 定義書 トランザクション スクリプト
98.
コードの整理 アンチパターン 画面仕様書 画面単位で開発 Smart UI プログラム 画面Aと画面Bで コード重複 機能Aと機能Bで コード重複機能仕様書 機能単位で開発 テーブル単位で開発 テーブル 定義書 トランザクション スクリプト Active Record
99.
コードの整理 アンチパターン 画面仕様書 画面単位で開発 Smart UI プログラム 画面Aと画面Bで コード重複 機能Aと機能Bで コード重複 テーブルに関連 づかないコードの 氾濫と重複 機能仕様書 機能単位で開発 テーブル単位で開発 テーブル 定義書 トランザクション スクリプト Active Record
100.
コードの整理 アンチパターン 画面仕様書 画面単位で開発 Smart UI プログラム 画面Aと画面Bで コード重複 機能Aと機能Bで コード重複 テーブルに関連 づかないコードの 氾濫と重複 機能仕様書 機能単位で開発 テーブル単位で開発 テーブル 定義書 トランザクション スクリプト Active Record
101.
コードの整理 グッドパターン
102.
コードの整理 グッドパターン 三層+ドメインモデル
103.
コードの整理 グッドパターン プレゼンテーション層 ビュー 画面コントローラ 三層+ドメインモデル ドメインモデル
104.
コードの整理 グッドパターン プレゼンテーション層 ビュー 画面コントローラ 三層+ドメインモデル ドメインモデル 業務ロジック
105.
コードの整理 グッドパターン ビジネスロジック層 (サービス層) アプリケーション コントローラ 三層+ドメインモデル 業務ロジック ドメインモデル プレゼンテーション層 ビュー 画面コントローラ
106.
コードの整理 グッドパターン 三層+ドメインモデル ドメインモデル 業務ロジック 業務ロジック プレゼンテーション層 ビュー 画面コントローラ ビジネスロジック層 (サービス層) アプリケーション コントローラ
107.
コードの整理 グッドパターン データアクセス層 データアクセス オブジェクト 三層+ドメインモデル 業務ロジック 業務ロジック ドメインモデル ビジネスロジック層 (サービス層) アプリケーション コントローラ プレゼンテーション層 ビュー 画面コントローラ
108.
コードの整理 グッドパターン データアクセス層 データアクセス オブジェクト 三層+ドメインモデル ドメインモデル 業務ロジック 業務ロジック 業務ロジック プレゼンテーション層 ビュー 画面コントローラ ビジネスロジック層 (サービス層) アプリケーション コントローラ
109.
コードの整理 グッドパターン データアクセス層 データアクセス オブジェクト 三層+ドメインモデル ドメインモデル 業務ロジック 業務ロジック 業務ロジック プレゼンテーション層 ビュー 画面コントローラ ビジネスロジック層 (サービス層) アプリケーション コントローラ 三層に散らばりがちな 業務ロジックの断片を ここに集めて一元化する
110.
ドメインモデルの設計のコツ
111.
ドメインモデルの設計のコツ 画面単位に設計しない
112.
ドメインモデルの設計のコツ 画面単位に設計しない 機能単位に設計しない
113.
ドメインモデルの設計のコツ 画面単位で設計しない 機能単位に設計しない テーブル単位に設計しない
114.
じゃあどうすればよい?
115.
じゃあどうすればよい? 業務の関心事を表現できるように クラスを考える
116.
業務の関心事(業務知識)
117.
業務の関心事(業務知識) 1. ポイントカード口座会員 2. 購入金額に応じてポイントを提供 3.
本人確認をすることがある 4. 精算後のポイント加算はできない 5. ポイントの有効期限は2年 6. ポイントは換金しない 7. 返品・交換により累計ポイントが マイナスになる場合は現金で精算
118.
ドメインモデル(関心事の模型) 会員 (entity) ポイント口座 (account) 購入 (event) 返品・交換 (event) 有効期限 (policy) 購買履歴 (status) 換金率 (policy) 残高 (status) 本人確認情報 (description) 加算する 参照する
119.
ドメインモデル(関心事の模型) 会員 (entity) ポイント口座 (account) 購入 (event) 返品・交換 (event) 有効期限 (policy) 購買履歴 (status) 換金率 (policy) 残高 (status) 本人確認情報 (description) 加算する 参照する 画面/機能/テーブル単位のコード整理とは 異なる切り口のクラス設計
120.
なぜドメインモデルなの?
121.
なぜドメインモデルなの? コードが重複しない
122.
なぜドメインモデルなの? コードが重複しない 変更が簡単
123.
なぜコードが重複しないか?
124.
なぜコードが重複しないか? 関心事単位の整理だから
125.
なぜコードが重複しないか? 関心事単位の整理だから 画面/機能/テーブル単位の コード整理は重複する
126.
なぜ変更が簡単か?
127.
なぜ変更が簡単か? 仕様変更は業務から発生する
128.
なぜ変更が簡単か? 仕様変更は業務から発生する 業務の関心事単位のクラスなら 変更箇所を1対1で特定できる
129.
なぜ変更が簡単か? 仕様変更は業務から発生する 業務の関心事単位のクラスなら 変更箇所を1対1で特定できる 業務の関心事の依存関係が クラスの依存関係になっている
130.
なぜ変更が簡単か? 仕様変更は業務から発生する 業務の関心事単位のクラスなら 変更箇所を1対1で特定できる 業務の関心事の依存関係が クラスの依存関係になっている 影響範囲がわかりやすい
131.
なぜ変更が簡単か? 仕様変更は業務から発生する 業務の関心事単位のクラスなら 変更箇所を1対1で特定できる 業務の関心事の依存関係が クラスの依存関係になっている 影響範囲がわかりやすい 変更の対象箇所以外でわけの わからない副作用がおきない
132.
ドメインモデル(関心事の模型) 会員 (entity) ポイント口座 (account) 購入 (event) 返品・交換 (event) 有効期限 (policy) 購買履歴 (status) 換金率 (policy) 残高 (status) 本人確認情報 (description) 加算する 参照する 画面/機能/テーブル単位のコード整理とは 異なる切り口のクラス設計
133.
コードの整理 グッドパターン データアクセス層 データアクセス オブジェクト 三層+ドメインモデル ドメインモデル 業務ロジック 業務ロジック 業務ロジック プレゼンテーション層 ビュー 画面コントローラ ビジネスロジック層 (サービス層) アプリケーション コントローラ 三層に散らばりがちな 業務ロジックの断片を ここに集めて一元化する
134.
たいせつなのは設計なんですよ 設計 プロセスやツールよりも 正しいものを正しくつくる!!
135.
設計とは 変更コストを下げるために コードを整理整頓する 実践的な工夫
Download