SlideShare a Scribd company logo
1 of 53
Download to read offline
ビジネスルールの複雑さに
立ち向かう
ギルドワークス 増田 亨
2019.5.11
レガシーをぶっつぶせ! 現場でDDD #genbadeDDD
ドメイン駆動設計でつくる理由
2019/5/11 2
進化と成長を続けるソフトウェアを手に入れる
ソフトウェアの変更を楽で安全にする
ソフトウエアが複雑になる理由
ビジネスルール
金額、数量、期日、場所などの計算と判定
ビジネスルールを適用する条件による分岐
顧客区分、商品種別、有効期間、地域区分、金額区分、数量区分、
取引種類、取引状態、支払い方法、支払いタイミング、
割り増し条件、割引条件、キャンセル可能条件、…
2019/5/11 3
ソフトウェアの核心にある複雑さに立ち向かう
ビジネスルールの複雑さに立ち向かう
42019/5/11
ビジネスルールに立ち向かう4象限
52019/5/11
2019/5/11 6
ソフトウェア表現
現実世界
ビジネスルールの
詳細・実体
ビジネスの
俯瞰モデル
ドメインオブジェクトの
設計と実装
ドメインモデルの
全体像/戦略的設計
ビジネスルールの
説明文書/定義文書
ビジネスの
全体像/事業戦略
2019/5/11 7
ソフトウェア表現
現実世界
ビジネスルールの
詳細・実体
ビジネスの
俯瞰モデル
値オブジェクト 区分オブジェクト
コレクションオブジェクト
料金表
利用案内 売買契約
賃貸契約
雇用契約
業務マニュアル
キャンセル規定
責務のレイヤー
REA ビジネスパターン
会計基準
競争地位
バリューチェーン
バランススコアカード
4C理論
業務知識がわかる本
要件定義入門
2019/5/11 8
ソフトウェア表現
現実世界
ビジネスルールの
詳細・実体
ビジネスの
俯瞰モデル
ドメインオブジェクトの
設計と実装
ドメインモデルの
全体像/戦略的設計
ビジネスルールの
説明文書/定義文書
ビジネスの
全体像/事業戦略
行ったり来たりする
広げながら掘り下げる
2019/5/11 9
ソフトウェア表現
現実世界
ビジネスルールの
詳細・実体
ビジネスの
俯瞰モデル
値オブジェクト 区分オブジェクト
コレクションオブジェクト
料金表
利用案内 売買契約
賃貸契約
雇用契約
業務マニュアル
キャンセル規定
責務のレイヤー
REA ビジネスパターン
簿記・予実管理
競争地位
バリューチェーン
バランススコアカード
4C理論
業務知識がわかる本
要件定義入門
ドメインオブジェクトの設計と実装
102019/5/11
ビジネスルールを「型」を使って記述する
2019/5/11 11
ビジネスルールを構成する三つの要素
Fact 事実の表現
ビジネスの状況の記録や通知に使う型
・ 数値、日付、場所、識別番号、名称、…
Rule Factを使った
計算や判定のロジック
計算式
同一性の判定式
大小の比較式
Goal 知りたいこと
計算結果や判定結果を表現する型
・合計金額、予定日、残数、…
・出荷可否、受付可否、割引種類、…
2019/5/11 12
Fact-Rule-Goalを記述する
設計パターン
値オブジェクト
ロジックを持ったenum
コレクションのカプセル化
2019/5/11 13
値オブジェクト
2019/5/11 14
値オブジェクトとは?
• Fact の表現手段
• 数値、時間、場所、識別番号、識別名称、…
• ビジネスとして適切な値の範囲を定義する
• Rule (計算ロジックや判定ロジック)の置き場所
• Factを使う計算や判定をメソッドとして記述する
• Factと持つオブジェクトに、関連するロジックを集める
• Goal 知りたいこと(計算結果、判定結果)の表現手段
• 知りたいことを表現した型(値の種類)を設計する
• メソッドの返す型として使う
2019/5/11 15
値オブジェクトのカタログ
単一の値 範囲型(from-to) 範囲型のコレクション
数
値
金額型
Amount, Money
金額範囲
x円以上 y円未満
金額範囲のコレクション
価格帯
数量型
Quantity, NumberOfXxx
数量範囲
m人以上 n人以下
数量範囲のコレクション
数量別割引率
時
間
日付型
DueDate, XxxDate
期間
開始日 - 終了日
期間のコレクション
シーズン
時刻型
HourTime, XxxTime
時間
開始時刻 – 終了時刻
時間のコレクション
時間帯
空
間
地点型
Point
接続
Path:出発点 – 到達点
接続のコレクション
Route [Path,…]
-
地域型
Area, Zone
地域のコレクション
階層、隣接関係、…
2019/5/11 16
値オブジェクトの効果
• 値オブジェクト=ビジネスに特化した値の種類を明示的に表現
• 動かすだけなら、プログラミング言語が提供する汎用的な型だけでよい
• プログラムの表現が、ビジネスルールの記述そのものになる
• 値の種類単位で、ビジネスロジックの記述が一か所にまとまる
• プログラムのあちこちにビジネスルールの記述が重複しない
• ビジネスルールが変わったときのソフトウェアの変更が楽で安全
2019/5/11 17
値オブジェクトを設計する
計算の意図を、メソッド名とメソッドの返す型で説明する
2019/5/11 18
計算の種類 説明、メソッド例 結果の型
等値判定 isEqual( other ) , notEqual( other ) boolean / enum
大小判定 greaterThan( other ), lessThan( other ), … boolean / enum
加算・減算 同じ型同士の計算 同じ型
乗算 同じ型同士の乗算は意味がないことが多い 別の数値型
除算 同じ型の除算と、異なる型の除算では、意味が異なる 別の数値型
境界 Max, Min の存在 同じ型(の固定値)
列挙 prev(), next() が可能な集合 (循環が可/不可) 同じ型
文字列表現 値の標準的な文字列表現 toString() 文字列
文字列からの生成 標準的な文字列表現からのオブジェクト生成 parse() 同じ型
計算の候補(単一値)
2019/5/11 19
計算の種類 説明、メソッド例 結果の型
等値判定 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 20
計算の種類(メソッド)の設計原則
ある値について、ビジネスルールに必要な計算は、限定的
• 金額と金額の足し算はある
• 金額と金額の掛け算はない
ビジネスルールの値の範囲は、限定的
• 境界値がある
• 1以上99まで
• 現在日以降 90日以内
計算の意図を、メソッド名、メソッドの渡す引数の型、メソッドの返す型
で説明する
2019/5/11 21
値オブジェクトを使って変更を安全にする
契約による設計
2019/5/11 22
契約による設計
変更を楽で安全にするための設計技法
assert による表明 型による表明
防御的な検査コードを書かない
事前条件(クラスを使う側の責任:引数の型)
事後条件(計算を提供するクラスの責任:返り値の型)
暗黙のビジネスルールの明文化につながる
値の範囲と計算の種類を限定 → 動作が安定する
2019/5/11 23
enumを使った区分ごとのロジックの整理
2019/5/11 24
区分ごとのビジネスルールを扱う
区分ごとの条件分岐が複雑さの大きな原因
enumは区分ごとのロジックを整理する強力な手段
enumを使うと区分体系の問題の発見と改善が進む
2019/5/11 25
区分を列挙しただけのenumを作る
区分ごとの定数をenumのフィールド変数+コンストラクタで表現
区分ごとの計算や判定のロジックをenumのメソッドに移動
コードがゆがむ(フィールド変数やメソッドの一貫性が崩れる)
区分のリファクタリング(区分の分解、再定義)
ビジネスルール記述のわかりやすさにブレークスルーが起きる
2019/5/11 26
コレクションのカプセル化
2019/5/11 27
コレクション操作の問題と改善
問題
あちこちにコレクションを操作する類似の記述が分散
バグが紛れ込みやすい(計算の不整合が起きやすい)
コレクション操作の手続きは、ビジネスの関心事ではない
改善策
目的別のコレクション型を独自につくる
コレクション操作のロジックをそのクラスに集める
コレクション操作の詳細を隠蔽する
2019/5/11 28
コレクションのカプセル化の効果
コレクション操作がちらばっていたコードのぐちゃぐちゃ感が消える
コレクションに必要な計算を集めると、リファクタリングがやりやすい
コレクション操作の整合性と一貫性が向上する
コレクション操作という技術手段が隠蔽され
クラス名、メソッド名、メソッドの返す型で
ビジネスの関心事が前面に登場する
2019/5/11 29
計算の種類 説明、メソッド例 結果の型
サイズ 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 30
ビジネスルールの
説明文書・定義文書
2019/5/11 31
2019/5/11 32
ソフトウェア表現
現実世界
ビジネスルールの
詳細・実体
ビジネスの
俯瞰モデル
ドメインオブジェクトの
設計と実装
ドメインモデルの
全体像/戦略的設計
ビジネスルールの
説明文書/定義文書
ビジネスの
全体像/事業戦略
行ったり来たりする
広げながら掘り下げる
2019/5/11 33
ソフトウェア表現
現実世界
ビジネスルールの
詳細・実体
ビジネスの
俯瞰モデル
値オブジェクト 区分オブジェクト
コレクションオブジェクト
料金表
利用案内 売買契約
賃貸契約
雇用契約
業務マニュアル
キャンセル規定
責務のレイヤー
REA ビジネスパターン
簿記・予実管理
競争地位
バリューチェーン
バランススコアカード
4C理論
業務知識がわかる本
要件定義入門
文書化されたビジネスルール
説明
顧客に向けた取引条件や利用条件の説明
価格表、利用案内、割引、特典、返品・返金、キャンセル、…
契約書
提供の約束、支払いの約束
提供できなかった時の約束、支払いできなかった時の約束
業務マニュアル
販売ポリシー、在庫ポリシー、サービスレベルポリシー、…
役職・権限・承認ルール
簿記・予実管理
売上、費用、利益の目標と実績
管理単位(部門、期間、集計、…)
2019/5/11 34
これらの内容が、ドメインオブジェトの計算ロジック・判定ロジックと連動する
ドメインモデルの
全体像/戦略的設計
2019/5/11 35
2019/5/11 36
ソフトウェア表現
現実世界
ビジネスルールの
詳細・実体
ビジネスの
俯瞰モデル
ドメインオブジェクトの
設計と実装
ドメインモデルの
全体像/戦略的設計
ビジネスルールの
説明文書/定義文書
ビジネスの
全体像/事業戦略
行ったり来たりする
広げながら掘り下げる
2019/5/11 37
ソフトウェア表現
現実世界
ビジネスルールの
詳細・実体
ビジネスの
俯瞰モデル
値オブジェクト 区分オブジェクト
コレクションオブジェクト
料金表
利用案内 売買契約
賃貸契約
雇用契約
業務マニュアル
キャンセル規定
責務のレイヤー
REA ビジネスパターン
業務知識がわかる本
簿記・予実管理
競争地位
バリューチェーン
バランススコアカード
4C理論
要件定義入門
責務のレイヤー
2019/5/11 38
ドメイン駆動設計 第16章 大規模な構造
ビジネスルール全体を俯瞰して整理する
ドメインオブジェクトのレイヤー化
ポリシー
事業運営の決め事
ビジネスルールの方針
価格、割引、優遇、拒絶
オーバーブッキング
キャンセル
約束
顧客との契約
取引先との契約
見積
予約
注文
運用
ビジネス活動の実態(イベント)
ビジネスルールの起動トリガー
出荷、売り上げ
請求、回収
能力 ビジネス運営上の制約条件
在庫
出荷能力
処理能力
2019/5/11 39
REA ビジネスパターン
2019/5/11 40
絶版
2019/5/11 41
https://tech.nikkeibp.co.jp/it/article/Watcher/20070828/280551/出典:日経XTECH REAとビジネスパターン
2019/5/11 42
第1章 会社経営
第2章 財務会計
第3章 販売管理
第4章 物流・在庫管理
第5章 生産管理
第6章 人事管理
2019/5/11 43
第1部 基礎編
なぜモデリングを行なうのか―モデリングの種類と手順
モデルの基本作法―モデリングの記法と読み方
データモデルを補完するモデル―プロセスモデルとUML
第2部 実践編
エンティティの切り出し方―トップダウンモデリング
トップダウンでの主キーと主要属性の定義
ネーミング標準とドメイン
ボトムアップ分析
1 業務システムの概要とマスタの設計
販売管理システムの全体像
基幹業務システム構築のポイント
部門/社員/商品マスタの設計 ほか)
2 販売システムのDB設計
受注業務のDB設計
出荷/売上業務のDB設計
請求業務のDB設計 ほか)
3 仕入/在庫システムのDB設計
発注/仕入業務のDB設計
入庫/倉庫移動業務のDB設計
在庫管理業務のDB設計
アプローチはデータモデリングだが、
ビジネスルールへの言及が多い
ビジネスルール計算ロジックの
入力データと、出力結果データという
見方をすると、
ドメインオブジェクトの設計の役に立つ
2019/5/11 44
序章 この本を買うべきか
第1章 ベテランSEのノウハウとは何か
第2章 ベテランSEのノウハウを見える化する
第3章 システム化の範囲を選ぶ
第4章 業務の視点でシステム機能を選ぶ
第5章 経営管理の視点(株式上場)でシステム機能を選ぶ
第6章 経営戦略の視点でシステム機能を選ぶ
第7章 企業の業務レベルを考慮する
第8章 企業風土を考慮する
第9章 要件定義の設計手順のまとめ
第10章 ベテランSEのノウハウを使いこなす
資料 業務知識ベース
ビジネスルールのドロドロした世界とその戦い方の実践的な指南書
読むのがたいへん
(歴史のある基幹システムであればあるあるばかり)
ビジネスの全体像/事業戦略
2019/5/11 45
2019/5/11 46
ソフトウェア表現
現実世界
ビジネスルールの
詳細・実体
ビジネスの
俯瞰モデル
ドメインオブジェクトの
設計と実装
ドメインモデルの
全体像/戦略的設計
ビジネスルールの
説明文書/定義文書
ビジネスの
全体像/事業戦略
行ったり来たりする
広げながら掘り下げる
2019/5/11 47
ソフトウェア表現
現実世界
ビジネスルールの
詳細・実体
ビジネスの
俯瞰モデル
値オブジェクト 区分オブジェクト
コレクションオブジェクト
料金表
利用案内 売買契約
賃貸契約
雇用契約
業務マニュアル
キャンセル規定
責務のレイヤー
REA ビジネスパターン
業務知識がわかる本
簿記・予実管理
競争地位
バリューチェーン
バランスト・スコアカード
4C理論
要件定義入門
マーケットでの競争地位
ビジネスルールへの変更要求の違い
リーダー
強い競争力
大きな経営資源
他のプレーヤーの強みを消すためのビジネスルール変更が多くなる
(そういう意味では後追い型の変更)
チャレン
ジャー
独自優位性に挑戦
大きな経営資源
仮説検証型、企画型のビジネスルール変更が多くなる
新しい商品、新しい販売方法、新しい特典、…
フォロワー
弱い競争力
弱い経営資源
生き残りのための後追い型のビジネスルール変更が多くなる
資源がないので、ルール変更も場当たりや中途半端になりがち
ニッチャ
独自性は強い
小さい経営資源
独自性を維持・強化することに集中する
ビジネスルールは独自かつ複雑になりがち
選択と集中の意思決定が明確
2019/5/11 48
バリューチェーン
2019/5/11 49
https://bizhint.jp/keyword/126003
出典: BizHint
powered by BizReach
業務機能の全体像の定番
マイケルポーター「競争優位の戦略」
バランスト・スコアカード
2019/5/11 50
業績のモニタリング枠組み
KPI 測定や分析目的のデータ収集が
要求としてあがってくることが増えた
財務の視点の数値
業務プロセスの視点の数値
顧客の視点の数値
学習と成長の視点の数値
https://vokka.jp/1127
出典:
VOKKA [ヴォッカ]
バランスト・スコアカード(BSC)の本当の使い方・活用方法
4C理論
マーケティング活動の枠組み
Customer
Value
顧客価値 提供商品、提供サービスに関するビジネスルールの変更の可能性
Customer
Cost
顧客からみた
コスト
価格に関するビジネスルールの変更の可能性
Convenience
顧客の
利便性
提供方法、提供場所、提供タイミングに関するビジネスルール変更の
可能性
Communication
顧客との
コミュニケー
ション
顧客とのコミュニケーションに関するビジネスルール変更の可能性
2019/5/11 51
ビジネスルールの複雑さに立ち向かう
まとめ
2019/5/11 52
2019/5/11 53
ソフトウェア表現
現実世界
ビジネスルールの
詳細・実体
ビジネスの
俯瞰モデル
ドメインオブジェクトの
設計と実装
ドメインモデルの
全体像/戦略的設計
ビジネスルールの
説明文書/定義文書
ビジネスの
全体像/事業戦略
行ったり来たりする
広げながら掘り下げる

