SlideShare a Scribd company logo
1 of 55
Download to read offline
Implementing
Domain-Driven Design
Part 1: Getting Started with DDD
神原 淳史
@atsukanrock
2015/08/07
今だから学びたい!DDD (Sansan .NET勉強会 #10)
自己紹介
• 神原 淳史 @atsukanrock
https://github.com/atsukanrock
• Sansan株式会社 (2014年11月から)
アバナード株式会社 (2011年7月~2014年10月)
• Software Developer
Domain-Driven Design / .NET / C# / Azure Cloud (´・ω・`)
今日のお題は…
Today’s Contents
DDD: Domain-Driven Design
IDDD: Implementing DDD
From DDD to IDDD
DDD published in 2004 IDDD published in 2013
コンセプトを提示 具体的な設計、Do / Don’tを提示
ベーシックでやや古いアーキテクチャ DDD発刊以降に出てきたアーキテクチャも導入
こいつの紹介
Table of Contents
• なぜDDDを採用するのか (3分)
• いつDDDを採用するのか (2分)
• IDDDの全体像 (5分)
• DDDのモデリング手法 (2分)
• Entity (5分)
• Value Object (資料のみ)
• 少し複雑な例 (Application Service) (5分)
• まとめ (3分)
Table of Contents
• なぜDDDを採用するのか (3分)
• いつDDDを採用するのか (2分)
• IDDDの全体像 (5分)
• DDDのモデリング手法 (2分)
• Entity (5分)
• Value Object (資料のみ)
• 少し複雑な例 (Application Service) (5分)
• まとめ (3分)
なぜDDDを採用するのか
Why do we employ DDD?
DDDならできます
できること 効果
Domain Expertsが持つ業務知識をモデル化 • 個々のDomain Expertに分散していた
ノウハウの共有
• 担当者が変わってもすぐに使える
開発生産性の向上 ※システムが複雑な場合に限る • 加速する事業環境の変化に素早く対応
Domain Expertsですら気付かなかった
新たな知見の発見
∵ (なぜならば)
モデル化することで:
• 「すぐに」「何度でも」シミュレーション可能
• 抽象化により本質が見える
• 単なる業務自動化でなくシステムが
事業を引っ張る
前提
• Domain Expertsはチームの一員となる
• Agile / Scrum
• Domain Expertsとチームは共通の言語 (Ubiquitous
Language) 、共通のモデルを使って会話する
• 「お客には設計の話なんてするな」ではない
とかゆってるけど
• Domain Expert is どこ
• チームの一員になってくれてモデルの話ができるひとって…
• DDDはCore Domain (事業差別化領域) に適用してこそ
最大の効果
• 「どの領域をシステム化するか」の選択権って…
DDDの本質の実践は困難…
それでも自社サービスなら…
• サービスの根幹部分がCore Domainになる
• Domain Expertsには自分たちがなる
• 外部アドバイザーとかは居るかもしれない
Table of Contents
• なぜDDDを採用するのか (3分)
• いつDDDを採用するのか (2分)
• IDDDの全体像 (5分)
• DDDのモデリング手法 (2分)
• Entity (5分)
• Value Object (資料のみ)
• 少し複雑な例 (Application Service) (5分)
• まとめ (3分)
いつDDDを採用するのか
When to employ DDD
向き不向きがあります
複雑単純
長寿
短命
DDD
逃げる勇気
Access VBA
とか?
Transaction Script
/ Table Module
The DDD Scorecard from IDDD
• 一言で言うと:
DDDは複雑で長寿なシステムの
場合に使うべきもの
• CRUD中心のシステムなら
Scaffoldingとかで作れば良い
• あと、ゲームとか証券とか
にはたぶん向かない
向き不向きがあります
複雑単純
長寿
短命
DDD
逃げる勇気
Access VBA
とか?
Transaction Script
/ Table Module
実際のシステム
私見ですが
• システム全体がDDDの使用が適切な特性を持っている
わけではない (おそらくほぼ全てのシステムに言える)
マスタ管理とか、単純なのがあるはず
• DDDを採用するのは一部のCore Domainに絞って、
残りはScaffoldingとかTransaction Scriptで作れば良い
混ぜる勇気
Table of Contents
• なぜDDDを採用するのか (3分)
• いつDDDを採用するのか (2分)
• IDDDの全体像 (5分)
• DDDのモデリング手法 (2分)
• Entity (5分)
• Value Object (資料のみ)
• 少し複雑な例 (Application Service) (5分)
• まとめ (3分)
IDDDの全体像
The whole picture of IDDD
ざっくり言うと
• 概論 (Why / When / How)
• Domainの分割、Bounded Context
• Architecture
• Domainモデリングの手法
• Bounded Contextの統合
• アプリケーション
今回は時間の都合上
• 概論 (Why / When / How)
• Domainの分割、Bounded Context
• Architecture
• Domainモデリングの手法
• Bounded Contextの統合
• アプリケーション
ここと (説明済み)
ここ (の一部) だけ
IDDDは盛り沢山なので…
残りは次回以降に!!
…だけどちょっとだけ
Domainの分割、Bounded Context
• システム化対象領域を
いかに分割するか
• (今流行りの) Microservice
にも通じる考え方
Architecture ※私の大好物
• Layers
• Dependency Inversion Principle
• Hexagonal / Ports and Adapters
• Service-Oriented / REST
• CQRS: Command-Query Responsibility Segregation
• Event Sourcing
and more…
Table of Contents
• なぜDDDを採用するのか (3分)
• いつDDDを採用するのか (2分)
• IDDDの全体像 (5分)
• DDDのモデリング手法 (2分)
• Entity (5分)
• Value Object (資料のみ)
• 少し複雑な例 (Application Service) (5分)
• まとめ (3分)
DDDのモデリング手法
DDD style modeling technique
オブジェクトおよび概念
• Entity
• Value Object
• Service
• Domain Event
• Module
• Aggregate
• Factory
• Repository
New in IDDD
正しく知り、使うことで
• Domainの知識がモデルに集約される
• UI側に散ったりしない
• 不純物が混じらない
• トランザクション
• セキュリティ
• アプリケーション要件
• SOLID Principlesを守れる
• オブジェクト指向の超大事な原則5つ
Table of Contents
• なぜDDDを採用するのか (3分)
• いつDDDを採用するのか (2分)
• IDDDの全体像 (5分)
• DDDのモデリング手法 (2分)
• Entity (5分)
• Value Object (資料のみ)
• 少し複雑な例 (Application Service) (5分)
• まとめ (3分)
Entity
The core of domain modeling
A Poor Entity
getter / setterのみのプロパティが並ぶ
(単なるデータの入れ物)
• SprintIdとStatusを合わせて設定すると
いう知識がクライアントに
• 実際にはValidationとかDB保存とか
もっとやることが多い
A DDD Style Entity
getter / setterのみのプロパティは
消えた
適切なValidation
Domainの知識
Entity in IDDD
• Identity大事
• 何をIdentityとするか
• Identityが満たすべき要件
• Entityの生成
• コンストラクター
• Factory
Entity in IDDD
• Validation
• Value Objectで守る
• プロパティのSetterで守る
• Validatorを切り出す
• DBに行くようなValidationはしない (例: ユニークチェック)
• Change Tracking
Table of Contents
• なぜDDDを採用するのか (3分)
• いつDDDを採用するのか (2分)
• IDDDの全体像 (5分)
• DDDのモデリング手法 (2分)
• Entity (5分)
• Value Object (資料のみ)
• 少し複雑な例 (Application Service) (5分)
• まとめ (3分)
Value Object
To enrich your entities
もしValue Objectがなかったら
EntityにDomainの知識を持たせる。
間違ってはいないが…
プロパティがわらわらあって何かぼやけてる感じ
∵
ひとまとまりのコンセプトが他のコンテキストに
混じってしまっている
A sample Value Object
Domainの知識
Value Objectのある世界
ひとまとまりのコンセプトが
Value Objectにまとまった
Value Object in IDDD
• Identityを持つモノでなく、等価交換可能
• Immutable
• Value Equality (implements IEquatable<T>)
• Side-Effect-Free Behavior
• Persisting Value Objects
• DB等への保存
Value Object in IDDD
• Entity’s Identity as Value Object
• 単なるString等でなくXxxIdクラスを作る
• (↑とはいえ) 何でもかんでもValue Objectにはしない
• 複数の属性もしくは振る舞いを持つものだけ
• それ以外はプリミティブ型で済ます
Table of Contents
• なぜDDDを採用するのか (3分)
• いつDDDを採用するのか (2分)
• IDDDの全体像 (5分)
• DDDのモデリング手法 (2分)
• Entity (5分)
• Value Object (資料のみ)
• 少し複雑な例 (Application Service) (5分)
• まとめ (3分)
少し複雑な例
(Application Service)
A little bit complex example of Application Service
A sample Application Service
DI前提 (changed from DDD)
Query Service ※後述
Application Service
• Domain Modelを使ってアプリケーション
のトランザクションを実行
• 必要なセキュリティを実装
Domain Model in Application Service
Entity
Repository
Value Object
Service
Query Service?
SQLベタ書き
Application Layer of Hexagonal Architecture ※後述
• CQRS (次回以降のお話) のQuery Command (参照のみ)
• データアクセスがRepositoryだけだとアプリケーション向け
のQueryがしんどい (Join とかあって)
EntityでなくData Transfer Objectを返す
Hexagonal Architecture?
• 一言で言うと:
Domain Modelさえ
クリーンに保てば、
後は作りやすいように
作ればおk
• DI (IoC) が前提になる
• 詳しくは次回以降に…
Table of Contents
• なぜDDDを採用するのか (3分)
• いつDDDを採用するのか (2分)
• IDDDの全体像 (5分)
• DDDのモデリング手法 (2分)
• Entity (5分)
• Value Object (資料のみ)
• 少し複雑な例 (Application Service) (5分)
• まとめ (3分)
まとめ
Wrap up
まとめ
• DDD採用の目的: システムの価値を上げる
• そのために、Domainモデリングの手法を学ぶ
• IDDDが具体的な指針を示した
捕捉
• 図、サンプルコードは全てIDDDから拝借した
https://github.com/VaughnVernon/IDDD_Samples_NET
• 実はDomain Modelをクリーンに保つには、それ以外の
ところ (例えばDBアクセス周り) に相当な工夫が必要
そのためDDDは、土台作りのための初期投資がかさんだり、
学習コストが高い問題があり、採用是非の見極めが重要
次回以降何が聞きたい?
1. Domainモデリング手法をもっと詳しく
2. Architecture
3. Domainの分割、Bounded Contextの統合
4. もう聞きたくない

More Related Content

What's hot

私がドメイン駆動設計をやる理由
私がドメイン駆動設計をやる理由私がドメイン駆動設計をやる理由
私がドメイン駆動設計をやる理由増田 亨
 
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装までドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで増田 亨
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話Koichiro Matsuoka
 
GANMA!でDDDをやってみてから1年くらい経った
GANMA!でDDDをやってみてから1年くらい経ったGANMA!でDDDをやってみてから1年くらい経った
GANMA!でDDDをやってみてから1年くらい経ったYasuyuki Sugitani
 
始めよう! ドメイン駆動設計&マイクロサービス開発 ~C# と Azure Service Fabric で最高の DDD 開発を~
始めよう! ドメイン駆動設計&マイクロサービス開発 ~C# と Azure Service Fabric で最高の DDD 開発を~始めよう! ドメイン駆動設計&マイクロサービス開発 ~C# と Azure Service Fabric で最高の DDD 開発を~
始めよう! ドメイン駆動設計&マイクロサービス開発 ~C# と Azure Service Fabric で最高の DDD 開発を~貴志 上坂
 
Base DDD(ドメイン駆動設計) 参考文献を巡る旅
Base DDD(ドメイン駆動設計) 参考文献を巡る旅Base DDD(ドメイン駆動設計) 参考文献を巡る旅
Base DDD(ドメイン駆動設計) 参考文献を巡る旅Takuya Kawabe
 
ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀増田 亨
 
リッチなドメインモデル 名前探し
リッチなドメインモデル 名前探しリッチなドメインモデル 名前探し
リッチなドメインモデル 名前探し増田 亨
 
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計Tadayoshi Sato
 
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解するドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する増田 亨
 
ドメイン駆動設計とは何か 【入門編】
ドメイン駆動設計とは何か 【入門編】ドメイン駆動設計とは何か 【入門編】
ドメイン駆動設計とは何か 【入門編】増田 亨
 
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう増田 亨
 
ちいさなオブジェクトでドメインモデルを組み立てる
ちいさなオブジェクトでドメインモデルを組み立てるちいさなオブジェクトでドメインモデルを組み立てる
ちいさなオブジェクトでドメインモデルを組み立てる増田 亨
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門増田 亨
 
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れるレガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れるsairoutine
 
ドメイン駆動開発 勉強会 ①
ドメイン駆動開発 勉強会 ①ドメイン駆動開発 勉強会 ①
ドメイン駆動開発 勉強会 ①Kakeru Kikuchi
 
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Springドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring増田 亨
 
DDDモデリング勉強会 #6
DDDモデリング勉強会 #6DDDモデリング勉強会 #6
DDDモデリング勉強会 #6株式会社Jurabi
 
DDD 20121106 SEA Forum November
DDD 20121106 SEA Forum NovemberDDD 20121106 SEA Forum November
DDD 20121106 SEA Forum November増田 亨
 
オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来増田 亨
 

What's hot (20)

私がドメイン駆動設計をやる理由
私がドメイン駆動設計をやる理由私がドメイン駆動設計をやる理由
私がドメイン駆動設計をやる理由
 
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装までドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
GANMA!でDDDをやってみてから1年くらい経った
GANMA!でDDDをやってみてから1年くらい経ったGANMA!でDDDをやってみてから1年くらい経った
GANMA!でDDDをやってみてから1年くらい経った
 
始めよう! ドメイン駆動設計&マイクロサービス開発 ~C# と Azure Service Fabric で最高の DDD 開発を~
始めよう! ドメイン駆動設計&マイクロサービス開発 ~C# と Azure Service Fabric で最高の DDD 開発を~始めよう! ドメイン駆動設計&マイクロサービス開発 ~C# と Azure Service Fabric で最高の DDD 開発を~
始めよう! ドメイン駆動設計&マイクロサービス開発 ~C# と Azure Service Fabric で最高の DDD 開発を~
 
Base DDD(ドメイン駆動設計) 参考文献を巡る旅
Base DDD(ドメイン駆動設計) 参考文献を巡る旅Base DDD(ドメイン駆動設計) 参考文献を巡る旅
Base DDD(ドメイン駆動設計) 参考文献を巡る旅
 
ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀
 
リッチなドメインモデル 名前探し
リッチなドメインモデル 名前探しリッチなドメインモデル 名前探し
リッチなドメインモデル 名前探し
 
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計
 
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解するドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
 
ドメイン駆動設計とは何か 【入門編】
ドメイン駆動設計とは何か 【入門編】ドメイン駆動設計とは何か 【入門編】
ドメイン駆動設計とは何か 【入門編】
 
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
 
ちいさなオブジェクトでドメインモデルを組み立てる
ちいさなオブジェクトでドメインモデルを組み立てるちいさなオブジェクトでドメインモデルを組み立てる
ちいさなオブジェクトでドメインモデルを組み立てる
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
 
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れるレガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
 
ドメイン駆動開発 勉強会 ①
ドメイン駆動開発 勉強会 ①ドメイン駆動開発 勉強会 ①
ドメイン駆動開発 勉強会 ①
 
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Springドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
 
DDDモデリング勉強会 #6
DDDモデリング勉強会 #6DDDモデリング勉強会 #6
DDDモデリング勉強会 #6
 
DDD 20121106 SEA Forum November
DDD 20121106 SEA Forum NovemberDDD 20121106 SEA Forum November
DDD 20121106 SEA Forum November
 
オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来
 

Viewers also liked

C++のtemplate特殊化的なことをC#でやった話
C++のtemplate特殊化的なことをC#でやった話C++のtemplate特殊化的なことをC#でやった話
C++のtemplate特殊化的なことをC#でやった話Atsushi Kambara
 
Architecture driven development のすすめ
Architecture driven development のすすめArchitecture driven development のすすめ
Architecture driven development のすすめAtsushi Fukui
 
Latest Status of Identity Federation
Latest Status of Identity FederationLatest Status of Identity Federation
Latest Status of Identity FederationAtsushi Kambara
 
グローバル化はなぜ日時処理問題を引き起こすのか
グローバル化はなぜ日時処理問題を引き起こすのかグローバル化はなぜ日時処理問題を引き起こすのか
グローバル化はなぜ日時処理問題を引き起こすのかAtsushi Kambara
 
結果を出すチームビルディング術
結果を出すチームビルディング術結果を出すチームビルディング術
結果を出すチームビルディング術Mao Ohnishi
 
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
Developers Summit 2014  「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」Developers Summit 2014  「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」Yoshimura Soichiro
 
Using ADO.NET Entity Framework in Domain Driven Design: A Pattern Approach
Using ADO.NET Entity Framework in Domain Driven Design: A Pattern ApproachUsing ADO.NET Entity Framework in Domain Driven Design: A Pattern Approach
Using ADO.NET Entity Framework in Domain Driven Design: A Pattern ApproachHoan Phuc
 
2014-08-30_aspnet-identity
2014-08-30_aspnet-identity2014-08-30_aspnet-identity
2014-08-30_aspnet-identitykumake
 
Entity Framework and Domain Driven Design
Entity Framework and Domain Driven DesignEntity Framework and Domain Driven Design
Entity Framework and Domain Driven DesignJulie Lerman
 
Ms build 触ってみよう
Ms build 触ってみようMs build 触ってみよう
Ms build 触ってみようOda Shinsuke
 
Improving application design with a rich domain model (springone 2007)
Improving application design with a rich domain model (springone 2007)Improving application design with a rich domain model (springone 2007)
Improving application design with a rich domain model (springone 2007)Chris Richardson
 
「書く」ソフトウェア教育から「読む」ソフトウェア教育への転換 (in Japanese)
「書く」ソフトウェア教育から「読む」ソフトウェア教育への転換 (in Japanese)「書く」ソフトウェア教育から「読む」ソフトウェア教育への転換 (in Japanese)
「書く」ソフトウェア教育から「読む」ソフトウェア教育への転換 (in Japanese)Toshihiko Yamakami
 
ちょっとしたオレオレDSLも抽象構文木っぽくしておくと後からの拡張に対応しやすいよねっていうちょっとしたお話
ちょっとしたオレオレDSLも抽象構文木っぽくしておくと後からの拡張に対応しやすいよねっていうちょっとしたお話ちょっとしたオレオレDSLも抽象構文木っぽくしておくと後からの拡張に対応しやすいよねっていうちょっとしたお話
ちょっとしたオレオレDSLも抽象構文木っぽくしておくと後からの拡張に対応しやすいよねっていうちょっとしたお話chocolamint
 
FirefoxOSで学ぶJavaScript作法
FirefoxOSで学ぶJavaScript作法FirefoxOSで学ぶJavaScript作法
FirefoxOSで学ぶJavaScript作法cch-robo
 
Titanium 3.3 / 3.4 と iOS で気をつけたいこと
Titanium 3.3 / 3.4 と iOS で気をつけたいことTitanium 3.3 / 3.4 と iOS で気をつけたいこと
Titanium 3.3 / 3.4 と iOS で気をつけたいことRyutaro Miyashita
 
ZTE OPEN を日本語化(バージョンアップ)してみる
ZTE OPEN を日本語化(バージョンアップ)してみるZTE OPEN を日本語化(バージョンアップ)してみる
ZTE OPEN を日本語化(バージョンアップ)してみるcch-robo
 
Firebase Test Lab 無料枠を使ってみました。
Firebase Test Lab 無料枠を使ってみました。Firebase Test Lab 無料枠を使ってみました。
Firebase Test Lab 無料枠を使ってみました。cch-robo
 

Viewers also liked (20)

C++のtemplate特殊化的なことをC#でやった話
C++のtemplate特殊化的なことをC#でやった話C++のtemplate特殊化的なことをC#でやった話
C++のtemplate特殊化的なことをC#でやった話
 
Architecture driven development のすすめ
Architecture driven development のすすめArchitecture driven development のすすめ
Architecture driven development のすすめ
 
Latest Status of Identity Federation
Latest Status of Identity FederationLatest Status of Identity Federation
Latest Status of Identity Federation
 
グローバル化はなぜ日時処理問題を引き起こすのか
グローバル化はなぜ日時処理問題を引き起こすのかグローバル化はなぜ日時処理問題を引き起こすのか
グローバル化はなぜ日時処理問題を引き起こすのか
 
結果を出すチームビルディング術
結果を出すチームビルディング術結果を出すチームビルディング術
結果を出すチームビルディング術
 
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
Developers Summit 2014  「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」Developers Summit 2014  「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
 
Using ADO.NET Entity Framework in Domain Driven Design: A Pattern Approach
Using ADO.NET Entity Framework in Domain Driven Design: A Pattern ApproachUsing ADO.NET Entity Framework in Domain Driven Design: A Pattern Approach
Using ADO.NET Entity Framework in Domain Driven Design: A Pattern Approach
 
2014-08-30_aspnet-identity
2014-08-30_aspnet-identity2014-08-30_aspnet-identity
2014-08-30_aspnet-identity
 
Entity Framework and Domain Driven Design
Entity Framework and Domain Driven DesignEntity Framework and Domain Driven Design
Entity Framework and Domain Driven Design
 
Ms build 触ってみよう
Ms build 触ってみようMs build 触ってみよう
Ms build 触ってみよう
 
Improving application design with a rich domain model (springone 2007)
Improving application design with a rich domain model (springone 2007)Improving application design with a rich domain model (springone 2007)
Improving application design with a rich domain model (springone 2007)
 
「書く」ソフトウェア教育から「読む」ソフトウェア教育への転換 (in Japanese)
「書く」ソフトウェア教育から「読む」ソフトウェア教育への転換 (in Japanese)「書く」ソフトウェア教育から「読む」ソフトウェア教育への転換 (in Japanese)
「書く」ソフトウェア教育から「読む」ソフトウェア教育への転換 (in Japanese)
 
Domain driven design
Domain driven designDomain driven design
Domain driven design
 
ちょっとしたオレオレDSLも抽象構文木っぽくしておくと後からの拡張に対応しやすいよねっていうちょっとしたお話
ちょっとしたオレオレDSLも抽象構文木っぽくしておくと後からの拡張に対応しやすいよねっていうちょっとしたお話ちょっとしたオレオレDSLも抽象構文木っぽくしておくと後からの拡張に対応しやすいよねっていうちょっとしたお話
ちょっとしたオレオレDSLも抽象構文木っぽくしておくと後からの拡張に対応しやすいよねっていうちょっとしたお話
 
FirefoxOSで学ぶJavaScript作法
FirefoxOSで学ぶJavaScript作法FirefoxOSで学ぶJavaScript作法
FirefoxOSで学ぶJavaScript作法
 
Titanium 3.3 / 3.4 と iOS で気をつけたいこと
Titanium 3.3 / 3.4 と iOS で気をつけたいことTitanium 3.3 / 3.4 と iOS で気をつけたいこと
Titanium 3.3 / 3.4 と iOS で気をつけたいこと
 
ZTE OPEN を日本語化(バージョンアップ)してみる
ZTE OPEN を日本語化(バージョンアップ)してみるZTE OPEN を日本語化(バージョンアップ)してみる
ZTE OPEN を日本語化(バージョンアップ)してみる
 
Firebase Test Lab 無料枠を使ってみました。
Firebase Test Lab 無料枠を使ってみました。Firebase Test Lab 無料枠を使ってみました。
Firebase Test Lab 無料枠を使ってみました。
 
Wearable realm
Wearable realmWearable realm
Wearable realm
 
読むと怖くないDagger2
読むと怖くないDagger2読むと怖くないDagger2
読むと怖くないDagger2
 

Similar to Implementing Domain-Driven Design: Part 1

2022_sakura-yube_ddd.pdf
2022_sakura-yube_ddd.pdf2022_sakura-yube_ddd.pdf
2022_sakura-yube_ddd.pdftoshiki kawai
 
Aws Dev Day2021 「ドメイン駆動設計のマイクロサービスへの活用とデベロッパーに求められるスキル」参考資料(松岡パート)
Aws Dev Day2021 「ドメイン駆動設計のマイクロサービスへの活用とデベロッパーに求められるスキル」参考資料(松岡パート)Aws Dev Day2021 「ドメイン駆動設計のマイクロサービスへの活用とデベロッパーに求められるスキル」参考資料(松岡パート)
Aws Dev Day2021 「ドメイン駆動設計のマイクロサービスへの活用とデベロッパーに求められるスキル」参考資料(松岡パート)Koichiro Matsuoka
 
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】DeNA
 
Unityでオニオンアーキテクチャ
UnityでオニオンアーキテクチャUnityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャtorisoup
 
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】Tomoharu ASAMI
 
ドメイン駆動設計を実践するプログラマーの悩み
ドメイン駆動設計を実践するプログラマーの悩みドメイン駆動設計を実践するプログラマーの悩み
ドメイン駆動設計を実践するプログラマーの悩みhaljik Seiji
 
[db tech showcase Tokyo 2017] E35: 12台でやってみた!DWHソフトウェアアプライアンス Db2 Warehouse ~...
[db tech showcase Tokyo 2017] E35: 12台でやってみた!DWHソフトウェアアプライアンス Db2 Warehouse ~...[db tech showcase Tokyo 2017] E35: 12台でやってみた!DWHソフトウェアアプライアンス Db2 Warehouse ~...
[db tech showcase Tokyo 2017] E35: 12台でやってみた!DWHソフトウェアアプライアンス Db2 Warehouse ~...Insight Technology, Inc.
 
社内 DDD 勉強会 #2
社内 DDD 勉強会 #2社内 DDD 勉強会 #2
社内 DDD 勉強会 #2shingo suzuki
 
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]Koichiro Matsuoka
 
