Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
意訳Domain-Driven Design
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
hiro@miraito
January 10, 2020
Programming
1.6k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
意訳Domain-Driven Design
2020/01/10
DDDCJ DDD Talk MeetUp #3
@hirodragon112
hiro@miraito
January 10, 2020
More Decks by hiro@miraito
See All by hiro@miraito
不確実性と戦いながら見積もりを作成するプロセス/mitsumori-process
hirodragon112
1
290
沖田畷の戦い/Battle-of-Okitanawate
hirodragon112
0
370
ドメインを中心にしたプロダクト開発/domain-driven-product
hirodragon112
1
1.4k
僕がユースケース駆動開発をする理由/my-usecase-driven-development
hirodragon112
2
9.9k
ICONIXプロセスから学ぶオブジェクト指向モデリング/ICONIX for Object-Oriented
hirodragon112
4
4.1k
DDD時代に考えたいICONIXプロセス/ICONIX in DDD
hirodragon112
10
4.8k
概念投影によるオブジェクト指向設計の考え方とその方法/Conceptual projection design
hirodragon112
15
6.2k
カンファレンス主催者から見たCfPとプロポーザル
hirodragon112
0
2.4k
DDD導入に踏み切れない方へ贈る「2層 + CQS アーキテクチャ(Flyweight DDD)」/Flyweight DDD
hirodragon112
26
8.9k
Other Decks in Programming
See All in Programming
AgentCore CLI で進化した AWS での AI エージェントの作り方 : 必要な機能を必要な時に
icoxfog417
PRO
4
390
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
990
MVNOの申込からeSIM開通までをiOSアプリでつなぐ- 本人確認・MNP・通信事業者基盤をまたぐ実装
satotakeshi
0
510
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
25
10k
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
260
AGENTS.md Is Not Enough:Build Skills, Don't Download Them
lx_t
0
130
難しいけど、読めた。- OSSの入口に立った話。
sts11142
0
130
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
5
9k
スマートフォンでモールス信号を送受信する 〜スマートフォンのLEDとカメラで作る光通信の設計と実装〜
atsuki_seo
0
210
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
490
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
420
速習iPhone Duo対応
yuukiw00w
2
880
Featured
See All Featured
Facilitating Awesome Meetings
lara
57
7.2k
Ruling the World: When Life Gets Gamed
codingconduct
0
370
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
The World Runs on Bad Software
bkeepers
PRO
72
12k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
200
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.1k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
700
Skip the Path - Find Your Career Trail
mkilby
1
240
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Optimizing for Happiness
mojombo
378
71k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.2k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Transcript
意訳 Domain-Driven Design A Happy New Year !! 2020/01/10 DDDCJ
DDD Talk MeetUp #3 @hirodragon112
今日は 「DDDってなんだっけ?」 を改めて考えるきっかけになればと思っています
DDD ってご存じですか?
成瀬・允宣 ヴァーン・ヴァーノン エリック・エバンス
Domain-Driven Design Domain : 領域 領域 = (システム化する) 対象領域
Domain-Driven Design Driven : 駆動 駆動 = 動力を与えて動かすこと。
Domain-Driven Design Design : 設計 設計 =ある目的を具体化するためのもくろみ
Domain-Driven Design 直訳を繋げると ドメインを動力として設計する となるでしょうか。
いまいちよくわからない…
左下に船が 海坊主いる? ×印にお宝が よくわからないままだと 同じ地図を見ても視点によって見えるものが変わる
よくわからないと人はこうなる DDDとは… -ユビキタス言語が大切! - 単なるOOP? - エバンスの日記? - 設計ではなくコミュニケーションの話し? -
Repositoryって便利だね
DDD ってご存じですか?
今日はこの辺に切り込んだ話しをしてみたいと思います。
自己紹介 株式会社ミライトデザイン CEO/Founder 株式会社 Jocy CTO 上流から下流までプロダクト作成に必要な事はだいたいやりま す。 インフラ苦手です。 勉強会・カンファレンス
ペチオブ (https://phper-oop.connpass.com/) OOC (https://ooc.dev/) を主催しております。 Twitter : @hirodragon112
意訳Domain-Driven Design 目次 1. 意訳とは? 2. DDDはどこまでいっても設計論 3. 単一モデル 4.
HowとWhy 5. その先の世界
意訳とは? 原文の語句の一つ一つにこだわらず、 全体の意味に重点をおいて訳すこと。
意訳とは? 原文の語句の一つ一つにこだわらず、 全体の意味に重点をおいて訳すこと。 木を見ずに森を見よう
意訳とは? 原文の語句の一つ一つにこだわらず、 全体の意味に重点をおいて訳すこと。 木を見ずに森を見よう つまり訳者が存在する。 この資料で言えばhiroです
意訳とは? 原文の語句の一つ一つにこだわらず、 全体の意味に重点をおいて訳すこと。 木を見ずに森を見よう つまり訳者が存在する。 この資料で言えばhiroです これが地図を見る時の 視点となる
船で上陸で きそう お宝は隣の島 にありそう ×印にお宝が 視点を加えると見えやすくなる お宝のありかを示す地図です
意訳とは? 原文の語句の一つ一つにこだわらず、 全体の意味に重点をおいて訳すこと。 木を見ずに森を見よう つまり訳者が存在する。 この資料で言えばhiroです Domainの表現に集中できるよう に考慮された設計手法
意訳Domain-Driven Design 目次 1. 意訳とは? 2. DDDはどこまでいっても設計論 3. 単一モデル 4.
HowとWhy 5. その先の世界
DDDはどこまでいっても設計論 意訳の前にあえて一つ明言しておきます。
DDDはどこまでいっても設計論 DDDは パターン集でも コミュニケーションの道具でも 日記でもありません もちろん設計者がドメインエキスパートになれというような事で もありません
設計論です
DDDはどこまでいっても設計論 システム開発におけるリソースを 一番コアであり重要であるドメインの表現に極力割きたいのです。 ドメインをより正確に表現し、その他の要素の影響を気にするこ となく集中して設計、実装をしたいのです。
DDDはどこまでいっても設計論 これが意訳の前提を揃える説明でも書いた 「Domainの表現に集中できるように考慮された設計手法」 という事です。
DDDはどこまでいっても設計論 ここからはこの視点を元に細かい語句にこだわらず、 視点に重点を置いて意訳していきたいと思います。
意訳Domain-Driven Design 目次 1. 意訳とは? 2. DDDはどこまでいっても設計論 3. DDDの目的 4.
単一モデルとレイヤー分割 5. HowとWhy 6. その先の世界
DDDの目的 具体的にドメインに集中した設計を行うとは?
DDDの目的 1. ドメインエキスパートとドメイン知識を分析する 2. それをモデル化する 3. 分析モデルをそのまま実装モデルにも使用する 4. ドメインがアプリケーションの影響を受けない様にする 5.
実装時に発見した考慮漏れを1に戻り反映する こ こ に 時 間 を 使 い た い
DDDの目的 DDDとはたったこれだけの事を目指しているに過ぎません。 簡単だね!明日からどんどんやりましょう! 完
DDDの目的 ちゃんと解説します
DDDの目的 まず、そもそも我々の目的は何でしょうか? × DDDを導入する事 〇 DDDを導入する事で解決できる課題の恩恵を得る
DDDの目的 DDDが解決してくれる課題 - ドメインに対する分析 - 実装から分析へのフィードバック - このループの実現 言い換えると ドメイン分析の精度を高め、分析結果をそのままシステムとして
表現する事で最も複雑かつ重要なドメインを正確に表す質の高い ソフトウェアを開発できるようになる
DDDの目的 目指す世界 ドメインエキスパート 開発者 システム モデル 表現 実装 フィードバック 知識共有
発見 整理 フィードバック 使用 整理 発見 フィードバック
意訳Domain-Driven Design 目次 1. 意訳とは? 2. DDDはどこまでいっても設計論 3. 単一モデル 4.
HowとWhy 5. その先の世界
ドメインエキスパート 開発者 システム 分析モデル 実装 モデル フィードバック 分析モデルまで フィードバックし辛い 反映
よくある開発 実装
ドメインエキスパート 開発者 システム 分析モデル 実装 モデル ここの問題を解決する 必要がある よくある開発
ドメインエキスパート 開発者 システム 単一 モデル フィードバック フィードバック フィードバック 単一モデル
単一モデル 分析に使うモデルをそのまま実装に落とし込む
意訳Domain-Driven Design 目次 1. 意訳とは? 2. DDDはどこまでいっても設計論 3. 単一モデルとレイヤー分割 4.
HowとWhy 5. その先の世界
HowとWhy DDD目的 分析と実装を同じモデルを使用する 方法論 - ユビキタス言語で作成されたモデルを使用する - 境界コンテキストを分析する - Entity,
ValueObject, Repository 等の戦術的パターンを使用す る - レイヤードアーキテクチャにてドメインを隔離する
HowとWhy 方法論は目的ではない
ドメインエキスパート 開発者 システム システムの中身がユビキタス言語でできた モデルのまま実装されているので理解できる ユビキタス言語で作成した分析モデルを そのまま実装モデルとしてシステムに実装する ユビキタス言語で作成した分析モデルを そのまま実装モデルとしてシステムに実装する 重要
単一 モデル
HowとWhy だから我々は方法論を知る必要があるのです
意訳Domain-Driven Design 目次 1. 意訳とは? 2. DDDはどこまでいっても設計論 3. 単一モデルとレイヤー分割 4.
HowとWhy 5. その先の世界
その先の世界 単一モデルを実現するには方法論を知る以外にも重要な事がある - 単一モデルの適応範囲は? - ドメインとアプリケーションの境界を知る - UIとドメインの境界を知る その辺はまた別の機会にお話しできればと思います。
その先の世界 ご清聴ありがとうございました