SlideShare una empresa de Scribd logo
1 de 44
Descargar para leer sin conexión
世界一わかりやすいドメイン駆動設計
ドメインを学び
学んだことをコードで表現する
ギルドワークス 増田 亨
2018/9/14 1
ドメイン駆動設計とは?
22018/9/14
What is Domain-Driven Design
ソフトウェア設計の
考え方とやり方の一つ
32018/9/14
ソフトウェア設計の一般原則
関心の分離
Separation of Concerns
モジュール構造
modular construction
全体を複数の関心事に分解する
それぞれの関心事を独立したモジュールとして実装する
モジュールを組み合わせて全体を構築する
42018/9/14
良い設計
• 変更が楽で安全になる
– どこに何が書いてあるかわかりやすい
– 変更の影響範囲を特定しやすい
– 変更の影響範囲が狭い
• ビジネス価値を生む
– 変更が容易(低コスト・低リスク)であれば
– サービスの改善・拡張が加速 ⇒ 顧客満足、差別化
– 事業の運営方針や戦術の選択肢が広がる
2018/9/14 5
ドメイン駆動設計のアプローチ
2018/9/14 6
ドメインロジックに焦点を合わせる
オブジェクト指向のモジュール構造
インクリメンタルに設計を進める
ドメイン駆動設計のアプローチ
2018/9/14 7
ドメインロジックに焦点を合わせる
オブジェクト指向のモジュール構造
インクリメンタルに設計を進める
ドメイン駆動設計のアプローチ
2018/9/14 8
設計のアプローチの比較
ドメイン駆動設計 従来の設計
ドメインロジックに
焦点を合わせる
入出力に
焦点を合わせる
オブジェクト指向のモジュール構造 手続き型のモジュール構造
インクリメンタルに設計する アップフロントに設計する
2018/9/14 9
設計のアプローチの比較
ドメイン駆動設計 従来の設計
ドメインロジックに
焦点を合わせる
入出力に
焦点を合わせる
オブジェクト指向のモジュール構造 手続き型のモジュール構造
インクリメンタルに設計する アップフロントに設計する
2018/9/14 10
アプリケーション全体としてカバーする範囲は同じ
どこに焦点を合わせるかの違い
関心事の違い
ドメイン駆動設計 従来の設計
ドメインロジックに焦点 入出力に焦点
関心事 関心事
ドメインの状況を表す値の種類 ユーザインタフェース
値を使った計算ロジック/判定ロジック データベース
計算結果/判定結果の表現方法 通信
2018/8/22 11
ドメインロジックに焦点を合わせる
どういうこと?
2018/9/14 12
ドメインロジック
• ビジネスで扱うデータを使った計算ロジックや
判定ロジックのこと (業務アプリの場合)
• 従来の設計では、機能分割から導いた
手続き型のモジュールの一部として記述
• ドメイン駆動設計では、ビジネスロジックだけ
を集め独立したモジュールに記述する
2018/9/14 13
入出力の関心事 vs. ドメインロジック
• 入出力の関心事→データモデル+CRUD操作
• 画面項目定義
• テーブル定義
• 登録機能、参照機能、編集機能、削除機能、…
• ドメインロジックの関心事→計算モデル
• 計算する値の種類
• 計算の種類
• 計算の組み合わせ方
2018/9/14 14
ドメインロジックの構成要素
ビジネスを構成する概念(関心の対象)
顧客、商品、
販売、出荷、請求、…
ビジネスの状況や構造を表現する「値の種類」
金額、数量、日付、日数、…
会員区分、商品区分、取引区分、…
値を使った計算や判定
金額計算、数量計算、日数計算、…
顧客タイプ判定、処理区分判定、有効性判定、…
2018/9/14 15
入出力からドメインロジックを分離
プレゼンテーション層
データソース層
アプリケーション層
入出力処理
ルールの実行
次のアクションの指示
画面入出力
Web API
データベース入出力
メッセージ送信
入出力定義して実装
機能分割して実装
従来のアプローチで取り組める
計算する値の種類
+
計算ロジック
判定ロジック
ドメインロジックを
分析設計して実装
ここに焦点を合わせる
金額、数量、日付、日数、…
顧客タイプ、商品カテゴリ、取引区分、…
一致不一致、大小、境界値、
加算減算、乗算、除算、
値とリテラルの変換
論理演算、集合演算
計算・判定ルールの記述を
独立したモジュールに
分離する
2018/9/14 16
ドメインロジックに焦点を合わせる理由
17
1. ソフトウェアが複雑になる原因はドメインロジックの複雑さにある
 入出力処理とドメインロジックの記述が混在すると
