Movatterモバイル変換
[0]
ホーム
URL:
画像なし
夜間モード
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
17,619 views
ドメイン駆動設計という設計スタイル
設計スタイルの選択ドメインロジックに焦点を合わせる現場での実験結果と考察
Software
◦
Read more
33
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 63
2
/ 63
3
/ 63
4
/ 63
5
/ 63
6
/ 63
7
/ 63
8
/ 63
9
/ 63
10
/ 63
11
/ 63
12
/ 63
13
/ 63
14
/ 63
15
/ 63
16
/ 63
17
/ 63
18
/ 63
19
/ 63
20
/ 63
21
/ 63
22
/ 63
23
/ 63
24
/ 63
25
/ 63
26
/ 63
27
/ 63
28
/ 63
29
/ 63
30
/ 63
31
/ 63
32
/ 63
33
/ 63
34
/ 63
35
/ 63
36
/ 63
37
/ 63
38
/ 63
39
/ 63
40
/ 63
41
/ 63
42
/ 63
43
/ 63
44
/ 63
45
/ 63
46
/ 63
47
/ 63
48
/ 63
49
/ 63
50
/ 63
51
/ 63
52
/ 63
53
/ 63
54
/ 63
55
/ 63
56
/ 63
57
/ 63
58
/ 63
59
/ 63
60
/ 63
61
/ 63
62
/ 63
63
/ 63
Recommended
PDF
ドメイン駆動設計 本格入門
by
増田 亨
PDF
ドメイン駆動設計 の 実践 Part3 DDD
by
増田 亨
PDF
ドメイン駆動設計(DDD)の実践Part2
by
増田 亨
PDF
ドメイン駆動設計 ( DDD ) をやってみよう
by
増田 亨
PDF
ドメイン駆動設計に15年取り組んでわかったこと
by
増田 亨
PDF
ドメイン駆動設計 失敗したことと成功したこと
by
BIGLOBE Inc.
PDF
正しいものを正しく作る塾-設計コース
by
増田 亨
PDF
イミュータブルデータモデルの極意
by
Yoshitaka Kawashima
PDF
ドメインオブジェクトの見つけ方・作り方・育て方
by
増田 亨
PDF
強いて言えば「集約どう実装するのかな、を考える」な話
by
Yoshitaka Kawashima
PDF
リッチなドメインモデル 名前探し
by
増田 亨
PDF
ドメイン駆動で開発する ラフスケッチから実装まで
by
増田 亨
PDF
世界でいちばんわかりやすいドメイン駆動設計
by
増田 亨
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
by
Koichiro Matsuoka
PDF
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
by
Koichiro Matsuoka
PDF
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
by
増田 亨
PDF
ソフトウェア設計の学び方を考える
by
増田 亨
PDF
ソフトウェア開発のやり方の改善
by
増田 亨
PDF
ドメイン駆動設計 基本を理解する
by
増田 亨
PDF
オブジェクト指向できていますか?
by
Moriharu Ohzu
PDF
オブジェクト指向プログラミングの現在・過去・未来
by
増田 亨
PDF
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
by
A AOKI
PPTX
イベント・ソーシングを知る
by
Shuhei Fujita
PDF
ドメイン駆動設計 コアドメインを語り合ってみよう
by
増田 亨
PDF
ドメイン駆動設計 分析しながら設計する
by
増田 亨
PDF
マイクロサービス 4つの分割アプローチ
by
増田 亨
PDF
ドメイン駆動設計のための Spring の上手な使い方
by
増田 亨
PDF
3週連続DDDその1 ドメイン駆動設計の基本を理解する
by
増田 亨
PDF
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
by
増田 亨
PDF
ビジネスルールの複雑さに立ち向かう
by
増田 亨
More Related Content
PDF
ドメイン駆動設計 本格入門
by
増田 亨
PDF
ドメイン駆動設計 の 実践 Part3 DDD
by
増田 亨
PDF
ドメイン駆動設計(DDD)の実践Part2
by
増田 亨
PDF
ドメイン駆動設計 ( DDD ) をやってみよう
by
増田 亨
PDF
ドメイン駆動設計に15年取り組んでわかったこと
by
増田 亨
PDF
ドメイン駆動設計 失敗したことと成功したこと
by
BIGLOBE Inc.
PDF
正しいものを正しく作る塾-設計コース
by
増田 亨
PDF
イミュータブルデータモデルの極意
by
Yoshitaka Kawashima
ドメイン駆動設計 本格入門
by
増田 亨
ドメイン駆動設計 の 実践 Part3 DDD
by
増田 亨
ドメイン駆動設計(DDD)の実践Part2
by
増田 亨
ドメイン駆動設計 ( DDD ) をやってみよう
by
増田 亨
ドメイン駆動設計に15年取り組んでわかったこと
by
増田 亨
ドメイン駆動設計 失敗したことと成功したこと
by
BIGLOBE Inc.
正しいものを正しく作る塾-設計コース
by
増田 亨
イミュータブルデータモデルの極意
by
Yoshitaka Kawashima
What's hot
PDF
ドメインオブジェクトの見つけ方・作り方・育て方
by
増田 亨
PDF
強いて言えば「集約どう実装するのかな、を考える」な話
by
Yoshitaka Kawashima
PDF
リッチなドメインモデル 名前探し
by
増田 亨
PDF
ドメイン駆動で開発する ラフスケッチから実装まで
by
増田 亨
PDF
世界でいちばんわかりやすいドメイン駆動設計
by
増田 亨
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
by
Koichiro Matsuoka
PDF
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
by
Koichiro Matsuoka
PDF
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
by
増田 亨
PDF
ソフトウェア設計の学び方を考える
by
増田 亨
PDF
ソフトウェア開発のやり方の改善
by
増田 亨
PDF
ドメイン駆動設計 基本を理解する
by
増田 亨
PDF
オブジェクト指向できていますか?
by
Moriharu Ohzu
PDF
オブジェクト指向プログラミングの現在・過去・未来
by
増田 亨
PDF
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
by
A AOKI
PPTX
イベント・ソーシングを知る
by
Shuhei Fujita
PDF
ドメイン駆動設計 コアドメインを語り合ってみよう
by
増田 亨
PDF
ドメイン駆動設計 分析しながら設計する
by
増田 亨
PDF
マイクロサービス 4つの分割アプローチ
by
増田 亨
PDF
ドメイン駆動設計のための Spring の上手な使い方
by
増田 亨
PDF
3週連続DDDその1 ドメイン駆動設計の基本を理解する
by
増田 亨
ドメインオブジェクトの見つけ方・作り方・育て方
by
増田 亨
強いて言えば「集約どう実装するのかな、を考える」な話
by
Yoshitaka Kawashima
リッチなドメインモデル 名前探し
by
増田 亨
ドメイン駆動で開発する ラフスケッチから実装まで
by
増田 亨
世界でいちばんわかりやすいドメイン駆動設計
by
増田 亨
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
by
Koichiro Matsuoka
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
by
Koichiro Matsuoka
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
by
増田 亨
ソフトウェア設計の学び方を考える
by
増田 亨
ソフトウェア開発のやり方の改善
by
増田 亨
ドメイン駆動設計 基本を理解する
by
増田 亨
オブジェクト指向できていますか?
by
Moriharu Ohzu
オブジェクト指向プログラミングの現在・過去・未来
by
増田 亨
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
by
A AOKI
イベント・ソーシングを知る
by
Shuhei Fujita
ドメイン駆動設計 コアドメインを語り合ってみよう
by
増田 亨
ドメイン駆動設計 分析しながら設計する
by
増田 亨
マイクロサービス 4つの分割アプローチ
by
増田 亨
ドメイン駆動設計のための Spring の上手な使い方
by
増田 亨
3週連続DDDその1 ドメイン駆動設計の基本を理解する
by
増田 亨
Similar to ドメイン駆動設計という設計スタイル
PDF
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
by
増田 亨
PDF
ビジネスルールの複雑さに立ち向かう
by
増田 亨
PPT
ドメインロジックの実装方法とドメイン駆動設計
by
Tadayoshi Sato
PDF
オブジェクト指向の設計と実装の学び方のコツ
by
増田 亨
PDF
ドメイン駆動設計という仕事の流儀
by
増田 亨
PDF
ドメイン駆動設計をゲーム開発に活かす
by
増田 亨
PDF
ちいさなオブジェクトでドメインモデルを組み立てる
by
増田 亨
PDF
ドメイン駆動設計入門
by
増田 亨
PDF
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
by
増田 亨
PDF
リーンなコードを書こう:実践的なオブジェクト指向設計
by
増田 亨
PDF
「ドメイン駆動設計」の複雑さに立ち向かう
by
増田 亨
PDF
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
by
陽一 滝川
PDF
DSLによる要求獲得でスーパーアジャイル
by
陽平 山口
PDF
Phpではじめるオブジェクト指向(公開用)
by
VOYAGE GROUP
PDF
DDD 20121106 SEA Forum November
by
増田 亨
PDF
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
by
Tomoharu ASAMI
PDF
人が作るソフトウェア 〜今組織パターンを読む意味〜
by
Yukei Wachi
PDF
「エクストリームエンジニアへの道(Swift編)」
by
tech-arts
PDF
作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】
by
Tomoharu ASAMI
PDF
20230206_SD輪読&座談会#41_kitazaki.pdf
by
Ayachika Kitazaki
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
by
増田 亨
ビジネスルールの複雑さに立ち向かう
by
増田 亨
ドメインロジックの実装方法とドメイン駆動設計
by
Tadayoshi Sato
オブジェクト指向の設計と実装の学び方のコツ
by
増田 亨
ドメイン駆動設計という仕事の流儀
by
増田 亨
ドメイン駆動設計をゲーム開発に活かす
by
増田 亨
ちいさなオブジェクトでドメインモデルを組み立てる
by
増田 亨
ドメイン駆動設計入門
by
増田 亨
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
by
増田 亨
リーンなコードを書こう:実践的なオブジェクト指向設計
by
増田 亨
「ドメイン駆動設計」の複雑さに立ち向かう
by
増田 亨
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
by
陽一 滝川
DSLによる要求獲得でスーパーアジャイル
by
陽平 山口
Phpではじめるオブジェクト指向(公開用)
by
VOYAGE GROUP
DDD 20121106 SEA Forum November
by
増田 亨
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
by
Tomoharu ASAMI
人が作るソフトウェア 〜今組織パターンを読む意味〜
by
Yukei Wachi
「エクストリームエンジニアへの道(Swift編)」
by
tech-arts
作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】
by
Tomoharu ASAMI
20230206_SD輪読&座談会#41_kitazaki.pdf
by
Ayachika Kitazaki
More from 増田 亨
PDF
ドメイン駆動設計サンプルコードの徹底解説
by
増田 亨
PDF
ドメイン駆動設計の正しい歩き方
by
増田 亨
PDF
ドメイン駆動設計とは何か 【入門編】
by
増田 亨
PDF
ドメインオブジェクトの設計ガイドライン
by
増田 亨
PDF
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
by
増田 亨
PDF
DDD sample code explained in Java
by
増田 亨
PDF
アジャイルなソフトウェア設計を目指して
by
増田 亨
PDF
ソフトウェアの核心にある複雑さに立ち向かう
by
増田 亨
PDF
現場で役立つシステム設計の原則
by
増田 亨
PDF
プロダクトづくりのためのソフトウェア設計スタイル
by
増田 亨
PDF
SoR 2.0 基幹システムの再定義と再構築
by
増田 亨
PDF
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
by
増田 亨
PDF
毎日が越境だ!
by
増田 亨
PDF
現場で役立つシステム設計の原則
by
増田 亨
PDF
事業活動モデル・システム機能モデル・ビジネスロジックの記述
by
増田 亨
PDF
越境する情シス:進化可能なアーキテクチャを手に入れる
by
増田 亨
PDF
SoR 2.0 summary
by
増田 亨
ドメイン駆動設計サンプルコードの徹底解説
by
増田 亨
ドメイン駆動設計の正しい歩き方
by
増田 亨
ドメイン駆動設計とは何か 【入門編】
by
増田 亨
ドメインオブジェクトの設計ガイドライン
by
増田 亨
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
by
増田 亨
DDD sample code explained in Java
by
増田 亨
アジャイルなソフトウェア設計を目指して
by
増田 亨
ソフトウェアの核心にある複雑さに立ち向かう
by
増田 亨
現場で役立つシステム設計の原則
by
増田 亨
プロダクトづくりのためのソフトウェア設計スタイル
by
増田 亨
SoR 2.0 基幹システムの再定義と再構築
by
増田 亨
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
by
増田 亨
毎日が越境だ!
by
増田 亨
現場で役立つシステム設計の原則
by
増田 亨
事業活動モデル・システム機能モデル・ビジネスロジックの記述
by
増田 亨
越境する情シス:進化可能なアーキテクチャを手に入れる
by
増田 亨
SoR 2.0 summary
by
増田 亨
ドメイン駆動設計という設計スタイル
1.
ドメイン駆動設計という設計スタイルギルドワークス 増田 亨2019.8.31レガシーをぶっつぶせ!
現場でDDD #genbadeDDD
2.
これから話すこと2019/8/31 2設計スタイルの選択ドメインロジックに焦点をあわせる開発現場での実験結果と考察
3.
設計スタイルの選択32019/8/31
4.
設計スタイルの三つの側面2019/8/31 4関心の分離のアプローチモジュール構造の考え方20:80のとらえ方
5.
設計スタイルの三つの側面2019/8/31 5関心の分離のアプローチモジュール構造の考え方20:80のとらえ方何と何を分けるか? 何と何を一体にするかソースコードをどう分割し、どう組み立てるか80%に大きな影響を及ぼす20%はどこか
6.
設計スタイルの違い2019/8/31 6関心モジュール構造20:80
7.
設計スタイルの違い2019/8/31 7関心モジュール構造20:80入出力 ドメインロジック
8.
設計スタイルの違い2019/8/31 8関心モジュール構造20:80入出力 ドメインロジックビジネスルールに基づく計算と判断のロジック画面、テーブル、Web
API
9.
設計スタイルの違い2019/8/31 9関心モジュール構造20:80入出力 ドメインロジックビジネスルールに基づく計算と判断のロジック画面、テーブル、Web
APIトランザクションスクリプト ドメインオブジェクトモデル
10.
設計スタイルの違い2019/8/31 10関心モジュール構造20:80入出力 ドメインロジックビジネスルールに基づく計算と判断のロジック画面、テーブル、Web
APIトランザクションスクリプト画面やデータに注目して、入出力手続きを構造化 値の種類に注目して、独自の型を定義ドメインオブジェクトモデル
11.
設計スタイルの違い2019/8/31 11関心モジュール構造20:80入出力 ドメインロジックビジネスルールに基づく計算と判断のロジック画面、テーブル、Web
APIトランザクションスクリプトドメインロジックの設計と実装がアプリケーション全体の構造を左右する画面やデータに注目して、入出力手続きを構造化 値の種類に注目して、独自の型でロジックを構造化入出力の設計と実装がアプリケーション全体の構造を左右するドメインオブジェクトモデル
12.
ドメイン駆動設計の設計スタイル2019/8/31 12ビジネスルールに基づく計算と判断のロジックに焦点を合わせる
13.
ドメイン駆動設計の設計スタイル2019/8/31 13ビジネスルールに基づく計算と判断のロジックに焦点を合わせるビジネスルールに登場する値の種類に注目して独自の型を定義してロジックを整理する
14.
ドメイン駆動設計の設計スタイル2019/8/31 14ビジネスルールに基づく計算と判断のロジックに焦点を合わせるビジネスルールに登場する値の種類に注目して独自の型を定義してロジックを整理するビジネスルールを記述する部分の設計と実装がアプリケーション全体の構造と秩序を左右する
15.
ドメインロジックに焦点を合わせる2019/8/31 15
16.
2019/8/31 16ドメインロジックに焦点を合わせるドメイン知識のコード表現継続的な改善ドメインの知識を学び続ける実践する実践する相互に補完する
17.
ドメインロジック、ドメインの知識2019/8/31 17意味が広く、あいまいもっと具体的に考えるドメインロジック →
ビジネスロジックドメイン知識 → ビジネスルール
18.
2019/8/31 18ビジネスの活動ビジネスルールビジネスロジック制約する/促進するビジネスルールに基づく計算ロジックや判断ロジックドメインの知識ドメインロジック
19.
2019/8/31 19ビジネスロジックビジネスルールに基づく計算と判断のロジック
20.
2019/8/31 20ビジネスロジックに焦点を合わせるビジネスルールのコード表現の工夫と改善ビジネスルールを学び続ける実践する実践する相互に補完する
21.
ビジネスルール2019/8/31 21ビジネスの活動を制約し促進する決め事物理法則のような論理的な体系ではない過去の意思決定の積み重ね現在のビジネスルール体系は通過点これからもビジネスルールの追加や変更が続く
22.
ビジネスルールを学び続ける2019/8/31 22ビジネスルールの知識を広げると、要求の意味が理解できるビジネスルールを深く理解すると、関係性や構造が見えてくる詳細な仕様の補完力と提案力が増すビジネスとビジネスルールは時間とともに変化し続ける
23.
現場で役立つビジネスルールの基礎知識2019/8/31 23ドメインエキスパートとか、ユビキタス言語とか言う前に
24.
ドメイン層の全体構造を設計する時の指針2019/8/31 24文書化(構造化)されたビジネスルール顧客の利益 vs
自社の利益折り合いのつけ方の決め事競争戦略とビジネスルール ビジネスルールの階層構造こういう基礎的な知識を学び理解すると、ドメイン層のパッケージ構造の設計の質が変わってくる
25.
文書化(構造化)されたビジネスルール説明顧客に向けた取引条件や利用条件の説明価格表、利用案内、割引、特典、返品・返金、キャンセル、…契約書提供の約束、支払いの約束提供できなかった時の約束、支払いできなかった時の約束業務マニュアル販売ポリシー、在庫ポリシー、サービスレベルポリシー、…役職・権限・承認ルール簿記・予実管理売上、費用、利益の目標と実績管理単位(部門、期間、集計、…)2019/5/11 25文書化の範囲や精度は、組織によってまちまち上場企業(とその子会社)と非上場企業の差は大きい
26.
顧客の利益 vs 自社の利益どこで折り合いをつけるかの決め事CustomerValue顧客価値
提供する商品、提供するサービス内容の決め事CustomerCost顧客からみたコスト 価格、値引き、特典にからむビジネスルールConvenience 顧客の利便性 提供方法、提供場所、提供タイミングのビジネスルールCommunication顧客とのコミュニケーション顧客とのコミュニケーションに関するビジネスルール2019/5/11 26ビジネスルールは、コストの制限、リスク回避の決め事であることが多いドメイン層のパッケージ分割の設計パターンのひとつ
27.
競争戦略とビジネスルールリーダー強い競争力大きな経営資源他のプレーヤーの強みを消すためのビジネスルール変更が多くなる(そういう意味では後追い型の変更)チャレンジャー独自優位性に挑戦大きな経営資源仮説検証型、企画型のビジネスルール変更が多くなる新しい商品、新しい販売方法、新しい特典、…フォロワー弱い競争力弱い経営資源生き残りのための後追い型のビジネスルール変更が多くなる資源がないので、ルール変更も場当たりや中途半端になりがちニッチャ独自性が強く経営資源は小さい独自性を維持・強化することに集中するビジネスルールは独自かつ複雑になりがち選択と集中の意思決定が明確2019/5/11 27その事業の競争戦略によって、パッケージの依存関係や中核となるパッケージが変わってくる
28.
ビジネスルールの階層構造ポリシー事業運営の決め事ビジネスルールの方針価格、割引、優遇、拒絶オーバーブッキングキャンセル約束顧客との契約取引先との契約見積予約注文運用ビジネス活動の実体(イベント)ビジネスルールの起動トリガー出荷、売り上げ請求、回収能力 ビジネス運営上の制約条件在庫出荷能力サービス提供能力2019/5/11 28エヴァンス本
責務のレイヤーにも登場する階層構造のパターン
29.
ビジネスルールをコードで表現する基本テクニック2019/8/31 29
30.
2019/8/31 30ビジネスロジックに焦点を合わせるビジネスルールのコード表現の工夫と改善ビジネスルールを学び続ける実践する実践する相互に補完する
31.
2019/8/31 31ビジネスルールとコード表現Fact, Rule,
Goalを表現する独自の型を定義する値の種類に注目する
32.
ビジネスルールの構成要素Fact 事実を表現する型ビジネスの状況の記録や通知に使う型・ 数値、日付、場所、識別番号、名称、…Rule
Factを使った計算や判定のロジックオブジェクトが持つべき演算能力・算術演算・同一性の判定・大小の比較Goal 知りたいことを表現する型計算結果や判定結果を表現する型・合計金額、予定日、残数、…・出荷可否、受付可否、割引種類、…2019/5/11 32
33.
独自の型を定義する2019/8/31 33型は値の種類(金額、数量、日付、…)型は値の範囲を制限する型は可能な操作(演算)を制限する型はプログラムに構造と秩序をもたらす型の名前がコードの意図を豊かに表現する
34.
現場で役立つ独自の型の設計パターン2019/8/31 34計算・判断ロジックのカプセル化条件分岐を明示的に扱うコレクション操作のカプセル化
35.
値オブジェクト計算・判断ロジックのカプセル化単一の値 範囲(fromとto)数値金額型Amount, Money金額範囲x円以上
y円未満数量型Quantity, NumberOfXxx数量範囲m人以上 n人以下率型Percentage, Permillage率範囲m%以上 n%未満時間日付型DueDate, XxxDate期間開始日 - 終了日時刻型HourTime, XxxTime時間開始時刻 – 終了時刻空間地点型Point接続Path:出発点 – 到達点2019/5/11 35
36.
計算の種類 説明、メソッド例 結果の型等値判定
isEqual( other ) , notEqual( other ) boolean / enum大小判定 greaterThan( other ), lessThan( other ), … boolean / enum加算・減算 同じ型同士の計算 同じ型乗算 同じ型同士の乗算は意味がないことが多い 別の数値型除算 同じ型の除算と、異なる型の除算では、意味が異なる 別の数値型境界 Max, Min の定義 同じ型(の固定値)列挙の操作 previous(), next() が可能な集合 (循環が可/不可) 同じ型文字列表現 値の標準的な文字列表現 toString() 文字列型文字列からの生成 標準的な文字列表現からのオブジェクト生成 parse() 同じ型単一値の計算・判定ロジック2019/5/11 36
37.
計算の種類 説明、メソッド例 結果の型等値判定
isEqual( other ) , notEqual( other ) boolean / enum大小判定 greaterThan( other ), lessThan( other ), … boolean / enum範囲に含まれる contains( element ), encloses( other ) boolean / enum範囲が重複する isOverlapped(other) boolean / enum厳密に隣接する isConnectedTo(other) boolean / enum境界の値 Max, Min 要素の型範囲演算 intersect(other), minus(other), add(other) 範囲型文字列表現 標準的な文字列表現 toString(), show(), describe() 文字列型範囲型(from-to)の計算・判定ロジック2019/5/11 37
38.
値オブジェクト(独自の型)の効果2019/8/31 38➢独自の型はロジックを集約する• 型名=ルール名•
金額型=金額の計算ルール、金額の判断ルールの置き場所• ロジックが一か所に集まる(コードの重複を防ぐ)➢独自の型は可読性を向上する• コードの曖昧性が減る → コードの意図が理解しやすい• プリミティブな型は汎用。独自の型は用途限定。• 整数演算をしたいのではなく、金額計算をしたい。
39.
値オブジェクト(独自の型)の効果2019/8/31 39➢独自の型は信頼性を向上する (契約による設計)•
引数の型 → 必ず有効な値を渡す約束• メソッドが返す型 → 必ず有効な値を返す約束• 冗長な検査ロジックが不要になる(例えば null チェック)➢独自の型はコードの追跡を容易かつ確実にする• 型を使っている個所 = そのビジネスルールに関係する個所• 型による追跡性 vs 変数名による追跡性• アプリケーション全体で、ビジネスの関心事との対応がとれたコードが増える
40.
条件分岐を型で表現する2019/8/31 40
41.
条件分岐との戦い2019/8/31 41顧客区分、商品種別、有効期間、地域区分、金額区分、数量区分、取引種類、取引状態、支払い方法、支払いタイミング、割り増し条件、割引条件、キャンセル可能条件、…if文、boolean で表現された暗黙的な区分レガシーで怪しげなコード体系未使用と思われるコード複数の分類軸の混在したコードマスター通常の区分と超レアケースの混在
…区分名が登場しない条件判断式true/false に隠蔽された区分
42.
区分の明示化とリファクタリング2019/8/31 42if文やboolean で表現された暗黙の区分レガシーで怪しげなコード体系
43.
区分の明示化とリファクタリング2019/8/31 43型を使った列挙たとえば Java
enumif文やboolean で表現された暗黙の区分レガシーで怪しげなコード体系
44.
区分の明示化とリファクタリング2019/8/31 44型を使った列挙enumに区分ごとの計算・判定ロジックを寄せるたとえば Java
enumコードがぎこちなくなったら区分体系のリファクタリングif文やboolean で表現された暗黙の区分レガシーで怪しげなコード体系
45.
区分の明示化とリファクタリング2019/8/31 45型を使った列挙区分体系のリファクタリングenumに区分ごとの計算・判定ロジックを寄せるたとえば Java
enum区分名の変更分類軸の分割例外的区分の除去区分が整理できたら、計算・判定ロジックを寄せるコードがぎこちなくなったら区分体系のリファクタリングif文やboolean で表現された暗黙の区分レガシーで怪しげなコード体系
46.
区分の明示化とリファクタリング2019/8/31 46型を使った列挙区分体系のリファクタリングenumに区分ごとの計算・判定ロジックを寄せるたとえば Java
enum区分名の変更分類軸の分割例外的区分の除去区分が整理できたら、計算・判定ロジックを寄せるコードがぎこちなくなったら区分体系のリファクタリングif文やboolean で表現された暗黙の区分レガシーで怪しげなコード体系改善を繰り返す
47.
条件分岐を型安全にする効果2019/8/31 47➢列挙型(区分値)にロジックが集まる➢列挙型(区分名)が可読性を向上する➢列挙型による信頼性の向上(契約による設計)➢列挙型はコードの追跡を容易かつ確実にする
48.
ビジネスルールをコレクションで表現する2019/8/31 48
49.
ビジネスルールの記述にコレクションを使う2019/8/31 49Mapを使った料金ルールの早見表Setを使ったスキルセットのマッチングロジックListを使った集計、最適要素の発見ロジックを集約した型のコレクションコレクションのコレクション
50.
操作の種類 説明、メソッド例 結果の型サイズ
count() int要素の検査 contains(要素), isEmpty(), notEmpty() boolean / enum部分集合 select(条件), reject(条件), コレクション集約演算 sum(), min(), max(), average(), … 集約結果の型集合演算 insersect(other), minus(other), add(other) コレクション変換 unique(), sort(), groupBy() コレクション要素の取り出し first(), last(), at(index) 要素の型要素の追加 add(), addAll(), append(), insertAt(), … void文字列表現 show(), describe() 文字列, 文字列[ ]コレクション操作のカプセル化2019/5/11 50
51.
コレクションをカプセル化する効果2019/8/31 51➢コレクションを内部に持った独自の型にコレクション操作ロジックが集まる➢型名が可読性を向上する➢型による信頼性の向上(契約による設計)➢独自のコレクション型はコードの追跡を容易かつ確実にする
52.
ビジネスルールを独自の型で表現する2019/8/31 52
53.
独自の型を使う効果2019/8/31 53➢独自の型にビジネスロジックが集まる➢型名が可読性を向上する➢型による信頼性の向上(契約による設計)➢型はコードの追跡を容易かつ確実にする
54.
ビジネスルールを独自の型で表現する役立つ技法の学び方2019/8/31 54
55.
エヴァンス本の拾い読みのススメ2019/8/31 551章 継続的な学習、知識豊富な設計、深いモデル2章
声に出してモデリングする、説明のためのモデル9章 概念を掘り出す、それほど明示的でない概念をモデル化する方法10章 閉じた操作、副作用のない関数、設計の宣言的スタイル15章 コアドメイン、蒸留の拡大、強調されたコア、隔離されたコア16章 責務のレイヤ17章 大規模な構造と蒸留を組み合わせる全体:クラス図にメソッド定義 or 制約の記述がある個所ビジネスロジックに焦点を合わせ、独自の型を定義するための必読個所
56.
ビジネスルールを型で表現したサンプルコードが豊富2019/8/31 56
57.
開発現場での実験結果と考察2019/8/31 57
58.
ドメイン駆動設計の設計スタイル2019/8/31 58ビジネスルールに基づく計算と判断のロジックに焦点を合わせるビジネスルールに登場する値の種類に注目して独自の型を定義してロジックを整理するビジネスルールを記述する部分の設計と実装がアプリケーション全体の構造と秩序を左右する
59.
現場で確認できたこと2019/8/31 59コードを考えて書く人コードを書かない人
60.
現場で確認できたこと2019/8/31 60コードを考えて書く人コードで具体的に話せるので、意図ややり方は確実に伝わるサンプルコード、可視化ツール、ガイドラインもだいぶ整った入出力に焦点をあわせる設計スタイルからの転換パターンは個人差体にどのくらいしみついているか? どのくらい発想が柔軟か?コードを書かない人
61.
現場で確認できたこと2019/8/31 61コードを考えて書く人コードで具体的に話せるので、意図ややり方は確実に伝わるサンプルコード、可視化ツール、ガイドラインもだいぶ整った入出力に焦点をあわせる設計スタイルからの転換パターンは個人差体にどのくらいしみついているか? どのくらい発想が柔軟か?コードを書かない人ドメイン駆動設計の設計スタイルを言葉で伝えるのは無理時間のむだかも設計やその影響に関心を持っているの関係者の一部だけ「ドメイン駆動設計」をユビキタス言語にしないコードを書かない人の関心の文脈で、見せるようにする可視化ツールは、そういう発想から生まれた
62.
コードで確認できる発想の変化独自の型の量と質パッケージの構造、パッケージ名入出力の記述個所への独自の型の浸透2019/8/31 62
63.
言葉と会話で確認できる発想の変化タスク名、ToDo名、コミットログ質問やアドバイスに登場する言葉パッケージ名、クラス名、メソッド名の相談ロジックの置き場所の相談2019/8/31 63
Download
[8]
ページ先頭
©2009-2025
Movatter.jp