SlideShare a Scribd company logo
DDD入門以前
@yusuke_kokubo
株式会社ファントムタイプ
Powered by Misoca
http://www.misoca.jp/
14年5月21日水曜日
DDDとは
•ドメインを中心にシステムを設計する
•業務の関心事と業務外の関心事を分離
•モデリングと実装の両輪によって知識
と経験を重ねてシステムを成長させる
14年5月21日水曜日
関心事の分離
ドメイン
Web
バッチ
C/S
DB
CSV
YAML
ユーザーインタフェース 永続化
業務内業務外 業務外
ここを中心に設計をするのがDDD
14年5月21日水曜日
ドメインを設計する
•神は言われた「シナリオあれ」
14年5月21日水曜日
シナリオとは
•つくりたいシステムに対してユーザー
がどういう使い方をするのか書く
•そこででてきた言葉から概念を抽出し
てモデル化される
•そして独自の語彙がユビキタス言語へ
とつながってゆく
14年5月21日水曜日
シナリオの例
•MAHO SEAの太川さんはお得意様とし
てKTMR社と顧問契約をしているため
顧問料の請求を毎月末行っている。
•請求額は毎月xx万円と決まっている。
•KTMR社は零細のくせに体裁にこだわ
るため紙の請求書を要求してくるのだ
が...
14年5月21日水曜日
シナリオができたら
•システムの概念を整理する
14年5月21日水曜日
概念を整理する
• ドメインエキスパート(ドメインについて理解
がある人)とユーザーやエンジニアが共通の語
彙で会話しないと意思疎通に齟齬が出る
• (ドメインエキスパートにエンジニアリングに
ついての知識を期待してはダメ)
•→ ユビキタス言語
14年5月21日水曜日
ユビキタス言語とは
•システム内で使われる共通の語彙
•システム非依存
• UIとか永続化とかシステム都合の言葉は出てこない
• ユーザ、ドメインの専⾨門家から、設計者、プログラマまで、分析/設
計モデルからプログラムコードに⾄至るまで、プロジェクトのすべての
関係者、成果物に⾏行行き渡っていて、同じ意味で理理解されるようなユビ
キタス(遍在的)な⾔言語である。  (  https://www.ogis-‐‑‒ri.co.jp/otc/hiroba/
technical/DDDEssence/chap1.html  )
• もちろんヘルプサイトとかユーザーマニュアルでも同様
14年5月21日水曜日
ユビキタス言語例
•請求書
•請求書番号
•品番・品名
•請求元情報
•アカウント情報
•処理済み
•レポート
•事業者
•郵送手続き
•Misocaペイメント
14年5月21日水曜日
概念の整理ができたら
•ドメインをモデル化してみる
•→ ドメインモデル
14年5月21日水曜日
ドメインモデルとは
•システムをある視点から可視化
•ドメインについての理解を促進するた
めのツール
•ドメインについての知識を持っている
人がみれば理解できるもの(万人に分か
るものを目指す必要はない)
14年5月21日水曜日
ある視点とは
請求元 請求先
運営者
請求に掛けるコストを
少なくしたい
支払いをミスなくやり
たい
14年5月21日水曜日
ドメインモデル例1
会員 蔵書
書籍
貸出
返却
1 *
1
0..1
* 1
予約
1
*
0..1
0..1
1*
UMLモデリングの本質第2版に出てくる例を簡略化しています
とある図書館システム
本当は各オブジェクトが属性と
振る舞いを持つけどここでは省略
14年5月21日水曜日
ドメインモデル例2
請求元 請求先
請求
支払
1 *
1
0..1
*
見積
1
* *
1
1
Misocaの場合
納品 1
**
14年5月21日水曜日
ドメインモデルができたら
•実装してみる
•そしたらドメインへの気付きが得られ
たりする
•気付きをモデルへ反映させる
•そしてまた実装する(以下、繰り返し)
14年5月21日水曜日
なんか難しそう…
•最初から完全を求めるのはアンチパタ
ーン
•ドメインモデルはビジネスと一緒に成
長するもの
•なので小さくやってみればよいと思う
14年5月21日水曜日
まとめ
•DDDはドメインを中心に設計する
•特定の図とかフォーマットがあるわけ
ではない(パターンと同じ)
•関心事の分離をして技術面の課題とそ
れ以外の課題を分けて考える
14年5月21日水曜日
おまけ
•RailsとDDD
•DDD以外の設計手法
14年5月21日水曜日
RailsとDDD
• RailsではActiveRecordがUIから永続化まで
串刺になるためドメインモデルを反映し難い
• Rails4になってActiveModelなんてものが出
てきてるので活用したいですねー
• http://satoshi.blogs.com/life/2009/10/rails_mvc.html (yuguiさ
んのコメント必見)
• http://qiita.com/joker1007/items/2a03500017766bdb0234
14年5月21日水曜日
DDD以外の設計手法
•画面(UI)中心(スマートUI)
•データ中心(エンタープライズアーキテクチャ)
•機能中心(トランザクションスクリプト)
• http://www.slideshare.net/masuda220/ss-34813564 (P.87)
14年5月21日水曜日