どこに、どんなビジネスロジックを書いているか、わかりにくい
 変更の影響があちこちに波及して、変更が厄介で危険になる
2. ドメインロジックを入出力から分離する
 ドメインロジックの輪郭と構造がはっきりしてくる
 ドメインロジックを分離した入出力側の記述はシンプルになる
1. ソフトウェア全体の見通しがよくなり、変更が楽で安全になる
 つまらない不具合が減る(すっきりとしたコードになる)
 修正や拡張が簡単にできるようになる(影響範囲が狭い、推測しや
すい)
2018/9/14
オブジェクト指向のモジュール構造
どういうこと?
2018/9/14 18
ソフトウェアのモジュール構造
ソースコードを扱いやすいかたまりに分割し
コードのかたまりごとに別ファイルに記述する
モジュール間(ソースファイル間)の依存を
できるだけ、小さく/少なくする
モジュール単独で意味が理解でき
独立して実装し試験できることが望ましい
2018/9/14 19
モジュール構造:2つのアプローチ
どこに着眼してソースを分割し整理するか?
入出力処理
vs
計算する値の種類
2018/9/14 20
入出力処理のモジュール構造
• 機能分割し、機能ごとに入力仕様と出力仕様を定義
する
• 機能ごとに、入力から出力への手続きを
時系列に記述する
手続き型のモジュール構造
トランザクションスクリプト
• 複数の機能に共通する処理(サブルーチン)を
集めたサブモジュールを作ることもある
2018/9/14 21
オブジェクト指向のモジュール化
• 「型」(値の種類)に注目してモジュール化
– 標準ライブライリで定義済の型(値の種類)
• BigDecimal, LocalDate, List<T>, …
– アプリケーション固有の型
• 金額型、数量型、有効期限型、商品区分型、…
• 「型」は3つの要素で定義する
– 値の種類の「名前」
– その値に有効な計算(演算)
– 有効な値の範囲
• クラス(class)は「型」を記述する仕組み
2018/9/14 22
オブジェクト指向のモジュール化
• 「型」(値の種類)に注目してモジュール化
– 標準ライブライリで定義済の型(値の種類)
• BigDecimal, LocalDate, List<T>, …
– アプリケーション固有の型
• 金額型、数量型、有効期限型、商品区分型、…
• 「型」は3つの要素で定義する
– 値の種類の「名前」
– その値に有効な計算(演算)
– 有効な値の範囲
• クラス(class)は「型」を記述する仕組み
2018/9/14 23
「型」を定義する
1. 「値の種類」を見つける
– 金額、数量、日付、日数、…
– 商品種類、顧客タイプ、取引区分、…
– 割引率、ポイント、…
2. それぞれの値に有効な計算(演算)を特定する
– 一致/不一致の判定
– 大小の判定
– 境界値(最大最小)の判定
– 足し算、引き算
– 掛け算
– 割り算
– 値とリテラルの変換
– 論理演算
– 集合演算
2018/9/14 24
「型」を定義する
1. 「値の種類」を見つける
– 金額、数量、日付、日数、…
– 商品種類、顧客タイプ、取引区分、…
– 割引率、ポイント、…
2. それぞれの値に有効な計算(演算)を特定する
– 一致/不一致の判定
– 大小の判定
– 境界値(最大最小)の判定
– 足し算、引き算
– 掛け算
– 割り算
– 値とリテラルの変換
– 論理演算
– 集合演算
2018/9/14 25
値の種類は多い→複雑さの原因
値の種類を整理すれば
ドメインロジックの見通しがよくなる
「型」を定義する
1. 「値の種類」を見つける
– 金額、数量、日付、日数、…
– 商品種類、顧客タイプ、取引区分、…
– 割引率、ポイント、…
2. それぞれの値に有効な計算(演算)を特定する
– 一致/不一致の判定
– 大小の判定
– 境界値(最大最小)の判定
– 足し算、引き算
– 掛け算
– 割り算
– 値とリテラルの変換
– 論理演算
– 集合演算
2018/9/14 26
値の種類は多い→複雑さの原因
値の種類を整理すれば
ドメインロジックの見通しがよくなる
計算の種類は多くない
特定の値に必要な計算はさらに少ない
入出力処理でモジュール化すると
同じ計算があちこちに分散し重複する
型(値の種類)に計算を集めれば
一か所のみの記述になる
型を組み合わせてロジックを表現
• 金額=単価×数量
– Amount型、UnitPrice型、Quantity型
– メソッドの設計
UnitPrice#multiply( Quantity ) : Amount
• 明細=(品名、単価、数量、金額)
– LineItem型、Product型、UnitPrice型、Amount型
– コンストラクタの設計
LineItem(Product, UnitPrice, Quantity)
2018/9/14 27
型のグルーピング
• 金額パッケージ
– Amount型、UnitPrice型、…
• 数量パッケージ
– Quantity型、Unit型、PieceUnit型、BoxUnit型、…
• 注文パッケージ
– PurchaseOrder型、LineItem型、…
– ShipTo型、InvoiceTo型、…
• 注文処理パッケージ
– EventType型、StatusType型、… (イベントと状態遷移)
– DeliveryType型、InvoicingType型、… (出荷区分、請求区分)
2018/9/14 28
型のグルーピング
• 金額パッケージ
– Amount型、UnitPrice型、…
• 数量パッケージ
– Quantity型、Unit型、PieceUnit型、BoxUnit型、…
• 注文パッケージ
– PurchaseOrder型、LineItem型、…
– ShipTo型、InvoiceTo型、…
• 注文処理パッケージ
– EventType型、StatusType型、… (イベントと状態遷移)
– DeliveryType型、InvoicingType型、… (出荷区分、請求区分)
2018/9/14 29
ドメインロジックの
全体を俯瞰し
概念の輪郭を描く
同じ名前で異なる型を扱う
部分型:異なる型を、同じ型名で扱う
interface Unit
class PriceUnit implements Unit
class BoxUnit implements Unit
多重定義:同じメソッド名で異なる型を受け取る
UnitPrice#multiply(Piece)
UnitPrice#multiply(Box)
総称性:一つのクラス名で型のバリエーションを扱う
List<Amount>, List<Quantity>, …
2018/9/14 30
オブジェクト指向のモジュール構造
• クラスを使って型を定義する
• 型を組み合わせて型を作る
• パッケージを使って型をグルーピングする
• 同じ名前で異なる型を扱う(ポリモフィズム)
部分型(サブタインピング)
多重定義(オーバーロード)
総称性(ジェネリクス)
2018/9/14 31
インクリメンタルに設計を進める
どういうこと?
2018/9/14 32
最初から良い設計は見つからない
開発の初期は、ドメインの知識が足りない
最初に書いたコードは、後から見直すと
もっと良い書き方が見つかる
初期の要求はあいまいで抜け漏れが多い
時間とともに具体的で詳細になっていく
要求は、時間とともに変化する
2018/9/14 33
アップフロントの設計
• 予測と予断に基づく設計
• リスク
– 要求やビジネスルールの知識と理解が不足した段階
で、ソフトウェアの構造を決めてしまう
– その結果、
ソフトウェア構造の確定後に発見された、要求やビジ
ネスルールを、どこかに無理やりねじ込む
– どこに何が書いてあるかわかりにくく、変更の影響範
囲が特定しにくい
2018/9/14 34
インクリメンタルに設計を進める
• 毎日、
クラス(モジュール)を発見し、実装し、
少し改善する
• 毎日、
モジュール構造(クラスとクラス関係)を検討し、
少し改善する
• 毎日、
全体のモジュール構造を俯瞰し、
少し改善する
2018/9/14 35
インクリメンタルに設計を進める
• 毎日、
問題領域の知識を少し広げ、少し掘り下げる
• 毎日、
一度書いたコードを見直し、少し改善する
• 時間とともに、具体的になる要求を、
時間とともに、コードに反映する
• 時間とともに、変化する要求を、
時間とともに、コードに反映する
2018/9/14 36
ドメインロジックに焦点を合わせる
オブジェクト指向のモジュール構造
インクリメンタルに設計を進める
ドメイン駆動設計のアプローチ
2018/9/14 37
やってみよう
2018/9/14 38
サンプルコード
レンタル料金の計算
典型的な手続き型プログラミング
入出力とロジックの混在
ドメイン知識の暗黙化(開発者の脳内自動変換)
↓
オブジェクト指向のモジュール構造
入出力とドメインロジックの分離
ドメイン知識をコードで明示的に表現する
2018/9/14 39
step by step
1. 計算ロジックの置き場所を改善する
2. ドメインロジックと入出力処理を分離する
3. 料金ルールを分析し深く理解する
4. クラス名でビジネスルールを語る
2018/9/14 40
before
2018/9/14 41
ビジネスルールが見えない設計
after
2018/9/14 42
型でビジネスルールを表現した設計
三つの基本テクニック
• 値オブジェクト
– 値を持つクラスに計算ロジックを持たせる
• コレクションオブジェクト
– 値のコレクションと、コレクションを操作するロジックを、
独立したクラスに分離する
• 区分オブジェクト
– 区分ごとの定数やロジックを別のクラスに分け、
条件分岐(if/switch)の記述をなくす/減らす
2018/9/14 43
設計の改善テクニック
• メソッドの抽出
• 名前の変更
• 説明用変数の導入
• クラスの抽出
• ロジックの移動
• コレクションのカプセル化
• タイプコードをクラスに置き換え
• プレゼンテーションとモデルの分離
• 階層の抽出
2018/9/14 44