【de:code 2020】 そのロジック、IoT Edge で動きます - Azure IoT Edge 開発 Deep Dive
【de:code 2020】 そのロジック、IoT Edge で動きます - Azure IoT Edge 開発 Deep Dive【de:code 2020】 そのロジック、IoT Edge で動きます - Azure IoT Edge 開発 Deep Dive
【de:code 2020】 そのロジック、IoT Edge で動きます - Azure IoT Edge 開発 Deep Dive日本マイクロソフト株式会社
 
ドメイン駆動設計におけるシナリオテストの活用
ドメイン駆動設計におけるシナリオテストの活用ドメイン駆動設計におけるシナリオテストの活用
ドメイン駆動設計におけるシナリオテストの活用Takehiro Inoue
 
[B15] HiRDBのSQL実行プランはどのように決定しているのか?by Masaaki Narita
[B15] HiRDBのSQL実行プランはどのように決定しているのか?by Masaaki Narita[B15] HiRDBのSQL実行プランはどのように決定しているのか?by Masaaki Narita
[B15] HiRDBのSQL実行プランはどのように決定しているのか?by Masaaki NaritaInsight Technology, Inc.
 
Dev camp2012jpn day2session2
Dev camp2012jpn day2session2Dev camp2012jpn day2session2
Dev camp2012jpn day2session2Daiyu Hatakeyama
 
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】Tomoharu ASAMI
 
