ドメイン駆動設計という設計スタイル

増田 亨
増田 亨ソフトウェアシステムの設計・構築 at システム設計
ドメイン駆動設計という
設計スタイル
ギルドワークス 増田 亨
2019.8.31
レガシーをぶっつぶせ! 現場でDDD #genbadeDDD
これから話すこと
2019/8/31 2
設計スタイルの選択
ドメインロジックに焦点をあわせる
開発現場での実験結果と考察
設計スタイルの選択
32019/8/31
設計スタイルの三つの側面
2019/8/31 4
関心の分離のアプローチ
モジュール構造の考え方
20:80のとらえ方
設計スタイルの三つの側面
2019/8/31 5
関心の分離のアプローチ
モジュール構造の考え方
20:80のとらえ方
何と何を分けるか? 何と何を一体にするか
ソースコードをどう分割し、どう組み立てるか
80%に大きな影響を及ぼす20%はどこか
設計スタイルの違い
2019/8/31 6
関心
モジュール構造
20:80
設計スタイルの違い
2019/8/31 7
関心
モジュール構造
20:80
入出力 ドメインロジック
設計スタイルの違い
2019/8/31 8
関心
モジュール構造
20:80
入出力 ドメインロジック
ビジネスルールに基づく計算と判断のロジック画面、テーブル、Web API
設計スタイルの違い
2019/8/31 9
関心
モジュール構造
20:80
入出力 ドメインロジック
ビジネスルールに基づく計算と判断のロジック画面、テーブル、Web API
トランザクションスクリプト ドメインオブジェクトモデル
設計スタイルの違い
2019/8/31 10
関心
モジュール構造
20:80
入出力 ドメインロジック
ビジネスルールに基づく計算と判断のロジック画面、テーブル、Web API
トランザクションスクリプト
画面やデータに注目して、入出力手続きを構造化 値の種類に注目して、独自の型を定義
ドメインオブジェクトモデル
設計スタイルの違い
2019/8/31 11
関心
モジュール構造
20:80
入出力 ドメインロジック
ビジネスルールに基づく計算と判断のロジック画面、テーブル、Web API
トランザクションスクリプト
ドメインロジックの設計と実装が
アプリケーション全体の構造を左右する
画面やデータに注目して、入出力手続きを構造化 値の種類に注目して、独自の型でロジックを構造化
入出力の設計と実装が
アプリケーション全体の構造を左右する
ドメインオブジェクトモデル
ドメイン駆動設計の設計スタイル
2019/8/31 12
ビジネスルールに基づく計算と判断のロジック
に焦点を合わせる
ドメイン駆動設計の設計スタイル
2019/8/31 13
ビジネスルールに基づく計算と判断のロジック
に焦点を合わせる
ビジネスルールに登場する値の種類に注目して
独自の型を定義してロジックを整理する
ドメイン駆動設計の設計スタイル
2019/8/31 14
ビジネスルールに基づく計算と判断のロジック
に焦点を合わせる
ビジネスルールに登場する値の種類に注目して
独自の型を定義してロジックを整理する
ビジネスルールを記述する部分の設計と実装が
アプリケーション全体の構造と秩序を左右する
ドメインロジックに焦点を合わせる
2019/8/31 15
2019/8/31 16
ドメインロジックに
焦点を合わせる
ドメイン知識のコード表現
継続的な改善
ドメインの知識を
学び続ける
実践する
実践する
相互に補完する
ドメインロジック、ドメインの知識
2019/8/31 17
意味が広く、あいまい
もっと具体的に考える
ドメインロジック → ビジネスロジック
ドメイン知識 → ビジネスルール
2019/8/31 18
ビジネスの活動
ビジネスルール
ビジネスロジック
制約する/促進する
ビジネスルールに基づく計算ロジックや判断ロジック
ドメインの知識
ドメインロジック
2019/8/31 19
ビジネスロジック
ビジネスルールに基づく計算と判断のロジック
2019/8/31 20
ビジネスロジックに
焦点を合わせる
ビジネスルールの
コード表現の工夫と改善
ビジネスルールを
学び続ける
実践する
実践する
相互に補完する
ビジネスルール
2019/8/31 21
ビジネスの活動を制約し促進する決め事
物理法則のような論理的な体系ではない
過去の意思決定の積み重ね
現在のビジネスルール体系は通過点
これからもビジネスルールの追加や変更が続く
ビジネスルールを学び続ける
2019/8/31 22
ビジネスルールの知識を広げると、要求の意味が理解できる
ビジネスルールを深く理解すると、関係性や構造が見えてくる
詳細な仕様の補完力と提案力が増す
ビジネスとビジネスルールは時間とともに変化し続ける
現場で役立つビジネスルールの基礎知識
2019/8/31 23
ドメインエキスパートとか、ユビキタス言語とか言う前に
ドメイン層の全体構造を設計する時の指針
2019/8/31 24
文書化(構造化)された
ビジネスルール
顧客の利益 vs 自社の利益
折り合いのつけ方の決め事
競争戦略とビジネスルール ビジネスルールの階層構造
こういう基礎的な知識を学び理解すると、ドメイン層のパッケージ構造の設計の質が変わってくる
文書化(構造化)されたビジネスルール
説明
顧客に向けた取引条件や利用条件の説明
価格表、利用案内、割引、特典、返品・返金、キャンセル、…
契約書
提供の約束、支払いの約束
提供できなかった時の約束、支払いできなかった時の約束
業務マニュアル
販売ポリシー、在庫ポリシー、サービスレベルポリシー、…
役職・権限・承認ルール
簿記・予実管理
売上、費用、利益の目標と実績
管理単位(部門、期間、集計、…)
2019/5/11 25
文書化の範囲や精度は、組織によってまちまち
上場企業(とその子会社)と非上場企業の差は大きい
顧客の利益 vs 自社の利益
どこで折り合いをつけるかの決め事
Customer
Value
顧客価値 提供する商品、提供するサービス内容の決め事
Customer
Cost
顧客からみたコスト 価格、値引き、特典にからむビジネスルール
Convenience 顧客の利便性 提供方法、提供場所、提供タイミングのビジネスルール
Communication
顧客との
コミュニケーション
顧客とのコミュニケーションに関するビジネスルール
2019/5/11 26
ビジネスルールは、コストの制限、リスク回避の決め事であることが多い
ドメイン層のパッケージ分割の設計パターンのひとつ
競争戦略とビジネスルール
リーダー
強い競争力
大きな経営資源
他のプレーヤーの強みを消すためのビジネスルール変更が多くなる
(そういう意味では後追い型の変更)
チャレン
ジャー
独自優位性に挑戦
大きな経営資源
仮説検証型、企画型のビジネスルール変更が多くなる
新しい商品、新しい販売方法、新しい特典、…
フォロワー
弱い競争力
弱い経営資源
生き残りのための後追い型のビジネスルール変更が多くなる
資源がないので、ルール変更も場当たりや中途半端になりがち
ニッチャ
独自性が強く
経営資源は小さい
独自性を維持・強化することに集中する
ビジネスルールは独自かつ複雑になりがち
選択と集中の意思決定が明確
2019/5/11 27
その事業の競争戦略によって、パッケージの依存関係や中核となるパッケージが変わってくる
ビジネスルールの階層構造
ポリシー
事業運営の決め事
ビジネスルールの方針
価格、割引、優遇、拒絶
オーバーブッキング
キャンセル
約束
顧客との契約
取引先との契約
見積
予約
注文
運用
ビジネス活動の実体(イベント)
ビジネスルールの起動トリガー
出荷、売り上げ
請求、回収
能力 ビジネス運営上の制約条件
在庫
出荷能力
サービス提供能力
2019/5/11 28
エヴァンス本 責務のレイヤーにも登場する階層構造のパターン
ビジネスルールをコードで表現する
基本テクニック
2019/8/31 29
2019/8/31 30
ビジネスロジックに
焦点を合わせる
ビジネスルールの
コード表現の工夫と改善
ビジネスルールを
学び続ける
実践する
実践する
相互に補完する
2019/8/31 31
ビジネスルールとコード表現
Fact, Rule, Goalを表現する
独自の型を定義する
値の種類に注目する
ビジネスルールの構成要素
Fact 事実を表現する型
ビジネスの状況の記録や通知に使う型
・ 数値、日付、場所、識別番号、名称、…
Rule Factを使った
計算や判定のロジック
オブジェクトが持つべき演算能力
・算術演算
・同一性の判定
・大小の比較
Goal 知りたいことを表現する型
計算結果や判定結果を表現する型
・合計金額、予定日、残数、…
・出荷可否、受付可否、割引種類、…
2019/5/11 32
独自の型を定義する
2019/8/31 33
型は値の種類(金額、数量、日付、…)
型は値の範囲を制限する
型は可能な操作(演算)を制限する
型はプログラムに構造と秩序をもたらす
型の名前がコードの意図を豊かに表現する
現場で役立つ独自の型の設計パターン
2019/8/31 34
計算・判断ロジックのカプセル化
条件分岐を明示的に扱う
コレクション操作のカプセル化
値オブジェクト
計算・判断ロジックのカプセル化
単一の値 範囲(fromとto)
数値
金額型
Amount, Money
金額範囲
x円以上 y円未満
数量型
Quantity, NumberOfXxx
数量範囲
m人以上 n人以下
率型
Percentage, Permillage
率範囲
m%以上 n%未満
時間
日付型
DueDate, XxxDate
期間
開始日 - 終了日
時刻型
HourTime, XxxTime
時間
開始時刻 – 終了時刻
空間
地点型
Point
接続
Path:出発点 – 到達点
2019/5/11 35
計算の種類 説明、メソッド例 結果の型
等値判定 isEqual( other ) , notEqual( other ) boolean / enum
大小判定 greaterThan( other ), lessThan( other ), … boolean / enum
加算・減算 同じ型同士の計算 同じ型
乗算 同じ型同士の乗算は意味がないことが多い 別の数値型
除算 同じ型の除算と、異なる型の除算では、意味が異なる 別の数値型
境界 Max, Min の定義 同じ型(の固定値)
列挙の操作 previous(), next() が可能な集合 (循環が可/不可) 同じ型
文字列表現 値の標準的な文字列表現 toString() 文字列型
文字列からの生成 標準的な文字列表現からのオブジェクト生成 parse() 同じ型
単一値の計算・判定ロジック
2019/5/11 36
計算の種類 説明、メソッド例 結果の型
等値判定 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
値オブジェクト(独自の型)の効果
2019/8/31 38
➢独自の型はロジックを集約する
• 型名=ルール名
• 金額型=金額の計算ルール、金額の判断ルールの置き場所
• ロジックが一か所に集まる(コードの重複を防ぐ)
➢独自の型は可読性を向上する
• コードの曖昧性が減る → コードの意図が理解しやすい
• プリミティブな型は汎用。独自の型は用途限定。
• 整数演算をしたいのではなく、金額計算をしたい。
値オブジェクト(独自の型)の効果
2019/8/31 39
➢独自の型は信頼性を向上する (契約による設計)
• 引数の型 → 必ず有効な値を渡す約束
• メソッドが返す型 → 必ず有効な値を返す約束
• 冗長な検査ロジックが不要になる(例えば null チェック)
➢独自の型はコードの追跡を容易かつ確実にする
• 型を使っている個所 = そのビジネスルールに関係する個所
• 型による追跡性 vs 変数名による追跡性
• アプリケーション全体で、ビジネスの関心事との対応がとれたコードが増
える
条件分岐を型で表現する
2019/8/31 40
条件分岐との戦い
2019/8/31 41
顧客区分、商品種別、有効期間、地域区分、金額区分、数量区分、
取引種類、取引状態、支払い方法、支払いタイミング、
割り増し条件、割引条件、キャンセル可能条件、…
if文、boolean で表現された
暗黙的な区分
レガシーで
怪しげなコード体系
未使用と思われるコード
複数の分類軸の混在したコードマスター
通常の区分と超レアケースの混在 …
区分名が登場しない条件判断式
true/false に隠蔽された区分
区分の明示化とリファクタリング
2019/8/31 42
if文やboolean で
表現された暗黙の区分
レガシーで
怪しげなコード体系
区分の明示化とリファクタリング
2019/8/31 43
型を使った
列挙
たとえば Java enum
if文やboolean で
表現された暗黙の区分
レガシーで
怪しげなコード体系
区分の明示化とリファクタリング
2019/8/31 44
型を使った
列挙
enumに区分ごとの
計算・判定ロジックを寄せる
たとえば Java enum
コードがぎこちなくなったら
区分体系のリファクタリング
if文やboolean で
表現された暗黙の区分
レガシーで
怪しげなコード体系
区分の明示化とリファクタリング
2019/8/31 45
型を使った
列挙
区分体系のリファクタリング
enumに区分ごとの
計算・判定ロジックを寄せる
たとえば Java enum
区分名の変更
分類軸の分割
例外的区分の除去
区分が整理できたら、計算・判定ロジックを寄せる
コードがぎこちなくなったら
区分体系のリファクタリング
if文やboolean で
表現された暗黙の区分
レガシーで
怪しげなコード体系
区分の明示化とリファクタリング
2019/8/31 46
型を使った
列挙
区分体系のリファクタリング
enumに区分ごとの
計算・判定ロジックを寄せる
たとえば Java enum
区分名の変更
分類軸の分割
例外的区分の除去
区分が整理できたら、計算・判定ロジックを寄せる
コードがぎこちなくなったら
区分体系のリファクタリング
if文やboolean で
表現された暗黙の区分
レガシーで
怪しげなコード体系
改善を繰り返す
条件分岐を型安全にする効果
2019/8/31 47
➢列挙型(区分値)にロジックが集まる
➢列挙型(区分名)が可読性を向上する
➢列挙型による信頼性の向上(契約による設計)
➢列挙型はコードの追跡を容易かつ確実にする
ビジネスルールをコレクションで表現する
2019/8/31 48
ビジネスルールの記述にコレクションを使う
2019/8/31 49
Mapを使った料金ルールの早見表
Setを使ったスキルセットのマッチングロジック
Listを使った集計、最適要素の発見
ロジックを集約した型のコレクション
コレクションのコレクション
操作の種類 説明、メソッド例 結果の型
サイズ 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
コレクションをカプセル化する効果
2019/8/31 51
➢コレクションを内部に持った独自の型にコレク
ション操作ロジックが集まる
➢型名が可読性を向上する
➢型による信頼性の向上(契約による設計)
➢独自のコレクション型はコードの追跡を容易か
つ確実にする
ビジネスルールを独自の型で表現する
2019/8/31 52
独自の型を使う効果
2019/8/31 53
➢独自の型にビジネスロジックが集まる
➢型名が可読性を向上する
➢型による信頼性の向上(契約による設計)
➢型はコードの追跡を容易かつ確実にする
ビジネスルールを独自の型で表現する
役立つ技法の学び方
2019/8/31 54
エヴァンス本の拾い読みのススメ
2019/8/31 55
1章 継続的な学習、知識豊富な設計、深いモデル
2章 声に出してモデリングする、説明のためのモデル
9章 概念を掘り出す、それほど明示的でない概念をモデル化する方法
10章 閉じた操作、副作用のない関数、設計の宣言的スタイル
15章 コアドメイン、蒸留の拡大、強調されたコア、隔離されたコア
16章 責務のレイヤ
17章 大規模な構造と蒸留を組み合わせる
全体:クラス図にメソッド定義 or 制約の記述がある個所
ビジネスロジックに焦点を合わせ、独自の型を定義するための必読個所
ビジネスルールを型で表現した
サンプルコードが豊富
2019/8/31 56
開発現場での実験結果と考察
2019/8/31 57
ドメイン駆動設計の設計スタイル
2019/8/31 58
ビジネスルールに基づく計算と判断のロジック
に焦点を合わせる
ビジネスルールに登場する値の種類に注目して
独自の型を定義してロジックを整理する
ビジネスルールを記述する部分の設計と実装が
アプリケーション全体の構造と秩序を左右する
現場で確認できたこと
2019/8/31 59
コードを考えて書く人
コードを書かない人
現場で確認できたこと
2019/8/31 60
コードを考えて書く人
コードで具体的に話せるので、意図ややり方は確実に伝わる
サンプルコード、可視化ツール、ガイドラインもだいぶ整った
入出力に焦点をあわせる設計スタイルからの転換パターンは個人差
体にどのくらいしみついているか? どのくらい発想が柔軟か?
コードを書かない人
現場で確認できたこと
2019/8/31 61
コードを考えて書く人
コードで具体的に話せるので、意図ややり方は確実に伝わる
サンプルコード、可視化ツール、ガイドラインもだいぶ整った
入出力に焦点をあわせる設計スタイルからの転換パターンは個人差
体にどのくらいしみついているか? どのくらい発想が柔軟か?
コードを書かない人
ドメイン駆動設計の設計スタイルを言葉で伝えるのは無理
時間のむだかも
設計やその影響に関心を持っているの関係者の一部だけ
「ドメイン駆動設計」をユビキタス言語にしない
コードを書かない人の関心の文脈で、見せるようにする
可視化ツールは、そういう発想から生まれた
コードで確認できる発想の変化
独自の型の量と質
パッケージの構造、パッケージ名
入出力の記述個所への独自の型の浸透
2019/8/31 62
言葉と会話で確認できる発想の変化
タスク名、ToDo名、コミットログ
質問やアドバイスに登場する言葉
パッケージ名、クラス名、メソッド名の相談
ロジックの置き場所の相談
2019/8/31 63
1 of 63

