FiNC DDD第一回勉強会

裕紀 重村
裕紀 重村株式会社FiNC Web Application Engineer
第一回DDD勉強会
2016/04/14
株式会社FiNC 重村 裕紀(Rubyエンジニア)
1. はじめに
2. DDDとは何か
3. DDDの目的
4. 戦略的DDD
5. 戦術的DDD
0. 目次
1. はじめに
背景
1. はじめに
「DDD 勉強会 企業」とかで出てきた会社
1. はじめに
Rubyの構文は表現機能が非常に高く、この言語の基礎水準はDDDにと
って最適です。Railsでは、遂に、1990年代前半のWeb以前のUI作成技
術と同じような簡単なウェブUIの作成を実現しているということなの
で、私は非常に期待をもっています。
Rubyの使用によってこの方向に進んでいけば、(おそらく、若干のイン
フラストラクチャ部品による補強は必要ですが)DDDを実現する理想的
なプラットフォームも提供されるようになると考えています。
エリック・エヴァンス曰く…
DDDとRubyは相性良いらしい。
1. はじめに
DDDの概念をわかり
やすく伝えます。
2. DDDとは何か?
2. DDDとは何か?
2. DDDとは?
2-1. 概要
+ ドメイン駆動設計(Domain Driven Design)
+ ドメインモデルを中心に考える設計思想
+ ドメインとは、組織が行う事業やそれを取り巻く世界のこと。
+ ドメインモデルとは、そのドメインの知識や振舞を抽象化したもの。
-> OOPのモデルと理解してOK
2. DDDとは?
2-2. 具体例(コンビニ)
2. DDDとは?
2-2. 具体例(コンビニ)
コンビニのレジシステムを表現して下さい。
2min
2. DDDとは?
2-2. 具体例(コンビニ)
DDDではモデルを用いて表現する。
2. DDDとは?
2-2. 具体例(コンビニ)
登場モデル
顧客、レジ、商品
1. 顧客モデル
属性:お金
振舞:購入する
2. レジモデル
属性:お金、購入履歴
振舞:購入履歴を登録する。レシートを吐き出す。
3. 商品モデル
属性:お金、名前
振舞:なし
2. DDDとは?
2-1. 概要
2. DDDとは?
2-2. 具体例(コンビニ)
お金モデル、レシートモデル、購入履歴モデル等
が足りない。
-> ドメインへの理解の深化
2. DDDとは?
2-2. 具体例(コンビニ)
2. DDDとは?
2-2. 具体例(コンビニ)
ドメインを考えるときに、これらのモデルを使っ
てドメインエキスパートとコミュニケーションを
する。
ドメインモデルは、(ユビキタスな)言語である。
DDDは言葉を大切にする設計思想。
2. DDDとは?
2-3. 問題
DDDはなんの略?
2. DDDとは?
2-3. 問題
ドメイン駆動設計
(Domain Driven Design)
2. DDDとは?
2-3. 問題
ドメインとは?
2. DDDとは?
2-3. 問題
組織が行う事業やそれ
を取り巻く世界のこと
。
2. DDDとは?
2-3. 問題
ドメインモデルとは
?
2. DDDとは?
2-3. 問題
ドメインモデルとは、そのドメイ
ンの知識や振舞を抽象化したもの
。
2. DDDとは?
2-3. 問題
DDDとは?
2. DDDとは?
2-1. 概要
ドメインモデルを中
心に考える設計思想
2. DDDとは?
2-4. まとめ
+ ドメイン駆動設計(Domain Driven Design)
+ ドメインモデルを中心に考える設計思想
+ ドメインとは、組織が行う事業やそれを取り巻く世界のこと。
+ ドメインモデルとは、そのドメインの知識や振舞を抽象化したもの。
+ ドメインモデルは言語
+ DDDは言葉を大切にする設計思想
3.DDDの目的
3. DDDの目的
3.DDDの目的
3-1. 結論
ソフトウェアの核心に
ある複雑性と闘うこと
。
3.DDDの目的
3-2. 歴史
ソフトウェアの歴史
3.DDDの目的
3-2. 歴史
1960年代末
ソフトウェア危機
3.DDDの目的
3-2. 歴史
ソフトウェア危機(ソフトウェアきき、
Software Crisis)とは、ソフトウェア工学がま
だ十分に確立していなかった頃、よく使われた
言葉である[1]。この言葉は、コンピュータの急
激な高性能化によってコンピュータ上のシステ
ムが扱う問題が益々複雑化することによる影響
を表したものである。
3.DDDの目的
3-2. 歴史
-> ソフトウェア工学の誕生
3.DDDの目的
3-2. 歴史
1970年代
構造化の時代
(if文やfor文使えみたいな?
モジュール作れみたいな?)
3.DDDの目的
3-2. 歴史
1980年代
沈滞期
(管理技術へのシフト)
3.DDDの目的
3-2. 歴史
1990年代
オブジェクト指向時代
(Java: 1990年代前半、Python: 1991年、
Ruby: 1995年)
3.DDDの目的
3-2. 歴史
1990年代
ソフトウェアプロセス
(Extrem Programming/ アジャイル開発プロセス)
3.DDDの目的
3-2. 歴史
2000年代
静的解析技術
(UML)
3.DDDの目的
3-2. 歴史
2003年
エリック・エバンスの
ドメイン駆動設計
3.DDDの目的
3-2. 歴史
DDDは、オブジェクト指向や
エクストリームプログラミン
グなどを体系化したもの。
3.DDDの目的
3-3. 問題
DDDの目的は?
3.DDDの目的
3-4. まとめ
+ DDDの目的は、ソフトウェアの核心にある複
雑性と闘うこと。
+ OOPやXP等といったソフトウェア工学を体系
化したもの。
+ つまり、アジャイルでオブジェクト指向の恩恵
を最大限受けるアプリケーションの考え方。
休憩 5min
4. 戦略的DDD
4. 戦略的DDD
5-1. 概要
5. 戦術的DDD
DDDの思想1 ドメインモデルを中心とした世界
戦略的DDD2 どうやってモデリングするか?
戦術的DDD3 どうやってモデルを実現するか?
4-1. はじめに
4. 戦略的DDD
抽象的でnew ワード
が出てきます。。
4-1. はじめに
4. 戦略的DDD
一番とっつきづらい
。
4-1. はじめに
4. 戦略的DDD
しかし、一番大切
4-1. はじめに
4. 戦略的DDD
ドメイン中心の世界
↓
戦略的DDD
(どうやってドメインをモデルで表すか?)
↓
戦術的DDD
(どうやって実装するのか?)
4-1. はじめに
4. 戦略的DDD
覚えてもらいたい言葉
1. ドメインエキスパート
2. ユビキタス言語
3. 境界づけられたコンテキスト
4. コンテキストマップ
4-1. はじめに
4. 戦略的DDD
後で聞きます!
4-1. はじめに
4. 戦略的DDD
覚えてもらいたい言葉
1. ドメインエキスパート
2. ユビキタス言語
3. 境界づけられたコンテキスト
4. コンテキストマップ
4-2. ドメインエキスパート
+ そのドメインにおける業務知識を最も持つ人
+ ソフトウェア開発者の仕事は、ドメインエキスパートのメンタルモデ
ルアプリケーション上で実現することが仕事
+ ※ メンタルモデルとは、人間が実世界で何かがどのように作用するか
を思考する際のプロセスを表現したもの
4. 戦略的DDD
食事指導のドメインエキスパート 人事のドメインエキスパート
4-3. ユビキタス言語
4. 戦略的DDD
覚えてもらいたい言葉
1. ドメインエキスパート
2. ユビキタス言語
3. 境界づけられたコンテキスト
4. コンテキストマップ
4-3. ユビキタス言語
+ ドメインエキスパートやソフトウェア開発者を含めたチーム全体でつ
くり上げる言語のこと。
+ ユビキタス言語が注目するのは、その業務自体が、どのような考えの
もとでどのように動くのか。
4. 戦略的DDD
StartUpMessageとは?
InternalPaymentとは?
CorporateSurveyDetailとは?
CompanyAnalysisTraitとは?
専門的な例 抽象的な例
Userとは?
Managerとは?
ProtoTypeとは?
Planとは?
ユビキタス言語が構築されていれば問題ない
4-3. ユビキタス言語
ドメインエキスパートやソフトウェア開発者を含めたチーム全
体でつくり上げる共有言語。
4. 戦略的DDD
ユビキタス言語
ドメインエキスパートソフトウェア開発者
デザインパターン
技術用語
開発者が理解していない
ビジネス用語
設計には出てこないが誰もが
使用するビジネス用語
4-3. ユビキタス言語
4. 戦略的DDD
この状況をコードで記述して下さい。1min
4-3. ユビキタス言語
4. 戦略的DDD
「どうでもいいから、さっさとコード書こうよ。」
4-3. ユビキタス言語
4. 戦略的DDD
「インフルエンザの注射を患者に打つ。」
4-3. ユビキタス言語
4. 戦略的DDD
「ナースが患者に、インフルエンザワクチンを投与する。」
4-3. ユビキタス言語
4. 戦略的DDD
◯他社事例(どこか忘れました)
ドメインエキスパートに、モデルのインターフ
ェース(属性とpublicなメソッド)をコードレビ
ューしてもらうらしい。
4-4. 境界づけられたコンテキスト
4. 戦略的DDD
覚えてもらいたい言葉
1. ドメインエキスパート
2. ユビキタス言語
3. 境界づけられたコンテキスト
4. コンテキストマップ
4-4. 境界づけられたコンテキスト
ユビキタス言語が使われるコンテキストを明
示したもの。
境界を明示することで、ユビキタス言語の意
味を定義する。
4. 戦略的DDD
4-4. 境界づけられたコンテキスト
4. 戦略的DDD
銀行取引
コンテキスト
アカウント(講座)とは、負債や信用取引の記
録を保持するもの。ある顧客について、その
銀行における現在の財務状況を示す。
文学
コンテキスト
アカウント(報告書)とは、ある期間における
、関連する出来事についての文章を集めたも
の。
4-4. 境界づけられたコンテキスト
4. 戦略的DDD
境界づけられたコンテキスト
4-5. コンテキストマップ
4. 戦略的DDD
覚えてもらいたい言葉
1. ドメインエキスパート
2. ユビキタス言語
3. 境界づけられたコンテキスト
4. コンテキストマップ
4-5. コンテキストマップ
ドメインの世界地図
4. 戦略的DDD
4-5-1. コンテキストマップの作り方
1. ドメインエキスパートを横に用意する
2. サービスが解決したいドメインを定義
3. ドメインを機能のまとまりに沿ってサブドメインに分割する
4. サブドメインの集合をユビキタス言語の境界で切り分ける
5. 境界づけられたコンテキスト間の上流と下流の関係を書く
6. サブドメイン内で登場するドメインモデルを定義する
4. 戦略的DDD
4-5. コンテキストマップ
人事評価システム
4. 戦略的DDD
4-5-1-1. ドメインエキスパートを横に用意する。
4. 戦略的DDD
人事評価のドメインエキスパート
人事評価システムを作りたいん
だよね〜
4-5-1-2. サービスが解決したいドメインを定義
4. 戦略的DDD
勤怠
給料
売上成績
他社評価
役職
プロフィール
勤怠や売上、他社からの評価等を元に、
給料や、役職を決定するシステムを作りたい。
人事評価ドメイン
4-5-1-2. サービスが解決したいドメインを定義
4. 戦略的DDD
勤怠や売上、他社からの評価等を元に、
給料や、役職を決定するシステム
人事評価ドメイン
4-5-1-3. ドメインを機能のまとまりに沿ってサブドメインに分割する
4. 戦略的DDD
人事評価ドメイン
従業員アカウント管理サブドメ
イン
集計サブドメイン
評価サブドメ
イン
4-5-1-4. サブドメインの集合をユビキタス言語の境界で切り分ける
4. 戦略的DDD
人事評価ドメイン
従業員アカウント管理サブドメ
イン
集計サブドメイン
評価サブドメ
イン
評価コンテキスト
管理コンテキスト
4-5-1-4. サブドメインの集合をユビキタス言語の境界で切り分ける
4. 戦略的DDD
人事評価ドメイン
従業員アカウント管理サブドメ
イン
集計サブドメイン
評価サブドメ
イン
評価コンテキスト
管理コンテキスト
あくまでユビキタス言語の境界
4-5-1-5. 境界づけられたコンテキスト間の上流と下流の関係を書く
4. 戦略的DDD
人事評価ドメイン
従業員アカウント管理サブドメ
イン
集計サブドメイン
評価サブドメ
イン
評価コンテキスト
管理コンテキスト
U
U U
D
D D
4-5-1-6. サブドメイン内で登場するドメインモデルを定義する
4. 戦略的DDD
集計サブドメイン
Attendance
勤怠
Employee
従業員
OtherCompaniesEvaluation
他社評価
CultureFit
文化共感度
ImprovementOriented
改善志向
EvaluationService
評価サービス
4-5-1. コンテキストマップの作り方
1. ドメインエキスパートを横に用意する
2. サービスが解決したいドメインを定義
3. ドメインを機能のまとまりに沿ってサブドメインに分割する
4. サブドメインの集合をユビキタス言語の境界で切り分ける
5. 境界づけられたコンテキスト間の上流と下流の関係を書く
6. サブドメイン内で登場するドメインモデルを定義する
4. 戦略的DDD
4-5-3. コンテキストマップまとめ
4. 戦略的DDD
ドメインエキスパートとモデ
ルを通じて会話し、ユビキタ
ス言語を構築すること。
4-6. 問題
4. 戦略的DDD
ドメインエキスパートとは
?
4-6. 問題
4. 戦略的DDD
そのドメインにおける業務
知識を最も持つ人
4-6. 問題
4. 戦略的DDD
ユビキタス言語とは?
4-6. 問題
4. 戦略的DDD
ドメインエキスパートやソ
フトウェア開発者を含めた
チーム全体でつくり上げる
共有言語。
4-6. 問題
4. 戦略的DDD
境界づけられたコンテキス
トとは?
4-6. 問題
4. 戦略的DDD
ユビキタス言語が使われるコンテ
キストを明示したもの。
4-6. 問題
4. 戦略的DDD
コンテキストマップとは?
4-6. 問題
4. 戦略的DDD
ドメインの世界地図
4-.7 まとめ
ドメインエキスパート
そのドメインにおける業務知識を最も持つ人
ユビキタス言語
ドメインエキスパートやソフトウェア開発者を含めたチーム全体でつく
り上げる言語のこと。
境界づけられたコンテキスト
ユビキタス言語が使われるコンテキストを明示したもの。
コンテキストマップ
ドメインの世界地図
4. 戦略的DDD
休憩 5min
5. 戦術的DDD
5. 戦術的DDD
5-1. 概要
5. 戦術的DDD
DDDの思想1 ドメインモデルを中心とした世界
戦略的DDD2 どうやってモデリングするか?
戦術的DDD3 どうやってモデルを実現するか?
5-1. 概要
ドメインモデル中心の世界をアプリケーション上
で実現するための戦術。
パターン・ランゲージや、アーキテクチャの話は
ここから出てくる。
10年たった今でもどうやって実装するか議論が
重ねられている。
5. 戦術的DDD
5-1. 概要
5. 戦術的DDD
ドメインをアプリケーションの都合から隔離すること。
ドメインをモデルを用いて豊かに表現すること。
ドメインを隔離するためのアーキテクチャ:レイヤードアーキテクチャ
ドメインを表現するパターン・ランゲージ:Entity, Servic …
5-2. レイヤードアーキテクチャ
アプリケーションの責務をレイヤーに分割
上位のレイヤーは下位のレイヤーに依存する
下位のレイヤーは上位のレイヤーに依存してはならない
5. 戦術的DDD
5-2. レイヤードアーキテクチャ
5. 戦術的DDD
• アプリケーションの責務をレ
イヤーに分割
• 上位のレイヤーは下位のレイ
ヤーに依存する
• 下位のレイヤーは上位のレイ
ヤーに依存してはならない
5-2. レイヤードアーキテクチャ
+ ユーザーに情報を表示して、ユーザーのコマンドを解釈す
る責務を負う。外部アクタは人間のユーザーではなく、別
のコンピューターシステムのこともある。
+ 例) View, API
5. 戦術的DDD
5-2. レイヤードアーキテクチャ
+ ユースケース(シナリオ)を定義し、ドメインオブジェクト
が問題を解決するように導く。ビジネスルールや知識を含
まず、やるべき作業を調整するだけ。実際の処理は下位の
レイヤーに以上する。
+ 例:Controller, Rake, APIの実装, ApplicationService
5. 戦術的DDD
5-2. レイヤードアーキテクチャ
コントローラーとアプリケーションサービスの責務の違い
# コントローラー
+ HTTPリクエストを受信して然るべきアプリケーションサービスに渡す。
+ アプリケーションサービスから、HTTPレスポンスを返す。
# アプリケーションサービス
+ ユースケースを定義する
+ ドメインオブジェクトが問題を解決するように調整する。
5. 戦術的DDD
5-2. レイヤードアーキテクチャ
5. 戦術的DDD
5-2. レイヤードアーキテクチャ
+ ドメインモデルとは、そのドメインの知識や振舞を抽象化したもの
+ ユビキタス言語で作られるべきである。
+ Entity, Service, ValueObject, Factory, Repository等がいる。
+ ソフトウェアの核心である。
+ UI層にドメインが漏れだすことは許されない。
5. 戦術的DDD
5-2. レイヤードアーキテクチャ
+ 上位のレイヤーを支える技術的機能を提供する。
+ 例:HTTP、MySQL、外部API、ActiveRecord、Rails等
5. 戦術的DDD
5-2. レイヤードアーキテクチャ
5. 戦術的DDD
ドメイン層とインフラ層を分
けることでDBリファクタ(正規
化、キャッシュテーブル、マ
イクロサービス)をしても、ビ
ジネスロジックが変わらなけ
ればドメイン層には影響がな
い。
5-3. 問題
レイヤードアーキテクチャ
の構成は?
5. 戦術的DDD
5. 戦術的DDD
5-3. 問題
レイヤードアーキテクチャ
のルールは?
5. 戦術的DDD
5-3. 問題
アプリケーションの責務をレイヤーに分割
上位のレイヤーは下位のレイヤーに依存する
下位のレイヤーは上位のレイヤーに依存してはならない
5. 戦術的DDD
5-3. 問題
UI層の責務は?
5. 戦術的DDD
5-3. 問題
ユーザーに情報を表示して、ユーザーの
コマンドを解釈する責務を負う。外部ア
クタは人間のユーザーではなく、別のコ
ンピューターシステムのこともある。
5. 戦術的DDD
5-3. 問題
Application層の責務は?
5. 戦術的DDD
5-3. 問題
ユースケース(シナリオ)を定義し、ドメインオブジ
ェクトが問題を解決するように導く。ビジネスルー
ルや知識を含まず、やるべき作業を調整するだけ。
実際の処理は下位のレイヤーに以上する。
5. 戦術的DDD
5-3. 問題
Domain層の責務は?
5. 戦術的DDD
5-3. 問題
ドメインモデルとは、そのドメインの知識
や振舞を抽象化したもの
5. 戦術的DDD
5-3. 問題
Infrastructure層の責務は?
5. 戦術的DDD
5-3. 問題
上位のレイヤーを支える技術的機能を提
供する。
5. 戦術的DDD
5-3. 問題
なぜInfrastructure層とDomain
層を分けるべきか?
5. 戦術的DDD
5-3. 問題
上位のレイヤーを支える技術的機能を提
供する。
5. 戦術的DDD
5-3. 問題
ビジネスロジックと、技術的な関心
事を疎結合にすることでドメインを
中心とした世界を作る。
5. 戦術的DDD
5-3. 問題
休憩 5min
ドメインモデルを豊かに表現する。
5. 戦術的DDD
5-4. パターン・ランゲージ
ドメインモデルを豊かに表現する。
5. 戦術的DDD
5-4. パターン・ランゲージ
5. 戦術的DDD
Entity
オブジェクトのライフサイクルにおいて一意性を保つ必要があるオブジェクト
ValueObject
一意性を持たないオブジェクト
Repository
オブジェクトの永続化のインターフェースを提供する
Aggregate
集約
Factory
複雑なオブジェクトを組み立てる。
Service
オブジェクトの振舞には収まらない操作。
5-4. パターン・ランゲージ
同一性を保持する必要のあるドメインオブジェクト
属性が変わっても、同一性が必要。
属性が同じでも、区別したいオブジェクト
例:User, Product, Company
5. 戦術的DDD
5-4. Entity
5. 戦術的DDD
5-4. Entity
属性が変わっても同一性を保ちたい。
5. 戦術的DDD
Entity
オブジェクトのライフサイクルにおいて一意性を保つ必要があるオブジェクト
ValueObject
一意性を持たないオブジェクト
Repository
ライフサイクルの中長期的な保存の責務をおう
Aggregate
集約
Factory
複雑なオブジェクトを組み立てる。
Service
オブジェクトの振舞には収まらない操作。
5-4. パターン・ランゲージ
Entityとは逆に、例えば「色」や「量」のように、属性だ
けが重要で、アイデンティティを考えるひつようのない
オブジェクト
属性が同じならば、同じと考える。
例:Red, Email, Age, Money
5. 戦術的DDD
5-4. ValueObject
5. 戦術的DDD
5-5. ValueObject
属性が同じならば、同じ
5. 戦術的DDD
Entity
オブジェクトのライフサイクルにおいて一意性を保つ必要があるオブジェクト
ValueObject
一意性を持たないオブジェクト
Repository
オブジェクトの永続化のインターフェースを提供する
Aggregate
集約
Factory
複雑なオブジェクトを組み立てる。
Service
オブジェクトの振舞には収まらない操作。
5-4. パターン・ランゲージ
5. 戦術的DDD
5-6. Repository
いわゆるリポジトリババア
それだけ重要。
ライフサイクルの中長期的な保存の責務を負う。
SQL発行等はInfra層
インターフェースだけ提供
5. 戦術的DDD
5-6. Repository
ただ、冷凍するだけ。
ただ、解答するだけ。
Validationはドメインオブ
ジェクト自身が持つ。
5. 戦術的DDD
5-7. Aggregate
いわゆる集約。
モチベーションは、関連を最小限に抑えること。
-> 関係性の爆発的増加もある程度制限される。
-> 関係性の境界を引くことが大切。
-> 集約
5. 戦術的DDD
5-7. Aggregate
・集約のルートエンティティは、
グローバルな同一性を持つ。
・集約の境界外から境界内部のオ
ブジェクトにアクセスしてはいけ
ない。
・境界内部には集約ルートのみア
クセスできる。
自動車
集約ルート
シート
エンジン
タイヤ
集約ルートを介さず
アクセスしてはいけない。
アクセスできる。
5. 戦術的DDD
5-8. Factory
複雑なオブジェクトをただ組み立てるだけ。
Repositoryは、ただ冷凍と解凍のインターフェースのみ提供。
Factoryはオブジェクトを組み立てるだけ。
Repositoryの内部で呼び出されることもある。
5. 戦術的DDD
5-8. Factory
永続化とは関係ない。
ただ複雑なオブジェクト
を組み立てるだけ。
まあ、あんまり使わない
。
5. 戦術的DDD
5-9. Service
時には単純に「物」に出来上に事もある。
概念的にオブジェクトに属さない操作をサービスと呼ぶ
。
サービスは、関数(状態を持たない。)
例:ScoringService, ShuffleService
5. 戦術的DDD
5-9. Service
Rubyならばインスタンス化しても良いが、基本的には状態を持たない関数
まずは、ドメインオブジェクトの振舞にもたせられないか考えるべし。
5. 戦術的DDD
5-10. 問題
2. DDDとは何か?
2. DDDとは何か?
2. DDDとは?
2-1. 概要
+ ドメイン駆動設計(Domain Driven Design)
+ ドメインモデルを中心に考える設計思想
+ ドメインとは、組織が行う事業やそれを取り巻く世界のこと。
+ ドメインモデルとは、そのドメインの知識や振舞を抽象化したもの。
-> OOPのモデルと理解してOK
2. DDDとは何か?
第二回
実践ドメイン駆動設計
Rails × MicroService
× DDD
2016年5月中
2. DDDとは何か?
ありがとうございました
。
1 of 138

