Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ユビキタス言語の強力さをもっと知ってほしい
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
plavelo
October 08, 2018
Programming
1.5k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ユビキタス言語の強力さをもっと知ってほしい
plavelo
October 08, 2018
More Decks by plavelo
See All by plavelo
コード解析でFlutterプロジェクトを見える化する
plavelo
1
280
AndroidStudio2.0でアプリ爆速開発 / improving the development speed with AndrodStudio 2
plavelo
0
960
Other Decks in Programming
See All in Programming
柔軟なPDFレイアウトエディタを支える型システム設計 — Discriminated UnionとConditional Typeの実践
minako__ph
4
1.4k
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
460
New "Type" system on PicoRuby
pocke
1
470
AI時代の仕事技芸論 — ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ
kuranuki
1
610
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
500
開発体験を左右するライブラリの API 設計 - GraphQL スキーマ構築ライブラリから考える #tskaigi
izumin5210
2
1.6k
LLM Plugin for Node-REDの利用方法と開発について
404background
0
160
ふつうのFeature Flag実践入門
irof
7
3.6k
Oxcを導入して開発体験が向上した話
yug1224
4
290
Lessons from Spec-Driven Development
simas
PRO
0
140
タクシーアプリ『GO』の バックエンド開発のおける AI利活用と若者のすべて
pyama86
3
1.9k
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
540
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
PRO
55
12k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
The Curious Case for Waylosing
cassininazir
1
370
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2k
Paper Plane (Part 1)
katiecoart
PRO
0
8.5k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
160
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
190
Transcript
DDDのユビキタス言語の 強力さをもっと知ってほしい @plavelo
ドメイン駆動設計、知ってますか? • アプリ系の勉強会でも最近ちらほら見かける印象 • ユビキタス言語について掘り下げている発表をあまり見かけない ドメイン駆動設計で大事なことは • ソフトウェアで解決する対象の問題領域(ドメイン)の知識を、 知識を表現したモデル(ドメインモデル)の実装と結びつける •
ドメインを理解している人(ドメインエキスパート)と開発者が協力し、 ユビキタス言語を使ってドメインモデルの探求を繰り返す • チーム全員が普段の会話でユビキタス言語を使って話す
ユビキタス言語の作り方の例 • 要件を箇条書きにして、簡潔なものにリファクタリングしていく コツ: 普段から話す言葉になるので、 テンポが良くて簡潔な言葉を探そう 最初から完璧な言語・モデルを作ろうとしない エンジニアしか分からない言葉は避けよう できるだけみんなで作ろう
ユビキタス言語は強力な設計ツール • ユビキタス言語を使うとこんないいことがあります • 時間がないのでデメリットや、 そもそもDDDが向いていないパターンなどについては話しません
普段の会話がそのまま設計になる • ユビキタス言語を使ったドメインモデルと、その実装は結びついている • ユビキタス言語でチームで話したことが、そのまま設計となる • 普段の会議の時間が、そのまま設計する時間になるので 設計や設計のレビューも普段の会議中にできて一石二鳥
改善のフィードバックループが生まれる • ユビキタス言語を使ったドメインモデルと、その実装は結びついている • 普段の会話で得た気づき・改善は、ダイレクトに実装の改善となる • 実装で得た気づき・改善は、普段の会話(ユビキタス言語)の改善になる • 話せば話すほどダイレクトにコードが改善されていく 改善の
フィードバックループ
Slack上で日本語で設計の相談ができる • チャット上で日本語で設計の相談ができる • 図や実際のコードを見せなくても、日本語の会話だけで 設計に関するコミュニケーションができてしまう • コードを見せるより気楽なので設計に関するコミュニケーションが増え 設計の品質が向上する •
エンジニア以外がいるチャット部屋とかでも話せるため メンバー全員の理解が進んでいく
コードレビューの質が上がる • 普段の会話で設計についてのコミュニケーションが増えるため コードレビューする頃には、レビュワーはロジックのコードについて 大体の流れや構造を把握している状態になっている • コードレビューでコードの本質的な部分をチェックできるようになり コードレビュー時に、バグや間違いが見つかりやすくなる
コードの引き継ぎがしやすくなる • 普段の会話で、開発者は設計について大体の認識を 持った状態になっている • 新しくチームに入った人も、ユビキタス言語を理解すれば 大体の構造はかんたんに理解できる • コードの引き継ぎがしやすくなる •
他人の書いたコードを修正しやすくなる
まとめ • ユビキタス言語は強力な設計ツール! • もっとみんなで掘り下げたい • 書籍「エリック・エヴァンスのドメイン駆動設計」には、 ここまで書いたことを実現するための設計のパターンが たくさん載ってるので興味があれば読んでみてね •
↑の本は鈍器のように厚いのでちょっと、という人は InfoQで配布されているDomain Driven Design Quicklyもおすすめ
ドメイン駆動設計のおすすめ文献 • エリック・エヴァンスのドメイン駆動設計 ◦ DDDのすべての基本がここにある、と思うけど これだけ読んでも実際何をしたらいいのかわからないと思うので、別の本も併せて読むのがおすすめ ◦ https://www.amazon.co.jp/dp/4798121967 • Domain-Driven
Design(ドメイン駆動設計) Quickly 日本語版 ◦ 80ページぐらいで読みやすい。チームメンバーにおすすめするならまずこの本かもしれない ◦ https://www.infoq.com/jp/minibooks/domain-driven-design-quickly • 実践ドメイン駆動設計 ◦ 実際にどう実装していくかが解説されている。 Eric本に無かったドメインイベントについての説明もあり ◦ https://www.amazon.co.jp/dp/479813161X • DDD難民に捧げるDomain-Driven Designのエッセンス ◦ Eric本の日本語版出版以前に書かれた記事だがうまくまとまっている、おすすめ ◦ https://www.ogis-ri.co.jp/otc/hiroba/technical/DDDEssence/chap1.html