More Related Content

What's hot

ソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考えるソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考える増田 亨
 
ドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイルドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイル増田 亨
 
リーンなコードを書こう:実践的なオブジェクト指向設計
リーンなコードを書こう:実践的なオブジェクト指向設計リーンなコードを書こう:実践的なオブジェクト指向設計
リーンなコードを書こう:実践的なオブジェクト指向設計増田 亨
 
ドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドラインドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドライン増田 亨
 
リッチなドメインモデル 名前探し
リッチなドメインモデル 名前探しリッチなドメインモデル 名前探し
リッチなドメインモデル 名前探し増田 亨
 
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計増田 亨
 
ドメイン駆動設計 複雑さに立ち向かう
ドメイン駆動設計 複雑さに立ち向かうドメイン駆動設計 複雑さに立ち向かう
ドメイン駆動設計 複雑さに立ち向かう増田 亨
 
正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース増田 亨
 
ソフトウェアにおける 複雑さとは何なのか?
ソフトウェアにおける 複雑さとは何なのか?ソフトウェアにおける 複雑さとは何なのか?
ソフトウェアにおける 複雑さとは何なのか?Yoshitaka Kawashima
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門増田 亨
 
ソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かうソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かう増田 亨
 
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDDドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD増田 亨
 
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したことドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したことBIGLOBE Inc.
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ増田 亨
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)Yoshitaka Kawashima
 