More Related Content

What's hot

普通のWebエンジニアに学ぶ テーブル設計指南書
普通のWebエンジニアに学ぶ テーブル設計指南書普通のWebエンジニアに学ぶ テーブル設計指南書
普通のWebエンジニアに学ぶ テーブル設計指南書優之 田中
 
ドメイン駆動設計を実践するプログラマーの悩み
ドメイン駆動設計を実践するプログラマーの悩みドメイン駆動設計を実践するプログラマーの悩み
ドメイン駆動設計を実践するプログラマーの悩みhaljik Seiji
 
ドメイン駆動設計 思えば遠くにきたもんだ
ドメイン駆動設計 思えば遠くにきたもんだドメイン駆動設計 思えば遠くにきたもんだ
ドメイン駆動設計 思えば遠くにきたもんだ増田 亨
 
Drupal deployment trial on Engine Yard
Drupal deployment trial on Engine YardDrupal deployment trial on Engine Yard
Drupal deployment trial on Engine Yard惠 紀野
 
WordPress プラグイン Advance Custum Fieldsを学ぶ
WordPress プラグイン Advance Custum Fieldsを学ぶWordPress プラグイン Advance Custum Fieldsを学ぶ
WordPress プラグイン Advance Custum Fieldsを学ぶShigeki Takai
 
Drupal勉強会@さっぽろ/おたる ご紹介
Drupal勉強会@さっぽろ/おたる ご紹介Drupal勉強会@さっぽろ/おたる ご紹介
Drupal勉強会@さっぽろ/おたる ご紹介Kenji Shirane
 
WordCamp Tokyo2016-WooCommerceのすすめ
WordCamp Tokyo2016-WooCommerceのすすめWordCamp Tokyo2016-WooCommerceのすすめ
WordCamp Tokyo2016-WooCommerceのすすめKei Tamura
 
ワイヤーフレームとは?
ワイヤーフレームとは?ワイヤーフレームとは?
ワイヤーフレームとは?Kazuma Sekiguchi
 
WordCamp2015 WordPressで自分の名前でドメイン取って ブログ作るとこまで 面倒みるワークショップ
WordCamp2015 WordPressで自分の名前でドメイン取って ブログ作るとこまで 面倒みるワークショップWordCamp2015 WordPressで自分の名前でドメイン取って ブログ作るとこまで 面倒みるワークショップ
WordCamp2015 WordPressで自分の名前でドメイン取って ブログ作るとこまで 面倒みるワークショップSho Shirasaka
 
WooCommerce 勉強会 - 20161022
WooCommerce 勉強会 - 20161022WooCommerce 勉強会 - 20161022
WooCommerce 勉強会 - 20161022Kei Tamura
 
Adobe experience design April,May 2017 Update
Adobe experience design April,May 2017 UpdateAdobe experience design April,May 2017 Update
Adobe experience design April,May 2017 UpdateKazuma Sekiguchi
 
Foss4G 2015 Drupal Hands-on Session
Foss4G 2015 Drupal Hands-on SessionFoss4G 2015 Drupal Hands-on Session
Foss4G 2015 Drupal Hands-on Session惠 紀野
 

What's hot (12)