Recommended

ソフトウェア開発のやり方の改善 by
ソフトウェア開発のやり方の改善ソフトウェア開発のやり方の改善
ソフトウェア開発のやり方の改善増田 亨
6.6K views26 slides
ドメイン駆動設計に15年取り組んでわかったこと by
ドメイン駆動設計に15年取り組んでわかったことドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと増田 亨
10.2K views21 slides
ドメイン駆動設計サンプルコードの徹底解説 by
ドメイン駆動設計サンプルコードの徹底解説ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説増田 亨
20.3K views41 slides
リッチなドメインモデル 名前探し by
リッチなドメインモデル 名前探しリッチなドメインモデル 名前探し
リッチなドメインモデル 名前探し増田 亨
14.4K views29 slides
実践的な設計って、なんだろう? by
実践的な設計って、なんだろう?実践的な設計って、なんだろう?
実践的な設計って、なんだろう?増田 亨
36K views135 slides
3週連続DDDその1 ドメイン駆動設計の基本を理解する by
3週連続DDDその1  ドメイン駆動設計の基本を理解する3週連続DDDその1  ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する増田 亨
32.5K views113 slides

More Related Content

What's hot

ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring by
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Springドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring増田 亨
29.9K views83 slides
ドメインオブジェクトの見つけ方・作り方・育て方 by
ドメインオブジェクトの見つけ方・作り方・育て方ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方増田 亨
30.6K views95 slides
ドメイン駆動設計 コアドメインを語り合ってみよう by
ドメイン駆動設計 コアドメインを語り合ってみようドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみよう増田 亨
2.5K views24 slides
ドメイン駆動設計 の 実践 Part3 DDD by
ドメイン駆動設計 の 実践 Part3 DDDドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD増田 亨
8.8K views23 slides
正しいものを正しく作る塾-設計コース by
正しいものを正しく作る塾-設計コース正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース増田 亨
9.5K views9 slides
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話 by
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話Koichiro Matsuoka
88.3K views89 slides