既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~じゅん なかざ
 
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)ShogoOkazaki
 

Similar to Implementing Domain-Driven Design: Part 1 (20)

2022_sakura-yube_ddd.pdf
2022_sakura-yube_ddd.pdf2022_sakura-yube_ddd.pdf
2022_sakura-yube_ddd.pdf
 
Aws Dev Day2021 「ドメイン駆動設計のマイクロサービスへの活用とデベロッパーに求められるスキル」参考資料(松岡パート)
Aws Dev Day2021 「ドメイン駆動設計のマイクロサービスへの活用とデベロッパーに求められるスキル」参考資料(松岡パート)Aws Dev Day2021 「ドメイン駆動設計のマイクロサービスへの活用とデベロッパーに求められるスキル」参考資料(松岡パート)
Aws Dev Day2021 「ドメイン駆動設計のマイクロサービスへの活用とデベロッパーに求められるスキル」参考資料(松岡パート)
 
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
 
保守とDDDと私
保守とDDDと私保守とDDDと私
保守とDDDと私
 
Unityでオニオンアーキテクチャ
UnityでオニオンアーキテクチャUnityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャ
 
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
 
ドメイン駆動設計を実践するプログラマーの悩み
ドメイン駆動設計を実践するプログラマーの悩みドメイン駆動設計を実践するプログラマーの悩み
ドメイン駆動設計を実践するプログラマーの悩み
 
