SlideShare una empresa de Scribd logo
1 de 35
勉強会
DDのはなし
自己紹介
権藤です。
よろしくお願いします。
TW: gondoh_jp
FB: 権藤 隆行
Copyright Catchup, Inc. All Rights Reserved.
2
DDの話ですが
神社駆動開発とか
居酒屋駆動開発の話じゃ
ありません
Copyright Catchup, Inc. All Rights Reserved.
3
DDDの話します
Copyright Catchup, Inc. All Rights Reserved.
4
DDDについて
 よく知っている / 実践している
 概要はわかる
 名前だけは知っている
 知らない
Copyright Catchup, Inc. All Rights Reserved.
5
ここに向けた話
 よく知っている / 実践している
 概要はわかる
 名前だけは知っている
 知らない
Copyright Catchup, Inc. All Rights Reserved.
6
DDDはなんの略称か
domain
driven
development
→ ☓
Copyright Catchup, Inc. All Rights Reserved.
7
DDDはなんの略称か
domain
driven
design
(ドメイン ドリブン デザイン)
Copyright Catchup, Inc. All Rights Reserved.
8
ドメイン駆動設計
Copyright Catchup, Inc. All Rights Reserved.
9
ドメイン駆動設計
‘ドメイン駆動設計(英: Domain-driven design, DDD)とはソフトウェ
アの設計手法であり、「複雑なドメインの設計は、モデルベースで行う
べき」であり、また「大半のソフトウェアプロジェクトでは、システム
を実装するための特定の技術ではなく、ドメインそのものとドメインの
ロジックに焦点を置くべき」であるとする。この名称は、 Eric Evans が
同名の著作で用いた。‘
※ 引用: wikipedia
Copyright Catchup, Inc. All Rights Reserved.
10
ドメイン駆動設計
うーんよくわからん
Copyright Catchup, Inc. All Rights Reserved.
11
ざっくり言うと
複雑なシステム設計は
要件に応じて適切に分割した領域を
モデルとして組み立てるほうががいいよ!
※ 権藤談
Copyright Catchup, Inc. All Rights Reserved.
12
ざっくり言っても
まだ分かりづらいので
今日は入門のさらに入門的なことが
紹介できればと思います
Copyright Catchup, Inc. All Rights Reserved.
13
DDDの最初の罠
「ドメイン」という
言葉の意味が
分かりづらい
と言うか知らない
Copyright Catchup, Inc. All Rights Reserved.
14
ドメイン全体の中に定義される部
分領域。特に、インターネット上
に定められた部分領域を言う。
ネット上の住所に当たる。
※ 引用: google検索
Copyright Catchup, Inc. All Rights Reserved.
15
ドメイン全体の中に定義される部
分領域。特に、インターネット上
に定められた部分領域を言う。
ネット上の住所に当たる。
※ 引用: google検索
Copyright Catchup, Inc. All Rights Reserved.
16
DDDのドメインはこれ
例えば
少し前のぬーらぼさん記事がありました。
ヌーラボ社内の勤怠管理アプリ「Hello
Goodbye」の紹介https://nulab-
inc.com/ja/blog/nulab/hello-goodbye-typetalk/
Copyright Catchup, Inc. All Rights Reserved.
17
ドメインに置き換えてみる
Copyright Catchup, Inc. All Rights Reserved.
18
ドメインに置き換えてみる
ある程度部分領域を分けていきドメインモデル
として定義し、システムへ落とし込む。
 非干渉デバイス
 Slack
 出勤状況
 出勤ログ