普通のWebエンジニアに学ぶ テーブル設計指南書
普通のWebエンジニアに学ぶ テーブル設計指南書普通のWebエンジニアに学ぶ テーブル設計指南書
普通のWebエンジニアに学ぶ テーブル設計指南書
 
ドメイン駆動設計を実践するプログラマーの悩み
ドメイン駆動設計を実践するプログラマーの悩みドメイン駆動設計を実践するプログラマーの悩み
ドメイン駆動設計を実践するプログラマーの悩み
 
ドメイン駆動設計 思えば遠くにきたもんだ
ドメイン駆動設計 思えば遠くにきたもんだドメイン駆動設計 思えば遠くにきたもんだ
ドメイン駆動設計 思えば遠くにきたもんだ
 
Drupal deployment trial on Engine Yard
Drupal deployment trial on Engine YardDrupal deployment trial on Engine Yard
Drupal deployment trial on Engine Yard
 
WordPress プラグイン Advance Custum Fieldsを学ぶ
WordPress プラグイン Advance Custum Fieldsを学ぶWordPress プラグイン Advance Custum Fieldsを学ぶ
WordPress プラグイン Advance Custum Fieldsを学ぶ
 
Drupal勉強会@さっぽろ/おたる ご紹介
Drupal勉強会@さっぽろ/おたる ご紹介Drupal勉強会@さっぽろ/おたる ご紹介
Drupal勉強会@さっぽろ/おたる ご紹介
 
WordCamp Tokyo2016-WooCommerceのすすめ
WordCamp Tokyo2016-WooCommerceのすすめWordCamp Tokyo2016-WooCommerceのすすめ
WordCamp Tokyo2016-WooCommerceのすすめ
 
ワイヤーフレームとは?
ワイヤーフレームとは?ワイヤーフレームとは?
ワイヤーフレームとは?
 
WordCamp2015 WordPressで自分の名前でドメイン取って ブログ作るとこまで 面倒みるワークショップ
WordCamp2015 WordPressで自分の名前でドメイン取って ブログ作るとこまで 面倒みるワークショップWordCamp2015 WordPressで自分の名前でドメイン取って ブログ作るとこまで 面倒みるワークショップ
WordCamp2015 WordPressで自分の名前でドメイン取って ブログ作るとこまで 面倒みるワークショップ
 
WooCommerce 勉強会 - 20161022
WooCommerce 勉強会 - 20161022WooCommerce 勉強会 - 20161022
WooCommerce 勉強会 - 20161022
 
Adobe experience design April,May 2017 Update
Adobe experience design April,May 2017 UpdateAdobe experience design April,May 2017 Update
Adobe experience design April,May 2017 Update
 
Foss4G 2015 Drupal Hands-on Session
Foss4G 2015 Drupal Hands-on SessionFoss4G 2015 Drupal Hands-on Session
Foss4G 2015 Drupal Hands-on Session
 

Viewers also liked

Beautiful Development ブレイクスルー体験記
Beautiful Development ブレイクスルー体験記Beautiful Development ブレイクスルー体験記
Beautiful Development ブレイクスルー体験記kentaro watanabe
 
QCon Tokyo 2013
QCon Tokyo 2013QCon Tokyo 2013
QCon Tokyo 2013増田 亨
 
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)増田 亨
 
ドメインモデルの育て方
ドメインモデルの育て方ドメインモデルの育て方
ドメインモデルの育て方増田 亨
 
20151110 ドメイン駆動設計によるサービス開発
20151110 ドメイン駆動設計によるサービス開発20151110 ドメイン駆動設計によるサービス開発
20151110 ドメイン駆動設計によるサービス開発Mao Ohnishi
 

Viewers also liked (6)

20081120 lt11th ace
20081120 lt11th ace20081120 lt11th ace
20081120 lt11th ace
 
Beautiful Development ブレイクスルー体験記
Beautiful Development ブレイクスルー体験記Beautiful Development ブレイクスルー体験記
Beautiful Development ブレイクスルー体験記
 
QCon Tokyo 2013
QCon Tokyo 2013QCon Tokyo 2013
QCon Tokyo 2013
 
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
 