[db tech showcase Tokyo 2017] E35: 12台でやってみた!DWHソフトウェアアプライアンス Db2 Warehouse ~...
[db tech showcase Tokyo 2017] E35: 12台でやってみた!DWHソフトウェアアプライアンス Db2 Warehouse ~...[db tech showcase Tokyo 2017] E35: 12台でやってみた!DWHソフトウェアアプライアンス Db2 Warehouse ~...
[db tech showcase Tokyo 2017] E35: 12台でやってみた!DWHソフトウェアアプライアンス Db2 Warehouse ~...
 
Inside Windows Azure Web Sites
Inside Windows Azure Web SitesInside Windows Azure Web Sites
Inside Windows Azure Web Sites
 
社内 DDD 勉強会 #2
社内 DDD 勉強会 #2社内 DDD 勉強会 #2
社内 DDD 勉強会 #2
 
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
 
【de:code 2020】 そのロジック、IoT Edge で動きます - Azure IoT Edge 開発 Deep Dive
【de:code 2020】 そのロジック、IoT Edge で動きます - Azure IoT Edge 開発 Deep Dive【de:code 2020】 そのロジック、IoT Edge で動きます - Azure IoT Edge 開発 Deep Dive
【de:code 2020】 そのロジック、IoT Edge で動きます - Azure IoT Edge 開発 Deep Dive
 
ドメイン駆動設計におけるシナリオテストの活用
ドメイン駆動設計におけるシナリオテストの活用ドメイン駆動設計におけるシナリオテストの活用
ドメイン駆動設計におけるシナリオテストの活用
 
Server Side Dart
Server Side DartServer Side Dart
Server Side Dart
 
[B15] HiRDBのSQL実行プランはどのように決定しているのか?by Masaaki Narita
[B15] HiRDBのSQL実行プランはどのように決定しているのか?by Masaaki Narita[B15] HiRDBのSQL実行プランはどのように決定しているのか?by Masaaki Narita
[B15] HiRDBのSQL実行プランはどのように決定しているのか?by Masaaki Narita
 
Dev camp2012jpn day2session2
Dev camp2012jpn day2session2Dev camp2012jpn day2session2
Dev camp2012jpn day2session2
 
Dev camp2012jpn day2session2
Dev camp2012jpn day2session2Dev camp2012jpn day2session2
Dev camp2012jpn day2session2
 
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
 
既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~
 
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
 

Implementing Domain-Driven Design: Part 1