などなど…
Copyright Catchup, Inc. All Rights Reserved.
19
とあるシステム開発の話
クライアント: 勤怠管理楽に便利にしたいんだけどどうにかならんか
システムディレクター: 会社の業務形態と勤務形態おしえてや
クライアント: こんな感じやで
システムディレクター: こんな感じなんやな
→ ドメイン設計
Copyright Catchup, Inc. All Rights Reserved.
20
最初の一歩!! //
Copyright Catchup, Inc. All Rights Reserved.
21
DDD最初の一歩
クライアント:
すごーい
君はDDDが出来るフレンズなんだね!
となる
Copyright Catchup, Inc. All Rights Reserved.
22
システム開発現場においてのお話
優秀なPHPerの人は出来ることですが設計大事
優秀ではない僕はもうちょっとうまいこと設計
出来ないかなということがDDDを勉強する
きっかけになりました。
Copyright Catchup, Inc. All Rights Reserved.
23
良いシステム・ソフトウェアを作る
作るシステム・ソフトウェアが一体何なのかを
十分に知る必要がある
部分領域に分割し
領域の責務をしっかり把握する
Copyright Catchup, Inc. All Rights Reserved.
24
炎上するプロジェクトとは
いつまでに何を作るか 詳細がはっきりわかっ
ていない
つまり
ドメインモデルがはっきりしていない
Copyright Catchup, Inc. All Rights Reserved.
25
ドメインモデルの崩壊は炎上を起
こす(ことがある)
いつまでに何を作るか 詳細がはっきりわかっ
部分領域がわかっていない
→ つらい
分割すべきモデルが1つになっていたりしてる
→ つらい
つまりDB正規化もまるっきり行われていない
→ つらい
Copyright Catchup, Inc. All Rights Reserved.
26
DDDが解決すること
複雑な現実の要求を、責務によって部分領域に
分割し、プログラムコードとしての構築を可能
にします。
炎上を防ぎあなたのウィークエンドの時間と、
ウィークデイの心のゆとりを助けてくれます。
たぶん。
Copyright Catchup, Inc. All Rights Reserved.
27
いままでのお話
時間が限られているため多くは話せませんが今
までの話はDDDの最初の概念です
DDDにはたくさんの概念が複合的に含まれた
ソフトウェア開発の指針です
Copyright Catchup, Inc. All Rights Reserved.
28
ぼくがかんじたDDDのがいねん
Copyright Catchup, Inc. All Rights Reserved.
29
DDDをもっと知る
キーワード
 エンティティ
 バリューオブジェクト
 サービス
 リポジトリ
 ファクトリー
※ 実装時にこの概念がよく利用されるよ
CakePHPとかlaravelとかFW自体が取り入れてるよね!
Copyright Catchup, Inc. All Rights Reserved.
30
実践する上で重要なこと
DDDを正確に確実にやる必要はない
というか時間的に出来ない
TDDとかも同じだと思う
ちゃんとやると逆に破綻しそう
Copyright Catchup, Inc. All Rights Reserved.
31
じゃあどんな所で活用するのか
小さい領域から意識して初めてみる
部分部分において活用する
→ 設計時にドメインモデルを意識する
→ 開発時に設計の際のドメインモデルをコードに落とし込む
→ドメインの変更に追随しリファクタリングを行う
重要な機能には絶対テストを書くように複雑な仕様なときはドメイン
モデルを元に機能定義をしてみる。。とかそういうの
Copyright Catchup, Inc. All Rights Reserved.
32
もっと知る方法
Domain-Driven Design Quickly 日本語版
無料で配布されています。
「DDD 本」でググるといいよ
Copyright Catchup, Inc. All Rights Reserved.
33
ゴンドーも勉強中です
いろいろ教えてください
間違いとかも教えてください
Copyright Catchup, Inc. All Rights Reserved.
34
ありがとうございました
Copyright Catchup, Inc. All Rights Reserved.
35

Más contenido relacionado

Similar a DDのはなし【勉強会資料】

Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechconMobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
DeNA
 
ソーシャルアプリを分析してみた
ソーシャルアプリを分析してみたソーシャルアプリを分析してみた
ソーシャルアプリを分析してみた
Drecom Co., Ltd.
 

Similar a DDのはなし【勉強会資料】 (20)

Adobe & HTML5
Adobe & HTML5Adobe & HTML5
Adobe & HTML5
 
インフラエンジニアの楽しい標準化活動
インフラエンジニアの楽しい標準化活動インフラエンジニアの楽しい標準化活動
インフラエンジニアの楽しい標準化活動
 
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
 
ドメイン駆動設計におけるシナリオテストの活用
ドメイン駆動設計におけるシナリオテストの活用ドメイン駆動設計におけるシナリオテストの活用
ドメイン駆動設計におけるシナリオテストの活用
 
Wordpress
WordpressWordpress
Wordpress
 
KyotoLT_Online_27.pdf
KyotoLT_Online_27.pdfKyotoLT_Online_27.pdf
KyotoLT_Online_27.pdf
 
エンジニアとデザイナーの技術交流について
エンジニアとデザイナーの技術交流についてエンジニアとデザイナーの技術交流について
エンジニアとデザイナーの技術交流について
 
20141216 最適化を進化させるテスト設計とターゲティング ターゲティング編(抜粋)
20141216 最適化を進化させるテスト設計とターゲティング ターゲティング編(抜粋)20141216 最適化を進化させるテスト設計とターゲティング ターゲティング編(抜粋)
20141216 最適化を進化させるテスト設計とターゲティング ターゲティング編(抜粋)
 
ドメイン駆動設計を実践するプログラマーの悩み
ドメイン駆動設計を実践するプログラマーの悩みドメイン駆動設計を実践するプログラマーの悩み
ドメイン駆動設計を実践するプログラマーの悩み
 