Más contenido relacionado

La actualidad más candente

DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話Koichiro Matsuoka
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意Yoshitaka Kawashima
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)Yoshitaka Kawashima
 
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのかDDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのかKoichiro Matsuoka
 
実践に向けたドメイン駆動設計のエッセンス
実践に向けたドメイン駆動設計のエッセンス実践に向けたドメイン駆動設計のエッセンス
実践に向けたドメイン駆動設計のエッセンス増田 亨
 
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門増田 亨
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織Takafumi ONAKA
 
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例sairoutine
 
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装までドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで増田 亨
 
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]Koichiro Matsuoka
 
REST API のコツ
REST API のコツREST API のコツ
REST API のコツpospome
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方増田 亨
 
ドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計するドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計する増田 亨
 
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したことドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したことBIGLOBE Inc.
 
ソフトウェア開発のやり方の改善
ソフトウェア開発のやり方の改善ソフトウェア開発のやり方の改善
ソフトウェア開発のやり方の改善増田 亨
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ増田 亨
 
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)増田 亨
 

La actualidad más candente (20)

DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
 
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのかDDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
 
実践に向けたドメイン駆動設計のエッセンス
実践に向けたドメイン駆動設計のエッセンス実践に向けたドメイン駆動設計のエッセンス
実践に向けたドメイン駆動設計のエッセンス
 
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
 
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装までドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
 
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
 