Recommended

3週連続DDDその1 ドメイン駆動設計の基本を理解する by
3週連続DDDその1  ドメイン駆動設計の基本を理解する3週連続DDDその1  ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する増田 亨
32.5K views113 slides
ドメイン駆動設計の捉え方 20150718 by
ドメイン駆動設計の捉え方 20150718ドメイン駆動設計の捉え方 20150718
ドメイン駆動設計の捉え方 20150718Mao Ohnishi
5.5K views53 slides
ドメイン駆動で開発する ラフスケッチから実装まで by
ドメイン駆動で開発する ラフスケッチから実装までドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで増田 亨
15.7K views103 slides
ドメイン駆動設計とは何か 【入門編】 by
ドメイン駆動設計とは何か 【入門編】ドメイン駆動設計とは何か 【入門編】
ドメイン駆動設計とは何か 【入門編】増田 亨
13.3K views40 slides
DDD 20121106 SEA Forum November by
DDD 20121106 SEA Forum NovemberDDD 20121106 SEA Forum November
DDD 20121106 SEA Forum November増田 亨
4.2K views74 slides
ドメイン駆動設計 ( DDD ) をやってみよう by
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう増田 亨
50.1K views45 slides

More Related Content

What's hot

オブジェクト指向プログラミングのためのモデリング入門 by
オブジェクト指向プログラミングのためのモデリング入門オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門増田 亨
37K views47 slides
ドメイン駆動設計という仕事の流儀 by
ドメイン駆動設計という仕事の流儀ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀増田 亨
16.5K views53 slides
ドメイン駆動設計 実践ガイド by
ドメイン駆動設計 実践ガイドドメイン駆動設計 実践ガイド
ドメイン駆動設計 実践ガイド増田 亨
26.8K views65 slides
ドメイン駆動設計サンプルコードの徹底解説 by
ドメイン駆動設計サンプルコードの徹底解説ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説増田 亨
20.3K views41 slides
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring by
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Springドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring増田 亨
29.9K views83 slides
ちいさなオブジェクトでドメインモデルを組み立てる by
ちいさなオブジェクトでドメインモデルを組み立てるちいさなオブジェクトでドメインモデルを組み立てる
ちいさなオブジェクトでドメインモデルを組み立てる増田 亨
15K views26 slides