What's hot(20)

ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring by 増田 亨
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Springドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
増田 亨29.9K views
ドメインオブジェクトの見つけ方・作り方・育て方 by 増田 亨
ドメインオブジェクトの見つけ方・作り方・育て方ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方
増田 亨30.6K views
ドメイン駆動設計 コアドメインを語り合ってみよう by 増田 亨
ドメイン駆動設計 コアドメインを語り合ってみようドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみよう
増田 亨2.5K views
ドメイン駆動設計 の 実践 Part3 DDD by 増田 亨
ドメイン駆動設計 の 実践 Part3 DDDドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD
増田 亨8.8K views
正しいものを正しく作る塾-設計コース by 増田 亨
正しいものを正しく作る塾-設計コース正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース
増田 亨9.5K views
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話 by Koichiro Matsuoka
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka88.3K views
ドメイン駆動設計 基本を理解する by 増田 亨
ドメイン駆動設計 基本を理解するドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
増田 亨117.5K views
ドメイン駆動設計 本格入門 by 増田 亨
ドメイン駆動設計 本格入門ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
増田 亨44.6K views
ドメイン駆動設計のためのオブジェクト指向入門 by 増田 亨
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨48K views
ドメイン駆動設計の正しい歩き方 by 増田 亨
ドメイン駆動設計の正しい歩き方ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方
増田 亨25.3K views
ドメイン駆動設計 ( DDD ) をやってみよう by 増田 亨
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
増田 亨50.1K views
オブジェクト指向の設計と実装の学び方のコツ by 増田 亨
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨95.1K views
オブジェクト指向プログラミングの現在・過去・未来 by 増田 亨
オブジェクト指向プログラミングの現在・過去・未来オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来
増田 亨6.6K views
ドメイン駆動設計のための Spring の上手な使い方 by 増田 亨
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
増田 亨138.1K views
ビジネスルールの複雑さに立ち向かう by 増田 亨
ビジネスルールの複雑さに立ち向かうビジネスルールの複雑さに立ち向かう
ビジネスルールの複雑さに立ち向かう
増田 亨12.2K views
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8 by Koichiro Matsuoka
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
Koichiro Matsuoka7.3K views
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか by Koichiro Matsuoka
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くかDDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
Koichiro Matsuoka21.2K views
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか by Koichiro Matsuoka
DDDのモデリングとは何なのか、 そしてどうコードに落とすのかDDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka48.5K views
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部) by 増田 亨
3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
増田 亨14.6K views
ドメイン駆動設計(DDD)の実践Part2 by 増田 亨
ドメイン駆動設計(DDD)の実践Part2ドメイン駆動設計(DDD)の実践Part2
ドメイン駆動設計(DDD)の実践Part2
増田 亨12.9K views