REST API のコツ
REST API のコツREST API のコツ
REST API のコツ
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
 
ドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計するドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計する
 
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したことドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したこと
 
ソフトウェア開発のやり方の改善
ソフトウェア開発のやり方の改善ソフトウェア開発のやり方の改善
ソフトウェア開発のやり方の改善
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
Tackling Complexity
Tackling ComplexityTackling Complexity
Tackling Complexity
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
 
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
 

Similar a 世界でいちばんわかりやすいドメイン駆動設計

中小企業のために作られたWindows Server Essentialsとは
 中小企業のために作られたWindows Server Essentialsとは 中小企業のために作られたWindows Server Essentialsとは
中小企業のために作られたWindows Server EssentialsとはMasahiko Sada
 
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチレガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ増田 亨
 
クラウド2.0のもたらす破壊力と大企業内でのイノベーション
クラウド2.0のもたらす破壊力と大企業内でのイノベーションクラウド2.0のもたらす破壊力と大企業内でのイノベーション
クラウド2.0のもたらす破壊力と大企業内でのイノベーションOsaka University
 
ソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かうソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かう増田 亨
 
Amazonにおけるスマートフォンコンテンツ構築理念とは
Amazonにおけるスマートフォンコンテンツ構築理念とはAmazonにおけるスマートフォンコンテンツ構築理念とは
Amazonにおけるスマートフォンコンテンツ構築理念とはYoichiro Takehora
 
