Soumettre la recherche
Mettre en ligne
ドメインオブジェクトの設計ガイドライン
•
2 j'aime
•
3,596 vues
増田 亨
Suivre
ドメイン駆動設計の内輪の勉強会用に作ったドメインオブジェクトの設計ガイドラインを公開します。
Lire moins
Lire la suite
Logiciels
Signaler
Partager
Signaler
Partager
1 sur 10
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
ソフトウェア開発のやり方の改善
ソフトウェア開発のやり方の改善
増田 亨
正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース
増田 亨
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと
増田 亨
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
増田 亨
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
増田 亨
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
増田 亨
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
増田 亨
ソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考える
増田 亨
Recommandé
ソフトウェア開発のやり方の改善
ソフトウェア開発のやり方の改善
増田 亨
正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース
増田 亨
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと
増田 亨
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
増田 亨
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
増田 亨
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
増田 亨
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
増田 亨
ソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考える
増田 亨
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
増田 亨
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
増田 亨
プロダクトづくりのためのソフトウェア設計スタイル
プロダクトづくりのためのソフトウェア設計スタイル
増田 亨
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
増田 亨
ドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみよう
増田 亨
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
増田 亨
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
ドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイル
増田 亨
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD
増田 亨
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす
増田 亨
ドメイン駆動設計(DDD)の実践Part2
ドメイン駆動設計(DDD)の実践Part2
増田 亨
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
増田 亨
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
増田 亨
ドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計する
増田 亨
ドメイン駆動設計入門
ドメイン駆動設計入門
増田 亨
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方
増田 亨
ソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かう
増田 亨
3週連続DDDその3 ドメイン駆動設計 戦略的設計
3週連続DDDその3 ドメイン駆動設計 戦略的設計
増田 亨
リッチなドメインモデル 名前探し
リッチなドメインモデル 名前探し
増田 亨
関連事例紹介A DX時代のビジネス戦略・要求
関連事例紹介A DX時代のビジネス戦略・要求
Hironori Washizaki
Contenu connexe
Tendances
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
増田 亨
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
増田 亨
プロダクトづくりのためのソフトウェア設計スタイル
プロダクトづくりのためのソフトウェア設計スタイル
増田 亨
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
増田 亨
ドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみよう
増田 亨
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
増田 亨
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
ドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイル
増田 亨
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD
増田 亨
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす
増田 亨
ドメイン駆動設計(DDD)の実践Part2
ドメイン駆動設計(DDD)の実践Part2
増田 亨
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
増田 亨
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
増田 亨
ドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計する
増田 亨
ドメイン駆動設計入門
ドメイン駆動設計入門
増田 亨
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方
増田 亨
ソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かう
増田 亨
3週連続DDDその3 ドメイン駆動設計 戦略的設計
3週連続DDDその3 ドメイン駆動設計 戦略的設計
増田 亨
Tendances
(20)
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
プロダクトづくりのためのソフトウェア設計スタイル
プロダクトづくりのためのソフトウェア設計スタイル
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみよう
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイル
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計(DDD)の実践Part2
ドメイン駆動設計(DDD)の実践Part2
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
ドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計する
ドメイン駆動設計入門
ドメイン駆動設計入門
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方
ソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かう
3週連続DDDその3 ドメイン駆動設計 戦略的設計
3週連続DDDその3 ドメイン駆動設計 戦略的設計
Similaire à ドメインオブジェクトの設計ガイドライン
リッチなドメインモデル 名前探し
リッチなドメインモデル 名前探し
増田 亨
関連事例紹介A DX時代のビジネス戦略・要求
関連事例紹介A DX時代のビジネス戦略・要求
Hironori Washizaki
IoT サービスのビジネスデザイン part 2
IoT サービスのビジネスデザイン part 2
Nitta Tetsuya
Introduction of Business Models in Requirement Development
Introduction of Business Models in Requirement Development
Kent Ishizawa
ビジネスルールの複雑さに立ち向かう
ビジネスルールの複雑さに立ち向かう
増田 亨
Developers festa Sapporo 2014
Developers festa Sapporo 2014
Zenji Kanzaki
ビジネスモデリングによる問題解決型アプローチ
ビジネスモデリングによる問題解決型アプローチ
Kent Ishizawa
Introduction of KOTATSU-MODEL in Requirement Development
Introduction of KOTATSU-MODEL in Requirement Development
Kent Ishizawa
Webマーケティングを通じたデータサイエンティストの価値発揮方法
Webマーケティングを通じたデータサイエンティストの価値発揮方法
E2D3.org
ドメイン駆動設計入門
ドメイン駆動設計入門
KenjiroUehara
Ict 授業計画書
Ict 授業計画書
clmsyz
DDDで本質の探究 .pptx
DDDで本質の探究 .pptx
ssuser502958
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
Satoshi Nagayasu
ビジネスモデル2 rdra
ビジネスモデル2 rdra
Zenji Kanzaki
事業開発メソッド
事業開発メソッド
Valiant HERO Inc.
MSC 2010 T5-7 事例とデモで徹底解説! マイクロソフトのクラウド CRM
MSC 2010 T5-7 事例とデモで徹底解説! マイクロソフトのクラウド CRM
kumo2010
20130403 valueproposition
20130403 valueproposition
Hara Shoji
AgileJapan 2017 ビジネスアジャイル 匠Methodとスクラム
AgileJapan 2017 ビジネスアジャイル 匠Methodとスクラム
Hagimoto Junzo
エントリーシート書き方セミナー(学生起業家選手権)20120924
エントリーシート書き方セミナー(学生起業家選手権)20120924
GKS_tokyo
デジタルマーケティング戦略策定
デジタルマーケティング戦略策定
Flyke1
Similaire à ドメインオブジェクトの設計ガイドライン
(20)
リッチなドメインモデル 名前探し
リッチなドメインモデル 名前探し
関連事例紹介A DX時代のビジネス戦略・要求
関連事例紹介A DX時代のビジネス戦略・要求
IoT サービスのビジネスデザイン part 2
IoT サービスのビジネスデザイン part 2
Introduction of Business Models in Requirement Development
Introduction of Business Models in Requirement Development
ビジネスルールの複雑さに立ち向かう
ビジネスルールの複雑さに立ち向かう
Developers festa Sapporo 2014
Developers festa Sapporo 2014
ビジネスモデリングによる問題解決型アプローチ
ビジネスモデリングによる問題解決型アプローチ
Introduction of KOTATSU-MODEL in Requirement Development
Introduction of KOTATSU-MODEL in Requirement Development
Webマーケティングを通じたデータサイエンティストの価値発揮方法
Webマーケティングを通じたデータサイエンティストの価値発揮方法
ドメイン駆動設計入門
ドメイン駆動設計入門
Ict 授業計画書
Ict 授業計画書
DDDで本質の探究 .pptx
DDDで本質の探究 .pptx
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
ビジネスモデル2 rdra
ビジネスモデル2 rdra
事業開発メソッド
事業開発メソッド
MSC 2010 T5-7 事例とデモで徹底解説! マイクロソフトのクラウド CRM
MSC 2010 T5-7 事例とデモで徹底解説! マイクロソフトのクラウド CRM
20130403 valueproposition
20130403 valueproposition
AgileJapan 2017 ビジネスアジャイル 匠Methodとスクラム
AgileJapan 2017 ビジネスアジャイル 匠Methodとスクラム
エントリーシート書き方セミナー(学生起業家選手権)20120924
エントリーシート書き方セミナー(学生起業家選手権)20120924
デジタルマーケティング戦略策定
デジタルマーケティング戦略策定
Plus de 増田 亨
事業活動モデル・システム機能モデル・ビジネスロジックの記述
事業活動モデル・システム機能モデル・ビジネスロジックの記述
増田 亨
オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来
増田 亨
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
DDD sample code explained in Java
DDD sample code explained in Java
増田 亨
アジャイルなソフトウェア設計を目指して
アジャイルなソフトウェア設計を目指して
増田 亨
SoR 2.0 summary
SoR 2.0 summary
増田 亨
毎日が越境だ!
毎日が越境だ!
増田 亨
SoR 2.0 基幹システムの再定義と再構築
SoR 2.0 基幹システムの再定義と再構築
増田 亨
ドメイン駆動設計とは何か 【入門編】
ドメイン駆動設計とは何か 【入門編】
増田 亨
越境する情シス:進化可能なアーキテクチャを手に入れる
越境する情シス:進化可能なアーキテクチャを手に入れる
増田 亨
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
増田 亨
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
増田 亨
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
増田 亨
Plus de 増田 亨
(13)
事業活動モデル・システム機能モデル・ビジネスロジックの記述
事業活動モデル・システム機能モデル・ビジネスロジックの記述
オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
DDD sample code explained in Java
DDD sample code explained in Java
アジャイルなソフトウェア設計を目指して
アジャイルなソフトウェア設計を目指して
SoR 2.0 summary
SoR 2.0 summary
毎日が越境だ!
毎日が越境だ!
SoR 2.0 基幹システムの再定義と再構築
SoR 2.0 基幹システムの再定義と再構築
ドメイン駆動設計とは何か 【入門編】
ドメイン駆動設計とは何か 【入門編】
越境する情シス:進化可能なアーキテクチャを手に入れる
越境する情シス:進化可能なアーキテクチャを手に入れる
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
ドメインオブジェクトの設計ガイドライン
1.
ドメインオブジェクト 設計ガイドライン 2020年6月25日 有限会社システム設計 増田
2.
はじめに ① ドメインオブジェクトとは? ✓ビジネスルールに基づく計算・判断のロジック(ビジネスロジック) を記述するためのオブジェクト ② ドメインオブジェクト設計の要点 ✓ビジネスで関心のある値の種類に注目する ✓ビジネスの関心事とプログラミングの関心事を分離する ✓値の種類ごとの計算・判断の「操作」に注目する ✓操作は「メソッド名」「引数の型」「メソッドの返す値の型」で定義 する
3.
ビジネスで関心のある値の分類 数値系 金額、数量、率、金額範囲、数量範囲、… 日付系 日付、日数、期間、日数範囲、時刻、時間、… 分岐系
区分、種類、種別、… ドメインオブジェクトの基本単位は、この分類をさらに用途別に細分化した 業務用語として使う、売上金額・割引額・原価・手数料などにする
4.
2種類の型 • 独自に定義する型(アプリケーション特化の型) • ドメインオブジェクト •
ビジネスの関心事の表現(業務用語と対応させる) • 業務用語と対応しない汎用型は原則として独自に定義しない • 基本の型(汎用的な型) • 標準ライブラリの型(String, LocalDate, List, Map, … ) • プリミティブの型( int, long, boolean, char, 配列)
5.
型を使う場所 • フィールド変数の型 • メソッドの引数の型 •
メソッドが返す値の型 • ローカル変数の型 ※ ドット連鎖でローカル変数を暗黙化するのは非推奨 ※ 積極的に説明用変数を使って意図を明示する ※ 説明用変数が増えたらメソッドの抽出 and/or ロジックの移動を検討する
6.
型の使い方の傾向分析 類別 フィールドの型(非公開) メソッドが返す型
メソッドの引数の型 ドメイン特化型 ドメインオブジェクト ドメインオブジェクト ドメインオブジェクト 混合型A ドメインオブジェクト ドメインオブジェクト 基本型 混合型B(怪しい) ドメインオブジェクト 基本型 ドメインオブジェクト 混合型C 基本型 ドメインオブジェクト 基本型 混合型D(怪しい) 基本型 基本型 ドメインオブジェクト 自立型 基本型 自分の型 または基本型 自分の型 または基本型 汎用部品(怪しい) 基本型 基本型 基本型 Good! Good! 注)業務で使う識別番号(従業員番号など)は、汎用部品の一種だが業務の関心事の表現として使用する
7.
ドメインオブジェクトの評価基準 優 ビジネスの中心的な関心事を表現している 良 ビジネスの周辺的な関心事を表現できている 可
いちおうビジネスの間接的な関心事と言える 不可 ビジネスの関心事とは言えない 「優」と「良」を目指す(数としては「優」は少なくてよい。「良」が多い。) 不可は削除を検討する(ロジックの移動 and/or インライン化)
8.
ドメインオブジェクトの怪しげな名前 ◆汎用的な言葉のクラス名 例:曜日、月、時刻 → 名前を具体的にする or
ロジックをインライン化してクラスを削除 ◆業務で使いそうもない名前 例:15分単位日時 → とりあえずの関心事の表現としては問題ない → これを手掛かりに名前の改善 or ロジックインライン化とクラス削除 → 長期間、放置しない
9.
ドメインオブジェクトの設計スキル向上 ① 業務知識を増やす ✓業務に登場する言葉を自分の語彙にする ✓業務に登場する言葉を組み合わせて文章を書けるようになる ✓業務に登場する似た言葉の使い分けを理解する ② クラスの設計スキルを磨く ✓クラスの設計とは「ソッドの一覧」の定義であることを理解する ✓メソッドの引数の型、メソッドの返す値の型に注目する ✓フィールドを参照しないメソッドを書かない ✓ロジックを持たないメソッド(getter/setter)を書かない
10.
オブジェクトの基本操作(設計のヒント) 加算・減算 同じ型を引数にとり、結果として同じ型を返す 乗算 他の型を引数にとり、結果として同じ型を返す(加算の繰り返し) 除算
同じ型を引数にとり、有理数または整数を返す 除算 整数を引数にとり、除算の結果として同じ型を返す 一致・不一致 同じ型を引数にとり、判定区分を返す 比較演算 同じ型を引数にとり、判定区分を返す 最大・最小 有効な値の範囲を定義して公開する 前後の値 同じ型の「前の値」「後の値」を返す (循環あり/循環なし) 文字列化 オブジェクトの値の標準的な文字列形式を返す オブジェクト化 標準的な文字列形式からオブジェクトを生成する(static) ✓ 必要最小限の操作だけを定義する(網羅を目指さない) ✓ メソッド名にできるだけ業務の用語を使う(汎用的なメソッド名を避ける)
Télécharger maintenant