What's hot(20)

オブジェクト指向プログラミングのためのモデリング入門 by 増田 亨
オブジェクト指向プログラミングのためのモデリング入門オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
増田 亨37K views
ドメイン駆動設計という仕事の流儀 by 増田 亨
ドメイン駆動設計という仕事の流儀ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀
増田 亨16.5K views
ドメイン駆動設計 実践ガイド by 増田 亨
ドメイン駆動設計 実践ガイドドメイン駆動設計 実践ガイド
ドメイン駆動設計 実践ガイド
増田 亨26.8K views
ドメイン駆動設計サンプルコードの徹底解説 by 増田 亨
ドメイン駆動設計サンプルコードの徹底解説ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
増田 亨20.3K views
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring by 増田 亨
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Springドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
増田 亨29.9K views
ちいさなオブジェクトでドメインモデルを組み立てる by 増田 亨
ちいさなオブジェクトでドメインモデルを組み立てるちいさなオブジェクトでドメインモデルを組み立てる
ちいさなオブジェクトでドメインモデルを組み立てる
増田 亨15K views
ドメインロジックの実装方法とドメイン駆動設計 by Tadayoshi Sato
ドメインロジックの実装方法とドメイン駆動設計ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計
Tadayoshi Sato14.8K views
Base DDD(ドメイン駆動設計) 参考文献を巡る旅 by Takuya Kawabe
Base DDD(ドメイン駆動設計) 参考文献を巡る旅Base DDD(ドメイン駆動設計) 参考文献を巡る旅
Base DDD(ドメイン駆動設計) 参考文献を巡る旅
Takuya Kawabe12.9K views
ドメイン駆動設計 の 実践 Part3 DDD by 増田 亨
ドメイン駆動設計 の 実践 Part3 DDDドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD
増田 亨8.8K views
ドメイン駆動設計の学習曲線とブレークポイント by 増田 亨
ドメイン駆動設計の学習曲線とブレークポイントドメイン駆動設計の学習曲線とブレークポイント
ドメイン駆動設計の学習曲線とブレークポイント
増田 亨8.2K views
ドメイン駆動設計という設計スタイル by 増田 亨
ドメイン駆動設計という設計スタイルドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイル
増田 亨17.4K views
ドメイン駆動設計のためのオブジェクト指向入門 by 増田 亨
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨48K views
正しいものを正しく作る塾-設計コース by 増田 亨
正しいものを正しく作る塾-設計コース正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース
増田 亨9.5K views
ドメイン駆動設計 分析しながら設計する by 増田 亨
ドメイン駆動設計 分析しながら設計するドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計する
増田 亨6.7K views
オブジェクト指向プログラミングの現在・過去・未来 by 増田 亨
オブジェクト指向プログラミングの現在・過去・未来オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来
増田 亨6.6K views
ドメイン駆動設計(DDD)の実践Part2 by 増田 亨
ドメイン駆動設計(DDD)の実践Part2ドメイン駆動設計(DDD)の実践Part2
ドメイン駆動設計(DDD)の実践Part2
増田 亨12.9K views
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル by 増田 亨
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイルドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
増田 亨4K views
ドメインオブジェクトの設計ガイドライン by 増田 亨
ドメインオブジェクトの設計ガイドラインドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドライン
増田 亨3.6K views
ドメイン駆動設計 基本を理解する by 増田 亨
ドメイン駆動設計 基本を理解するドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
増田 亨117.5K views
実践的な設計って、なんだろう? by 増田 亨
実践的な設計って、なんだろう?実践的な設計って、なんだろう?
実践的な設計って、なんだろう?
増田 亨36K views