世界に通用するアプリケーションを開発しよう
世界に通用するアプリケーションを開発しよう世界に通用するアプリケーションを開発しよう
世界に通用するアプリケーションを開発しようdikehara
 
20140926 azure dr_slideshare
20140926 azure dr_slideshare20140926 azure dr_slideshare
20140926 azure dr_slideshareOsamu Takazoe
 
ドメイン駆動設計の捉え方 20150718
ドメイン駆動設計の捉え方 20150718ドメイン駆動設計の捉え方 20150718
ドメイン駆動設計の捉え方 20150718Mao Ohnishi
 
【de:code 2020】 二兎追う者は二兎を得る!クラウド VDI で利便性とセキュリティのどちらも手に入れる!
【de:code 2020】 二兎追う者は二兎を得る!クラウド VDI で利便性とセキュリティのどちらも手に入れる!【de:code 2020】 二兎追う者は二兎を得る!クラウド VDI で利便性とセキュリティのどちらも手に入れる!
【de:code 2020】 二兎追う者は二兎を得る!クラウド VDI で利便性とセキュリティのどちらも手に入れる!日本マイクロソフト株式会社
 
MSC 2010 T5-7 事例とデモで徹底解説! マイクロソフトのクラウド CRM
MSC 2010 T5-7 事例とデモで徹底解説! マイクロソフトのクラウド CRMMSC 2010 T5-7 事例とデモで徹底解説! マイクロソフトのクラウド CRM
MSC 2010 T5-7 事例とデモで徹底解説! マイクロソフトのクラウド CRMkumo2010
 
【Interop Tokyo 2016】 LAN/WAN向けSDNコントローラ APIC-EMのご紹介
【Interop Tokyo 2016】 LAN/WAN向けSDNコントローラ APIC-EMのご紹介【Interop Tokyo 2016】 LAN/WAN向けSDNコントローラ APIC-EMのご紹介
【Interop Tokyo 2016】 LAN/WAN向けSDNコントローラ APIC-EMのご紹介シスコシステムズ合同会社
 
【de:code 2020】 Azure Expert MSP の FIXER が処方、DX に効く 「クラウド運用」「AI」「人材育成」 の即効薬
【de:code 2020】 Azure Expert MSP の FIXER が処方、DX に効く 「クラウド運用」「AI」「人材育成」 の即効薬【de:code 2020】 Azure Expert MSP の FIXER が処方、DX に効く 「クラウド運用」「AI」「人材育成」 の即効薬
【de:code 2020】 Azure Expert MSP の FIXER が処方、DX に効く 「クラウド運用」「AI」「人材育成」 の即効薬日本マイクロソフト株式会社
 
セミナ受講レポート NRI Senju V12
セミナ受講レポート NRI Senju V12セミナ受講レポート NRI Senju V12
セミナ受講レポート NRI Senju V12Yukio Saito
 
Tech Ed 2009 Japan T3-309 Microsoft Business Productivity Online Services 技術概要
Tech Ed 2009 Japan T3-309 Microsoft Business Productivity Online Services 技術概要Tech Ed 2009 Japan T3-309 Microsoft Business Productivity Online Services 技術概要
Tech Ed 2009 Japan T3-309 Microsoft Business Productivity Online Services 技術概要kumo2010
 