ちいさなオブジェクトでドメインモデルを組み立てる
ちいさなオブジェクトでドメインモデルを組み立てるちいさなオブジェクトでドメインモデルを組み立てる
ちいさなオブジェクトでドメインモデルを組み立てる増田 亨
 
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Springドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring増田 亨
 
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1  ドメイン駆動設計の基本を理解する3週連続DDDその1  ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する増田 亨
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意Yoshitaka Kawashima
 

What's hot (20)

ソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考えるソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考える
 
ドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイルドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイル
 
リーンなコードを書こう:実践的なオブジェクト指向設計
リーンなコードを書こう:実践的なオブジェクト指向設計リーンなコードを書こう:実践的なオブジェクト指向設計
リーンなコードを書こう:実践的なオブジェクト指向設計
 
ドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドラインドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドライン
 
リッチなドメインモデル 名前探し
リッチなドメインモデル 名前探しリッチなドメインモデル 名前探し
リッチなドメインモデル 名前探し
 
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
 
ドメイン駆動設計 複雑さに立ち向かう
ドメイン駆動設計 複雑さに立ち向かうドメイン駆動設計 複雑さに立ち向かう
ドメイン駆動設計 複雑さに立ち向かう
 
正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース
 
ソフトウェアにおける 複雑さとは何なのか?
ソフトウェアにおける 複雑さとは何なのか?ソフトウェアにおける 複雑さとは何なのか?
ソフトウェアにおける 複雑さとは何なのか?
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
 
ソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かうソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かう
 
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDDドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD
 
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したことドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したこと
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
 
Tackling Complexity
Tackling ComplexityTackling Complexity
Tackling Complexity
 
ちいさなオブジェクトでドメインモデルを組み立てる
ちいさなオブジェクトでドメインモデルを組み立てるちいさなオブジェクトでドメインモデルを組み立てる
ちいさなオブジェクトでドメインモデルを組み立てる
 
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Springドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
 
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1  ドメイン駆動設計の基本を理解する3週連続DDDその1  ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
 

Similar to ビジネスルールの複雑さに立ち向かう

Cloud Nativeを見据えたアプリケーションアーキテクチャとレガシーモダナイゼーション
Cloud Nativeを見据えたアプリケーションアーキテクチャとレガシーモダナイゼーションCloud Nativeを見据えたアプリケーションアーキテクチャとレガシーモダナイゼーション
Cloud Nativeを見据えたアプリケーションアーキテクチャとレガシーモダナイゼーションErina Matsuda
 
Developers festa Sapporo 2014 
Developers festa Sapporo 2014 Developers festa Sapporo 2014 
Developers festa Sapporo 2014 Zenji Kanzaki
 
MSC 2010 T5-7 事例とデモで徹底解説! マイクロソフトのクラウド CRM
MSC 2010 T5-7 事例とデモで徹底解説! マイクロソフトのクラウド CRMMSC 2010 T5-7 事例とデモで徹底解説! マイクロソフトのクラウド CRM
MSC 2010 T5-7 事例とデモで徹底解説! マイクロソフトのクラウド CRMkumo2010
 