ドメインモデルの育て方
ドメインモデルの育て方ドメインモデルの育て方
ドメインモデルの育て方
 
20151110 ドメイン駆動設計によるサービス開発
20151110 ドメイン駆動設計によるサービス開発20151110 ドメイン駆動設計によるサービス開発
20151110 ドメイン駆動設計によるサービス開発
 

Similar to DDD入門以前

「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう増田 亨
 
20130202 ドメイン駆動設計読書会at名古屋のお誘い
20130202 ドメイン駆動設計読書会at名古屋のお誘い20130202 ドメイン駆動設計読書会at名古屋のお誘い
20130202 ドメイン駆動設計読書会at名古屋のお誘いRyo RKTM
 
Static Web AppsとBlazor WebAssemblyのすすめ
Static Web AppsとBlazor  WebAssemblyのすすめStatic Web AppsとBlazor  WebAssemblyのすすめ
Static Web AppsとBlazor WebAssemblyのすすめTomomitsuKusaba
 
実践に向けたドメイン駆動設計のエッセンス
実践に向けたドメイン駆動設計のエッセンス実践に向けたドメイン駆動設計のエッセンス
実践に向けたドメイン駆動設計のエッセンスGuildWorks
 
20130202 ドメイン駆動設計読書会at名古屋のお誘い β
20130202 ドメイン駆動設計読書会at名古屋のお誘い β20130202 ドメイン駆動設計読書会at名古屋のお誘い β
20130202 ドメイン駆動設計読書会at名古屋のお誘い βRyo RKTM
 
Movable type-seminar-20120411-ideamans
Movable type-seminar-20120411-ideamansMovable type-seminar-20120411-ideamans
Movable type-seminar-20120411-ideamansKunihiko Miyanaga
 
公開から4年間使ってきたbaserCMSをそろそろ本気でdisってみる(OSC2014福岡)
公開から4年間使ってきたbaserCMSをそろそろ本気でdisってみる(OSC2014福岡)公開から4年間使ってきたbaserCMSをそろそろ本気でdisってみる(OSC2014福岡)
公開から4年間使ってきたbaserCMSをそろそろ本気でdisってみる(OSC2014福岡)Garyuten
 
パネルディスカッション資料(公開版)
パネルディスカッション資料(公開版)パネルディスカッション資料(公開版)
パネルディスカッション資料(公開版)odakeiji
 
自己紹介とC# Devkitについて.pptx
自己紹介とC# Devkitについて.pptx自己紹介とC# Devkitについて.pptx
自己紹介とC# Devkitについて.pptxhkharu0803
 
保守性の高いアプリケーション設計について
保守性の高いアプリケーション設計について保守性の高いアプリケーション設計について
保守性の高いアプリケーション設計についてTomomitsuKusaba
 
[141004] cedec 2014 참관기 & 강연 리뷰 #1
[141004] cedec 2014 참관기 & 강연 리뷰 #1[141004] cedec 2014 참관기 & 강연 리뷰 #1
[141004] cedec 2014 참관기 & 강연 리뷰 #1MinGeun Park
 
パソナプレゼン資料
パソナプレゼン資料パソナプレゼン資料
パソナプレゼン資料Daisuke Imai
 
XPagesDay 2013 Closing Session
XPagesDay 2013 Closing SessionXPagesDay 2013 Closing Session
XPagesDay 2013 Closing SessionAtsushi Sato
 
うちの開発におけるXD利用法
うちの開発におけるXD利用法うちの開発におけるXD利用法
うちの開発におけるXD利用法Kazuma Sekiguchi
 
始めよう! ドメイン駆動設計&マイクロサービス開発 ~C# と Azure Service Fabric で最高の DDD 開発を~
始めよう! ドメイン駆動設計&マイクロサービス開発 ~C# と Azure Service Fabric で最高の DDD 開発を~始めよう! ドメイン駆動設計&マイクロサービス開発 ~C# と Azure Service Fabric で最高の DDD 開発を~
始めよう! ドメイン駆動設計&マイクロサービス開発 ~C# と Azure Service Fabric で最高の DDD 開発を~貴志 上坂
 
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」Serverworks Co.,Ltd.
 