Cloud Festa 2021 Winter 「デザイナー、データサイエンティスト、 クラウドエンジニア、で実現する共創の世界」
Cloud Festa 2021 Winter 「デザイナー、データサイエンティスト、 クラウドエンジニア、で実現する共創の世界」 Cloud Festa 2021 Winter 「デザイナー、データサイエンティスト、 クラウドエンジニア、で実現する共創の世界」
Cloud Festa 2021 Winter 「デザイナー、データサイエンティスト、 クラウドエンジニア、で実現する共創の世界」 Tsuyoshi Hirayama
 
[hccjp#2] 忖度なし!自社にあったハイブリッドクラウドの選び方
[hccjp#2] 忖度なし!自社にあったハイブリッドクラウドの選び方[hccjp#2] 忖度なし!自社にあったハイブリッドクラウドの選び方
[hccjp#2] 忖度なし!自社にあったハイブリッドクラウドの選び方Daichi Ogawa
 
サービス開発における工程
サービス開発における工程サービス開発における工程
サービス開発における工程Hidetoshi Mori
 
セミナー「クラウド時代におけるシステムデザイン」桑原里恵
セミナー「クラウド時代におけるシステムデザイン」桑原里恵セミナー「クラウド時代におけるシステムデザイン」桑原里恵
セミナー「クラウド時代におけるシステムデザイン」桑原里恵Sapporo Sparkle k.k.
 
クラウドがもたらすパラダイムシフト
クラウドがもたらすパラダイムシフトクラウドがもたらすパラダイムシフト
クラウドがもたらすパラダイムシフトkurikiyo
 

Similar a 世界でいちばんわかりやすいドメイン駆動設計 (20)

中小企業のために作られたWindows Server Essentialsとは
 中小企業のために作られたWindows Server Essentialsとは 中小企業のために作られたWindows Server Essentialsとは
中小企業のために作られたWindows Server Essentialsとは
 
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチレガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
 
Ms retail update ra 20191030
Ms retail update ra 20191030Ms retail update ra 20191030
Ms retail update ra 20191030
 
クラウド2.0のもたらす破壊力と大企業内でのイノベーション
クラウド2.0のもたらす破壊力と大企業内でのイノベーションクラウド2.0のもたらす破壊力と大企業内でのイノベーション
クラウド2.0のもたらす破壊力と大企業内でのイノベーション
 
ソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かうソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かう
 
Amazonにおけるスマートフォンコンテンツ構築理念とは
Amazonにおけるスマートフォンコンテンツ構築理念とはAmazonにおけるスマートフォンコンテンツ構築理念とは
Amazonにおけるスマートフォンコンテンツ構築理念とは
 
世界に通用するアプリケーションを開発しよう
世界に通用するアプリケーションを開発しよう世界に通用するアプリケーションを開発しよう
世界に通用するアプリケーションを開発しよう
 
20140926 azure dr_slideshare
20140926 azure dr_slideshare20140926 azure dr_slideshare
20140926 azure dr_slideshare
 
ドメイン駆動設計の捉え方 20150718
ドメイン駆動設計の捉え方 20150718ドメイン駆動設計の捉え方 20150718
ドメイン駆動設計の捉え方 20150718
 
【de:code 2020】 二兎追う者は二兎を得る!クラウド VDI で利便性とセキュリティのどちらも手に入れる!
【de:code 2020】 二兎追う者は二兎を得る!クラウド VDI で利便性とセキュリティのどちらも手に入れる!【de:code 2020】 二兎追う者は二兎を得る!クラウド VDI で利便性とセキュリティのどちらも手に入れる!
【de:code 2020】 二兎追う者は二兎を得る!クラウド VDI で利便性とセキュリティのどちらも手に入れる!
 
MSC 2010 T5-7 事例とデモで徹底解説! マイクロソフトのクラウド CRM
MSC 2010 T5-7 事例とデモで徹底解説! マイクロソフトのクラウド CRMMSC 2010 T5-7 事例とデモで徹底解説! マイクロソフトのクラウド CRM
MSC 2010 T5-7 事例とデモで徹底解説! マイクロソフトのクラウド CRM
 
【Interop Tokyo 2016】 LAN/WAN向けSDNコントローラ APIC-EMのご紹介
【Interop Tokyo 2016】 LAN/WAN向けSDNコントローラ APIC-EMのご紹介【Interop Tokyo 2016】 LAN/WAN向けSDNコントローラ APIC-EMのご紹介
【Interop Tokyo 2016】 LAN/WAN向けSDNコントローラ APIC-EMのご紹介
 
【de:code 2020】 Azure Expert MSP の FIXER が処方、DX に効く 「クラウド運用」「AI」「人材育成」 の即効薬
【de:code 2020】 Azure Expert MSP の FIXER が処方、DX に効く 「クラウド運用」「AI」「人材育成」 の即効薬【de:code 2020】 Azure Expert MSP の FIXER が処方、DX に効く 「クラウド運用」「AI」「人材育成」 の即効薬
【de:code 2020】 Azure Expert MSP の FIXER が処方、DX に効く 「クラウド運用」「AI」「人材育成」 の即効薬
 
セミナ受講レポート NRI Senju V12
セミナ受講レポート NRI Senju V12セミナ受講レポート NRI Senju V12
セミナ受講レポート NRI Senju V12
 
Tech Ed 2009 Japan T3-309 Microsoft Business Productivity Online Services 技術概要
Tech Ed 2009 Japan T3-309 Microsoft Business Productivity Online Services 技術概要Tech Ed 2009 Japan T3-309 Microsoft Business Productivity Online Services 技術概要
Tech Ed 2009 Japan T3-309 Microsoft Business Productivity Online Services 技術概要
 
Cloud Festa 2021 Winter 「デザイナー、データサイエンティスト、 クラウドエンジニア、で実現する共創の世界」
Cloud Festa 2021 Winter 「デザイナー、データサイエンティスト、 クラウドエンジニア、で実現する共創の世界」 Cloud Festa 2021 Winter 「デザイナー、データサイエンティスト、 クラウドエンジニア、で実現する共創の世界」
Cloud Festa 2021 Winter 「デザイナー、データサイエンティスト、 クラウドエンジニア、で実現する共創の世界」
 
[hccjp#2] 忖度なし!自社にあったハイブリッドクラウドの選び方
[hccjp#2] 忖度なし!自社にあったハイブリッドクラウドの選び方[hccjp#2] 忖度なし!自社にあったハイブリッドクラウドの選び方
[hccjp#2] 忖度なし!自社にあったハイブリッドクラウドの選び方
 
サービス開発における工程
サービス開発における工程サービス開発における工程
サービス開発における工程
 
セミナー「クラウド時代におけるシステムデザイン」桑原里恵
セミナー「クラウド時代におけるシステムデザイン」桑原里恵セミナー「クラウド時代におけるシステムデザイン」桑原里恵
セミナー「クラウド時代におけるシステムデザイン」桑原里恵
 
クラウドがもたらすパラダイムシフト
クラウドがもたらすパラダイムシフトクラウドがもたらすパラダイムシフト
クラウドがもたらすパラダイムシフト
 

Más de 増田 亨

事業活動モデル・システム機能モデル・ビジネスロジックの記述
事業活動モデル・システム機能モデル・ビジネスロジックの記述事業活動モデル・システム機能モデル・ビジネスロジックの記述
事業活動モデル・システム機能モデル・ビジネスロジックの記述増田 亨
 
ドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドラインドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドライン増田 亨
 
オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来増田 亨
 
ドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみようドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみよう増田 亨
 
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primerオブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer増田 亨
 
ドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイルドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイル増田 亨
 
プロダクトづくりのためのソフトウェア設計スタイル
プロダクトづくりのためのソフトウェア設計スタイルプロダクトづくりのためのソフトウェア設計スタイル
プロダクトづくりのためのソフトウェア設計スタイル増田 亨
 
ソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考えるソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考える増田 亨
 
ビジネスルールの複雑さに立ち向かう
ビジネスルールの複雑さに立ち向かうビジネスルールの複雑さに立ち向かう
ビジネスルールの複雑さに立ち向かう増田 亨
 
DDD sample code explained in Java
DDD sample code explained in JavaDDD sample code explained in Java
DDD sample code explained in Java増田 亨
 
アジャイルなソフトウェア設計を目指して
アジャイルなソフトウェア設計を目指してアジャイルなソフトウェア設計を目指して
アジャイルなソフトウェア設計を目指して増田 亨
 
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かすドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす増田 亨
 
SoR 2.0 summary
SoR 2.0 summarySoR 2.0 summary
SoR 2.0 summary増田 亨
 
毎日が越境だ!
毎日が越境だ!毎日が越境だ!
毎日が越境だ!増田 亨
 
SoR 2.0 基幹システムの再定義と再構築
SoR 2.0 基幹システムの再定義と再構築SoR 2.0 基幹システムの再定義と再構築
SoR 2.0 基幹システムの再定義と再構築増田 亨
 
ドメイン駆動設計とは何か 【入門編】
ドメイン駆動設計とは何か 【入門編】ドメイン駆動設計とは何か 【入門編】
ドメイン駆動設計とは何か 【入門編】増田 亨
 
越境する情シス:進化可能なアーキテクチャを手に入れる
越境する情シス:進化可能なアーキテクチャを手に入れる越境する情シス:進化可能なアーキテクチャを手に入れる
越境する情シス:進化可能なアーキテクチャを手に入れる増田 亨
 
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイルドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル増田 亨
 
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則現場で役立つシステム設計の原則
現場で役立つシステム設計の原則増田 亨
 
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則現場で役立つシステム設計の原則
現場で役立つシステム設計の原則増田 亨
 

Más de 増田 亨 (20)

事業活動モデル・システム機能モデル・ビジネスロジックの記述
事業活動モデル・システム機能モデル・ビジネスロジックの記述事業活動モデル・システム機能モデル・ビジネスロジックの記述
事業活動モデル・システム機能モデル・ビジネスロジックの記述
 
ドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドラインドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドライン
 
オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来
 
ドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみようドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみよう
 
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primerオブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
 
ドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイルドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイル
 
プロダクトづくりのためのソフトウェア設計スタイル
プロダクトづくりのためのソフトウェア設計スタイルプロダクトづくりのためのソフトウェア設計スタイル
プロダクトづくりのためのソフトウェア設計スタイル
 
ソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考えるソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考える
 
ビジネスルールの複雑さに立ち向かう
ビジネスルールの複雑さに立ち向かうビジネスルールの複雑さに立ち向かう
ビジネスルールの複雑さに立ち向かう
 
DDD sample code explained in Java
DDD sample code explained in JavaDDD sample code explained in Java
DDD sample code explained in Java
 
アジャイルなソフトウェア設計を目指して
アジャイルなソフトウェア設計を目指してアジャイルなソフトウェア設計を目指して
アジャイルなソフトウェア設計を目指して
 
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かすドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす
 
SoR 2.0 summary
SoR 2.0 summarySoR 2.0 summary
SoR 2.0 summary
 
毎日が越境だ!
毎日が越境だ!毎日が越境だ!
毎日が越境だ!
 
SoR 2.0 基幹システムの再定義と再構築
SoR 2.0 基幹システムの再定義と再構築SoR 2.0 基幹システムの再定義と再構築
SoR 2.0 基幹システムの再定義と再構築
 
ドメイン駆動設計とは何か 【入門編】
ドメイン駆動設計とは何か 【入門編】ドメイン駆動設計とは何か 【入門編】
ドメイン駆動設計とは何か 【入門編】
 
越境する情シス:進化可能なアーキテクチャを手に入れる
越境する情シス:進化可能なアーキテクチャを手に入れる越境する情シス:進化可能なアーキテクチャを手に入れる
越境する情シス:進化可能なアーキテクチャを手に入れる
 
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイルドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
 
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
 
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
 

世界でいちばんわかりやすいドメイン駆動設計