Musubell_saleshub紹介資料.pdf
Musubell_saleshub紹介資料.pdfMusubell_saleshub紹介資料.pdf
Musubell_saleshub紹介資料.pdfssuserb6870d
 
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版) データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版) Satoshi Nagayasu
 
2022年3月期決算プレゼンテーション
2022年3月期決算プレゼンテーション2022年3月期決算プレゼンテーション
2022年3月期決算プレゼンテーションKDDI
 
Digital ma seminar_20180828_v5
Digital ma seminar_20180828_v5Digital ma seminar_20180828_v5
Digital ma seminar_20180828_v5Tomohiko Kubota
 
ビジネスモデル2 rdra
ビジネスモデル2 rdraビジネスモデル2 rdra
ビジネスモデル2 rdraZenji Kanzaki
 
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう増田 亨
 
Service Cloud Trailblazers Meetup #03
Service Cloud Trailblazers Meetup #03Service Cloud Trailblazers Meetup #03
Service Cloud Trailblazers Meetup #03sfdc_sctb
 
経営情報フォーラム2009
経営情報フォーラム2009経営情報フォーラム2009
経営情報フォーラム2009guest5ad17cf
 
経営情報フォーラム2009発表資料
経営情報フォーラム2009発表資料経営情報フォーラム2009発表資料
経営情報フォーラム2009発表資料Keiichi Hashimoto
 
Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...
Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...
Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...オラクルエンジニア通信
 