ドメイン駆動設計の捉え方 20150718
ドメイン駆動設計の捉え方 20150718ドメイン駆動設計の捉え方 20150718
ドメイン駆動設計の捉え方 20150718Mao Ohnishi
 
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜Fumiyasu Sumiya
 
20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)Masayuki Kanou
 

Similar to DDD入門以前 (20)

「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう
 
20130202 ドメイン駆動設計読書会at名古屋のお誘い
20130202 ドメイン駆動設計読書会at名古屋のお誘い20130202 ドメイン駆動設計読書会at名古屋のお誘い
20130202 ドメイン駆動設計読書会at名古屋のお誘い
 
Static Web AppsとBlazor WebAssemblyのすすめ
Static Web AppsとBlazor  WebAssemblyのすすめStatic Web AppsとBlazor  WebAssemblyのすすめ
Static Web AppsとBlazor WebAssemblyのすすめ
 
実践に向けたドメイン駆動設計のエッセンス
実践に向けたドメイン駆動設計のエッセンス実践に向けたドメイン駆動設計のエッセンス
実践に向けたドメイン駆動設計のエッセンス
 
20130202 ドメイン駆動設計読書会at名古屋のお誘い β
20130202 ドメイン駆動設計読書会at名古屋のお誘い β20130202 ドメイン駆動設計読書会at名古屋のお誘い β
20130202 ドメイン駆動設計読書会at名古屋のお誘い β
 
Movable type-seminar-20120411-ideamans
Movable type-seminar-20120411-ideamansMovable type-seminar-20120411-ideamans
Movable type-seminar-20120411-ideamans
 
公開から4年間使ってきたbaserCMSをそろそろ本気でdisってみる(OSC2014福岡)
公開から4年間使ってきたbaserCMSをそろそろ本気でdisってみる(OSC2014福岡)公開から4年間使ってきたbaserCMSをそろそろ本気でdisってみる(OSC2014福岡)
公開から4年間使ってきたbaserCMSをそろそろ本気でdisってみる(OSC2014福岡)
 
パネルディスカッション資料(公開版)
パネルディスカッション資料(公開版)パネルディスカッション資料(公開版)
パネルディスカッション資料(公開版)
 
自己紹介とC# Devkitについて.pptx
自己紹介とC# Devkitについて.pptx自己紹介とC# Devkitについて.pptx
自己紹介とC# Devkitについて.pptx
 
保守性の高いアプリケーション設計について
保守性の高いアプリケーション設計について保守性の高いアプリケーション設計について
保守性の高いアプリケーション設計について
 
[141004] cedec 2014 참관기 & 강연 리뷰 #1
[141004] cedec 2014 참관기 & 강연 리뷰 #1[141004] cedec 2014 참관기 & 강연 리뷰 #1
[141004] cedec 2014 참관기 & 강연 리뷰 #1
 
パソナプレゼン資料
パソナプレゼン資料パソナプレゼン資料
パソナプレゼン資料
 
XPagesDay 2013 Closing Session
XPagesDay 2013 Closing SessionXPagesDay 2013 Closing Session
XPagesDay 2013 Closing Session
 
うちの開発におけるXD利用法
うちの開発におけるXD利用法うちの開発におけるXD利用法
うちの開発におけるXD利用法
 
始めよう! ドメイン駆動設計&マイクロサービス開発 ~C# と Azure Service Fabric で最高の DDD 開発を~
始めよう! ドメイン駆動設計&マイクロサービス開発 ~C# と Azure Service Fabric で最高の DDD 開発を~始めよう! ドメイン駆動設計&マイクロサービス開発 ~C# と Azure Service Fabric で最高の DDD 開発を~
始めよう! ドメイン駆動設計&マイクロサービス開発 ~C# と Azure Service Fabric で最高の DDD 開発を~
 
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
 
ドメイン駆動設計の捉え方 20150718
ドメイン駆動設計の捉え方 20150718ドメイン駆動設計の捉え方 20150718
ドメイン駆動設計の捉え方 20150718
 
DMPの仕組み
DMPの仕組みDMPの仕組み
DMPの仕組み
 
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
 
20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)
 

DDD入門以前