More from 増田 亨

事業活動モデル・システム機能モデル・ビジネスロジックの記述 by
事業活動モデル・システム機能モデル・ビジネスロジックの記述事業活動モデル・システム機能モデル・ビジネスロジックの記述
事業活動モデル・システム機能モデル・ビジネスロジックの記述増田 亨
1.5K views7 slides
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer by
オブジェクト指向プログラミング入門 -- Java object-oriented programming primerオブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer増田 亨
13.9K views43 slides
プロダクトづくりのためのソフトウェア設計スタイル by
プロダクトづくりのためのソフトウェア設計スタイルプロダクトづくりのためのソフトウェア設計スタイル
プロダクトづくりのためのソフトウェア設計スタイル増田 亨
4.6K views29 slides
ソフトウェア設計の学び方を考える by
ソフトウェア設計の学び方を考えるソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考える増田 亨
25.1K views39 slides
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ by
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチレガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ増田 亨
3.7K views38 slides
マイクロサービス 4つの分割アプローチ by
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ増田 亨
41.4K views60 slides

More from 増田 亨(19)

事業活動モデル・システム機能モデル・ビジネスロジックの記述 by 増田 亨
事業活動モデル・システム機能モデル・ビジネスロジックの記述事業活動モデル・システム機能モデル・ビジネスロジックの記述
事業活動モデル・システム機能モデル・ビジネスロジックの記述
増田 亨1.5K views
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer by 増田 亨
オブジェクト指向プログラミング入門 -- Java object-oriented programming primerオブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
増田 亨13.9K views
プロダクトづくりのためのソフトウェア設計スタイル by 増田 亨
プロダクトづくりのためのソフトウェア設計スタイルプロダクトづくりのためのソフトウェア設計スタイル
プロダクトづくりのためのソフトウェア設計スタイル
増田 亨4.6K views
ソフトウェア設計の学び方を考える by 増田 亨
ソフトウェア設計の学び方を考えるソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考える
増田 亨25.1K views
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ by 増田 亨
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチレガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
増田 亨3.7K views
マイクロサービス 4つの分割アプローチ by 増田 亨
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨41.4K views
ソフトウェアの核心にある複雑さに立ち向かう by 増田 亨
ソフトウェアの核心にある複雑さに立ち向かうソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かう
増田 亨10.6K views
DDD sample code explained in Java by 増田 亨
DDD sample code explained in JavaDDD sample code explained in Java
DDD sample code explained in Java
増田 亨21.7K views
アジャイルなソフトウェア設計を目指して by 増田 亨
アジャイルなソフトウェア設計を目指してアジャイルなソフトウェア設計を目指して
アジャイルなソフトウェア設計を目指して
増田 亨12.2K views
世界でいちばんわかりやすいドメイン駆動設計 by 増田 亨
世界でいちばんわかりやすいドメイン駆動設計世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
増田 亨14.5K views
ドメイン駆動設計をゲーム開発に活かす by 増田 亨
ドメイン駆動設計をゲーム開発に活かすドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす
増田 亨4.8K views
SoR 2.0 summary by 増田 亨
SoR 2.0 summarySoR 2.0 summary
SoR 2.0 summary
増田 亨1.3K views
毎日が越境だ! by 増田 亨
毎日が越境だ!毎日が越境だ!
毎日が越境だ!
増田 亨10.5K views
SoR 2.0 基幹システムの再定義と再構築 by 増田 亨
SoR 2.0 基幹システムの再定義と再構築SoR 2.0 基幹システムの再定義と再構築
SoR 2.0 基幹システムの再定義と再構築
増田 亨9.2K views
ドメイン駆動設計とは何か 【入門編】 by 増田 亨
ドメイン駆動設計とは何か 【入門編】ドメイン駆動設計とは何か 【入門編】
ドメイン駆動設計とは何か 【入門編】
増田 亨13.3K views
越境する情シス:進化可能なアーキテクチャを手に入れる by 増田 亨
越境する情シス:進化可能なアーキテクチャを手に入れる越境する情シス:進化可能なアーキテクチャを手に入れる
越境する情シス:進化可能なアーキテクチャを手に入れる
増田 亨5.8K views
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル by 増田 亨
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイルドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
増田 亨4K views
現場で役立つシステム設計の原則 by 増田 亨
現場で役立つシステム設計の原則現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
増田 亨8.5K views
現場で役立つシステム設計の原則 by 増田 亨
現場で役立つシステム設計の原則現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
増田 亨6.3K views

ドメイン駆動設計という設計スタイル