July growth pick ups
July growth pick upsJuly growth pick ups
July growth pick upsCS KARTE
 
クラウドがもたらすパラダイムシフト
クラウドがもたらすパラダイムシフトクラウドがもたらすパラダイムシフト
クラウドがもたらすパラダイムシフトkurikiyo
 
プライベートクラウドへの準備はできていますか?[ホワイトペーパー]
プライベートクラウドへの準備はできていますか?[ホワイトペーパー]プライベートクラウドへの準備はできていますか?[ホワイトペーパー]
プライベートクラウドへの準備はできていますか?[ホワイトペーパー]KVH Co. Ltd.
 
イベント補足資料(増島)
イベント補足資料(増島)イベント補足資料(増島)
イベント補足資料(増島)Masakazu Masujima
 
AWS 技術者向け Azure サービス解説 de:code2019版 #CD81
AWS 技術者向け Azure サービス解説 de:code2019版 #CD81AWS 技術者向け Azure サービス解説 de:code2019版 #CD81
AWS 技術者向け Azure サービス解説 de:code2019版 #CD81Minoru Naito
 

Similar to ビジネスルールの複雑さに立ち向かう (20)

Cloud Nativeを見据えたアプリケーションアーキテクチャとレガシーモダナイゼーション
Cloud Nativeを見据えたアプリケーションアーキテクチャとレガシーモダナイゼーションCloud Nativeを見据えたアプリケーションアーキテクチャとレガシーモダナイゼーション
Cloud Nativeを見据えたアプリケーションアーキテクチャとレガシーモダナイゼーション
 
Developers festa Sapporo 2014 
Developers festa Sapporo 2014 Developers festa Sapporo 2014 
Developers festa Sapporo 2014 
 
MSC 2010 T5-7 事例とデモで徹底解説! マイクロソフトのクラウド CRM
MSC 2010 T5-7 事例とデモで徹底解説! マイクロソフトのクラウド CRMMSC 2010 T5-7 事例とデモで徹底解説! マイクロソフトのクラウド CRM
MSC 2010 T5-7 事例とデモで徹底解説! マイクロソフトのクラウド CRM
 
Musubell_saleshub紹介資料.pdf
Musubell_saleshub紹介資料.pdfMusubell_saleshub紹介資料.pdf
Musubell_saleshub紹介資料.pdf
 
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版) データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
 
2022年3月期決算プレゼンテーション
2022年3月期決算プレゼンテーション2022年3月期決算プレゼンテーション
2022年3月期決算プレゼンテーション
 
20110225
2011022520110225
20110225
 
Digital ma seminar_20180828_v5
Digital ma seminar_20180828_v5Digital ma seminar_20180828_v5
Digital ma seminar_20180828_v5
 
ビジネスモデル2 rdra
ビジネスモデル2 rdraビジネスモデル2 rdra
ビジネスモデル2 rdra
 
VMO導入ご検討資料
VMO導入ご検討資料VMO導入ご検討資料
VMO導入ご検討資料
 
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
 