DDDモデリングハンズオン - レガシーをぶっつぶせ。現場でDDD!2nd
DDDモデリングハンズオン - レガシーをぶっつぶせ。現場でDDD!2ndDDDモデリングハンズオン - レガシーをぶっつぶせ。現場でDDD!2nd
DDDモデリングハンズオン - レガシーをぶっつぶせ。現場でDDD!2nd
 
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
 
Drupalによる大規模サイトの設計・実装 において何に気をつけるべきか
Drupalによる大規模サイトの設計・実装において何に気をつけるべきかDrupalによる大規模サイトの設計・実装において何に気をつけるべきか
Drupalによる大規模サイトの設計・実装 において何に気をつけるべきか
 
ドメイン駆動設計 思えば遠くにきたもんだ
ドメイン駆動設計 思えば遠くにきたもんだドメイン駆動設計 思えば遠くにきたもんだ
ドメイン駆動設計 思えば遠くにきたもんだ
 
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechconMobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
 
DDDモデリングハンズオン - レガシーをぶっつぶせ
DDDモデリングハンズオン - レガシーをぶっつぶせDDDモデリングハンズオン - レガシーをぶっつぶせ
DDDモデリングハンズオン - レガシーをぶっつぶせ
 
Adobe&HTML 札幌 - HTML5 Caravan
Adobe&HTML 札幌 - HTML5 CaravanAdobe&HTML 札幌 - HTML5 Caravan
Adobe&HTML 札幌 - HTML5 Caravan
 
ソーシャルアプリを分析してみた
ソーシャルアプリを分析してみたソーシャルアプリを分析してみた
ソーシャルアプリを分析してみた
 
[141004] cedec 2014 참관기 & 강연 리뷰 #1
[141004] cedec 2014 참관기 & 강연 리뷰 #1[141004] cedec 2014 참관기 & 강연 리뷰 #1
[141004] cedec 2014 참관기 & 강연 리뷰 #1
 
現場の”今”を知る、これからのビッグデータ分析・活用のすすめ
現場の”今”を知る、これからのビッグデータ分析・活用のすすめ現場の”今”を知る、これからのビッグデータ分析・活用のすすめ
現場の”今”を知る、これからのビッグデータ分析・活用のすすめ
 
PhoneGapとハイブリッド開発
PhoneGapとハイブリッド開発PhoneGapとハイブリッド開発
PhoneGapとハイブリッド開発
 

Más de 株式会社キャッチアップ

Más de 株式会社キャッチアップ (9)

キャッチアップ レクリエーション 2018
キャッチアップ レクリエーション 2018キャッチアップ レクリエーション 2018
キャッチアップ レクリエーション 2018
 
Diff(ファイル比較)ツールの紹介【勉強会資料】
Diff(ファイル比較)ツールの紹介【勉強会資料】Diff(ファイル比較)ツールの紹介【勉強会資料】
Diff(ファイル比較)ツールの紹介【勉強会資料】
 
気になったQiita記事【勉強会資料】
気になったQiita記事【勉強会資料】 気になったQiita記事【勉強会資料】
気になったQiita記事【勉強会資料】
 
Dockerについて【勉強会資料】
Dockerについて【勉強会資料】 Dockerについて【勉強会資料】
Dockerについて【勉強会資料】
 
Let's Encryptについて話す【勉強会資料】
Let's Encryptについて話す【勉強会資料】 Let's Encryptについて話す【勉強会資料】
Let's Encryptについて話す【勉強会資料】
 
データベース定義書とER図【勉強会資料】
データベース定義書とER図【勉強会資料】 データベース定義書とER図【勉強会資料】
データベース定義書とER図【勉強会資料】
 
Javascriptのデザインパターン【勉強会資料】
Javascriptのデザインパターン【勉強会資料】 Javascriptのデザインパターン【勉強会資料】
Javascriptのデザインパターン【勉強会資料】
 
baserCMSのキャッシュの仕組み~もうキャッシュでハマらない!!~【勉強会資料】
baserCMSのキャッシュの仕組み~もうキャッシュでハマらない!!~【勉強会資料】baserCMSのキャッシュの仕組み~もうキャッシュでハマらない!!~【勉強会資料】
baserCMSのキャッシュの仕組み~もうキャッシュでハマらない!!~【勉強会資料】
 
ローカル環境のテスト自動化【勉強会資料】
ローカル環境のテスト自動化【勉強会資料】ローカル環境のテスト自動化【勉強会資料】
ローカル環境のテスト自動化【勉強会資料】
 

Último

Último (11)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

DDのはなし【勉強会資料】