Viewers also liked

ウェルネスAiとグラフDB by
ウェルネスAiとグラフDBウェルネスAiとグラフDB
ウェルネスAiとグラフDBMitsunori Nanno
3.8K views15 slides
11:7@google by
11:7@google11:7@google
11:7@googleMitsunori Nanno
21.9K views41 slides
FiNCとマイクロサービス by
FiNCとマイクロサービスFiNCとマイクロサービス
FiNCとマイクロサービスFumiya Shinozuka
54.1K views53 slides
Finc microservice meetup_shigemura_lt by
Finc microservice meetup_shigemura_ltFinc microservice meetup_shigemura_lt
Finc microservice meetup_shigemura_lt裕紀 重村
399 views45 slides
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~ by
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~A AOKI
25.5K views41 slides
FiNCのWeb API開発事情 by
FiNCのWeb API開発事情FiNCのWeb API開発事情
FiNCのWeb API開発事情Fumiya Shinozuka
1.9K views36 slides

Viewers also liked(20)

ウェルネスAiとグラフDB by Mitsunori Nanno
ウェルネスAiとグラフDBウェルネスAiとグラフDB
ウェルネスAiとグラフDB
Mitsunori Nanno3.8K views
FiNCとマイクロサービス by Fumiya Shinozuka
FiNCとマイクロサービスFiNCとマイクロサービス
FiNCとマイクロサービス
Fumiya Shinozuka54.1K views
Finc microservice meetup_shigemura_lt by 裕紀 重村
Finc microservice meetup_shigemura_ltFinc microservice meetup_shigemura_lt
Finc microservice meetup_shigemura_lt
裕紀 重村399 views
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~ by A AOKI
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
A AOKI25.5K views
ざっくり DDD 入門!! by Yukei Wachi
ざっくり DDD 入門!!ざっくり DDD 入門!!
ざっくり DDD 入門!!
Yukei Wachi10.2K views
Spring ❤️ Kotlin #jjug by Toshiaki Maki
Spring ❤️ Kotlin #jjugSpring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjug
Toshiaki Maki3.8K views
実践に向けたドメイン駆動設計のエッセンス by 増田 亨
実践に向けたドメイン駆動設計のエッセンス実践に向けたドメイン駆動設計のエッセンス
実践に向けたドメイン駆動設計のエッセンス
増田 亨26.1K views
「ドメイン駆動設計」の複雑さに立ち向かう by 増田 亨
「ドメイン駆動設計」の複雑さに立ち向かう「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう
増田 亨32.3K views
DDDをScrumで廻す あるいは ScrumをDDDで廻す by Kiro Harada
DDDをScrumで廻す あるいは ScrumをDDDで廻す DDDをScrumで廻す あるいは ScrumをDDDで廻す
DDDをScrumで廻す あるいは ScrumをDDDで廻す
Kiro Harada16.1K views
Scala/Scrum/DDD 困ったこと50連発ガトリングトーク!! by Yasuyuki Sugitani
Scala/Scrum/DDD 困ったこと50連発ガトリングトーク!!Scala/Scrum/DDD 困ったこと50連発ガトリングトーク!!
Scala/Scrum/DDD 困ったこと50連発ガトリングトーク!!
Yasuyuki Sugitani11.4K views
Androidアプリ開発にクリーンアーキテクチャを取り入れよう by kan-notice
Androidアプリ開発にクリーンアーキテクチャを取り入れようAndroidアプリ開発にクリーンアーキテクチャを取り入れよう
Androidアプリ開発にクリーンアーキテクチャを取り入れよう
kan-notice4.9K views
実例で学ぶ、明日から使えるSpring Boot Tips #jsug by Toshiaki Maki
実例で学ぶ、明日から使えるSpring Boot Tips #jsug実例で学ぶ、明日から使えるSpring Boot Tips #jsug
実例で学ぶ、明日から使えるSpring Boot Tips #jsug
Toshiaki Maki17.1K views
ドメイン駆動設計入門 by Takuya Kitamura
ドメイン駆動設計入門ドメイン駆動設計入門
ドメイン駆動設計入門
Takuya Kitamura44.4K views
C#実装から見るDDD(ドメイン駆動設計) by Takuya Kawabe
C#実装から見るDDD(ドメイン駆動設計)C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)
Takuya Kawabe20.4K views