Service Cloud Trailblazers Meetup #03
Service Cloud Trailblazers Meetup #03Service Cloud Trailblazers Meetup #03
Service Cloud Trailblazers Meetup #03
 
経営情報フォーラム2009
経営情報フォーラム2009経営情報フォーラム2009
経営情報フォーラム2009
 
経営情報フォーラム2009発表資料
経営情報フォーラム2009発表資料経営情報フォーラム2009発表資料
経営情報フォーラム2009発表資料
 
Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...
Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...
Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...
 
July growth pick ups
July growth pick upsJuly growth pick ups
July growth pick ups
 
クラウドがもたらすパラダイムシフト
クラウドがもたらすパラダイムシフトクラウドがもたらすパラダイムシフト
クラウドがもたらすパラダイムシフト
 
プライベートクラウドへの準備はできていますか?[ホワイトペーパー]
プライベートクラウドへの準備はできていますか?[ホワイトペーパー]プライベートクラウドへの準備はできていますか?[ホワイトペーパー]
プライベートクラウドへの準備はできていますか?[ホワイトペーパー]
 
イベント補足資料(増島)
イベント補足資料(増島)イベント補足資料(増島)
イベント補足資料(増島)
 
AWS 技術者向け Azure サービス解説 de:code2019版 #CD81
AWS 技術者向け Azure サービス解説 de:code2019版 #CD81AWS 技術者向け Azure サービス解説 de:code2019版 #CD81
AWS 技術者向け Azure サービス解説 de:code2019版 #CD81
 

More from 増田 亨

事業活動モデル・システム機能モデル・ビジネスロジックの記述
事業活動モデル・システム機能モデル・ビジネスロジックの記述事業活動モデル・システム機能モデル・ビジネスロジックの記述
事業活動モデル・システム機能モデル・ビジネスロジックの記述増田 亨
 
オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来増田 亨
 
ドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみようドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみよう増田 亨
 
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primerオブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer増田 亨
 
プロダクトづくりのためのソフトウェア設計スタイル
プロダクトづくりのためのソフトウェア設計スタイルプロダクトづくりのためのソフトウェア設計スタイル
プロダクトづくりのためのソフトウェア設計スタイル増田 亨
 
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチレガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ増田 亨
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ増田 亨
 
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 基幹システムの再定義と再構築増田 亨
 
ドメイン駆動設計とは何か 【入門編】
ドメイン駆動設計とは何か 【入門編】ドメイン駆動設計とは何か 【入門編】
ドメイン駆動設計とは何か 【入門編】増田 亨
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方増田 亨
 
越境する情シス:進化可能なアーキテクチャを手に入れる
越境する情シス:進化可能なアーキテクチャを手に入れる越境する情シス:進化可能なアーキテクチャを手に入れる
越境する情シス:進化可能なアーキテクチャを手に入れる増田 亨
 
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイルドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル増田 亨
 
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則現場で役立つシステム設計の原則
現場で役立つシステム設計の原則増田 亨
 
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則現場で役立つシステム設計の原則
現場で役立つシステム設計の原則増田 亨
 

More from 増田 亨 (19)

事業活動モデル・システム機能モデル・ビジネスロジックの記述
事業活動モデル・システム機能モデル・ビジネスロジックの記述事業活動モデル・システム機能モデル・ビジネスロジックの記述
事業活動モデル・システム機能モデル・ビジネスロジックの記述
 
オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来
 
ドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみようドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみよう
 
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primerオブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
 
プロダクトづくりのためのソフトウェア設計スタイル
プロダクトづくりのためのソフトウェア設計スタイルプロダクトづくりのためのソフトウェア設計スタイル
プロダクトづくりのためのソフトウェア設計スタイル
 
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチレガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
 
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 基幹システムの再定義と再構築
 
ドメイン駆動設計とは何か 【入門編】
ドメイン駆動設計とは何か 【入門編】ドメイン駆動設計とは何か 【入門編】
ドメイン駆動設計とは何か 【入門編】
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
 
越境する情シス:進化可能なアーキテクチャを手に入れる
越境する情シス:進化可能なアーキテクチャを手に入れる越境する情シス:進化可能なアーキテクチャを手に入れる
越境する情シス:進化可能なアーキテクチャを手に入れる
 
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイルドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
 
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
 
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
 

ビジネスルールの複雑さに立ち向かう