Similar to FiNC DDD第一回勉強会

2022_sakura-yube_ddd.pdf by
2022_sakura-yube_ddd.pdf2022_sakura-yube_ddd.pdf
2022_sakura-yube_ddd.pdftoshiki kawai
2.6K views44 slides
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜 by
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜Fumiyasu Sumiya
2.1K views100 slides
20151110 ドメイン駆動設計によるサービス開発 by
20151110 ドメイン駆動設計によるサービス開発20151110 ドメイン駆動設計によるサービス開発
20151110 ドメイン駆動設計によるサービス開発Mao Ohnishi
11.3K views141 slides
Symfony2でより良いソフトウェアを作るために by
Symfony2でより良いソフトウェアを作るためにSymfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るためにAtsuhiro Kubo
9.6K views40 slides
ゼロからのプログラミングRails講座 Codeanywhere版 by
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版DIVE INTO CODE Corp.
10.7K views73 slides
中・大規模サイト作成業務フロー by
中・大規模サイト作成業務フロー中・大規模サイト作成業務フロー
中・大規模サイト作成業務フローsenakamura
708 views3 slides

Similar to FiNC DDD第一回勉強会(20)

2022_sakura-yube_ddd.pdf by toshiki kawai
2022_sakura-yube_ddd.pdf2022_sakura-yube_ddd.pdf
2022_sakura-yube_ddd.pdf
toshiki kawai2.6K views
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜 by Fumiyasu Sumiya
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
Fumiyasu Sumiya2.1K views
20151110 ドメイン駆動設計によるサービス開発 by Mao Ohnishi
20151110 ドメイン駆動設計によるサービス開発20151110 ドメイン駆動設計によるサービス開発
20151110 ドメイン駆動設計によるサービス開発
Mao Ohnishi11.3K views
Symfony2でより良いソフトウェアを作るために by Atsuhiro Kubo
Symfony2でより良いソフトウェアを作るためにSymfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るために
Atsuhiro Kubo9.6K views
ゼロからのプログラミングRails講座 Codeanywhere版 by DIVE INTO CODE Corp.
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
DIVE INTO CODE Corp.10.7K views
中・大規模サイト作成業務フロー by senakamura
中・大規模サイト作成業務フロー中・大規模サイト作成業務フロー
中・大規模サイト作成業務フロー
senakamura708 views
Htmlコーディングの効率化 前編 by Yasuhito Yabe
Htmlコーディングの効率化 前編Htmlコーディングの効率化 前編
Htmlコーディングの効率化 前編
Yasuhito Yabe2.1K views
Delphi / C++Builder 業務アプリケーション 刷新実践法: BDEを使った業務アプリを 移行ツールで最新化 by Kaz Aiso
Delphi / C++Builder 業務アプリケーション 刷新実践法: BDEを使った業務アプリを移行ツールで最新化 Delphi / C++Builder 業務アプリケーション 刷新実践法: BDEを使った業務アプリを移行ツールで最新化
Delphi / C++Builder 業務アプリケーション 刷新実践法: BDEを使った業務アプリを 移行ツールで最新化
Kaz Aiso618 views
移行セミナー BDE to FireDAC 20161018 by Kaz Aiso
移行セミナー BDE to  FireDAC 20161018移行セミナー BDE to  FireDAC 20161018
移行セミナー BDE to FireDAC 20161018
Kaz Aiso936 views
シラサギハンズオン 1015 1016 by Yu Ito
シラサギハンズオン 1015 1016シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016
Yu Ito3.2K views
トランザクションもDWHもクラウドで 2015年10月~IBM OnDemandセミナー by Takayuki Nakayama
トランザクションもDWHもクラウドで 2015年10月~IBM OnDemandセミナートランザクションもDWHもクラウドで 2015年10月~IBM OnDemandセミナー
トランザクションもDWHもクラウドで 2015年10月~IBM OnDemandセミナー
Takayuki Nakayama758 views
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座 by DIVE INTO CODE Corp.
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
20150531 phpcon kansai by kumamidori
20150531 phpcon kansai20150531 phpcon kansai
20150531 phpcon kansai
kumamidori7.6K views
ドメイン駆動設計のための Spring の上手な使い方 by 増田 亨
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
増田 亨138K views
webシステムの構築と運用.pdf by KoudaiKumazaki
webシステムの構築と運用.pdfwebシステムの構築と運用.pdf
webシステムの構築と運用.pdf
KoudaiKumazaki83 views
Drupal deployment trial on Engine Yard by 惠 紀野
Drupal deployment trial on Engine YardDrupal deployment trial on Engine Yard
Drupal deployment trial on Engine Yard
惠 紀野4.5K views
Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力 by Akira Inoue
Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力
Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力
Akira Inoue1.6K views
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring... by NTT DATA Technology & Innovation
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
ここが良かったDatadog by tyamane
ここが良かったDatadogここが良かったDatadog
ここが良かったDatadog
tyamane10.3K views
Application Platform としての Windows Server 2019 by Kazuki Takai
Application Platform としての Windows Server 2019Application Platform としての Windows Server 2019
Application Platform としての Windows Server 2019
Kazuki Takai1.2K views

FiNC DDD第一回勉強会