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
Domain Modelを共有していい感じにプロダクトを作る
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
TomPenguin
March 07, 2023
Programming
340
0
Share
Domain Modelを共有していい感じにプロダクトを作る
PM、デザイナ、フロントエンド、バックエンドがいい感じに協業するための考え方の提案。
TomPenguin
March 07, 2023
More Decks by TomPenguin
See All by TomPenguin
【JavaScript】Strategy Patternっぽいのをちょい使いしてif分を駆逐する
tompenguin
0
220
【JavaScript】クロージャを理解して正しく使う
tompenguin
0
530
Git ゼンゼン ムズカシクナイ
tompenguin
0
560
あきらめる Atomic Design
tompenguin
5
760
Other Decks in Programming
See All in Programming
Smarter Angular mit Transformers.js & Prompt API
christianliebel
PRO
1
120
20260320登壇資料
pharct
0
170
CursorとClaudeCodeとCodexとOpenCodeを実際に比較してみた
terisuke
0
180
Mastering Event Sourcing: Your Parents Holidayed in Yugoslavia
super_marek
0
150
見せてもらおうか、 OpenSearchの性能とやらを!
shunta27
1
180
ローカルで稼働するAI エージェントを超えて / beyond-local-ai-agents
gawa
2
260
レガシーPHP転生 〜父がドメインエキスパートだったのでDDD+Claude Codeでチート開発します〜
panda_program
0
610
メッセージングを利用して時間的結合を分離しよう #phperkaigi
kajitack
3
570
Strategy for Finding a Problem for OSS: With Real Examples
kibitan
0
140
Radical Imagining - LIFT 2025-2027 Policy Agenda
lift1998
0
250
ハンズオンで学ぶクラウドネイティブ
tatsukiminami
0
110
生成 AI 時代のスナップショットテストってやつを見せてあげますよ(α版)
ojun9
0
340
Featured
See All Featured
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
350
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.7k
So, you think you're a good person
axbom
PRO
2
2k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
110
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.4k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
790
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.1k
How to Talk to Developers About Accessibility
jct
2
170
Darren the Foodie - Storyboard
khoart
PRO
3
3.2k
We Are The Robots
honzajavorek
0
210
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
330
Transcript
Domain Modelを共有して いい感じにプロダクトを作る 受託開発 TomPenguin karabiner. inc 2023/03/07 最近暖かくて気持ちいいね カラビナテクノロジーという会社で、わがまま言ってフロントエンド
やったりバックエンドやったり新規事業やったりなんか色々やってる 人です。仙台で働いてるよ。
目次 2 1. はじめに 2. コンセプト 3. しなかったこと 4. Domain
Modelとは 5. ワイヤーフレーム/デザイン 6. デザインシステム 7. フロントエンド 8. GraphQL Schema 9. Domain Modelの進化 10. 良かったこと 11. イマイチなとこ 12. まとめ
はじめに 3 • 受託開発(開発期間は3ヶ月くらい) • 納品後も継続的に機能開発をしていく予定の案件 • 参照が中心でそこまで複雑な業務ロジックがない • メンバーはPM、デザイナ(1名)、フロント(1名)、バック(2名)
業務でやってみてうまくいったかも?という話です。 つまりガバガバなので鵜呑みにせず参考程度に聞いてもらえると🙌
コンセプト 4 Domain Model を中心として各分野の既存概念とそれっぽくマッピングするこ とで、プロジェクトメンバー間の認識の齟齬、ドメイン知識と実装の乖離を減 らそうという試み。 Domain Model Atomic
Design OOUI GraphQL Schema Application Design Design System & Frontend’s Components Backend & Frontend Types かっこよく見えるけど あくまでイメージね!
しなかったこと 5 DDDやユースケース駆動設計を参考にしつつ、案件の特性を鑑みて必要最低 限のものだけを取り入れた。 • ユビキタス言語辞典みたいなのはつくらない • ユースケースがどうとかリポジトリがどうとかあまり気にしない • マッピングさせることにこだわりすぎない
Domain Modelとは 6 DDDのアレですが、シンプルにシステムで扱う必要最小限の情報を、ビジネス 上で意味のある単位にまとめて名前をつけたものをここではDomain Modelと 読んでる。あってるかわからんごめん。 応募者 Applicant ・名前
・メールアドレス 採用選考 Screening ・選考ステータス ・応募日 面接 Interview ・面接次数 ・日時 こんな雰囲気のゆるいやつを FigJamに書いて共有してました
ワイヤーフレーム/デザイン 7 Domain Model を OOUI のオブジェクトにほぼそのままマッピング。 Domain Model Atomic
Design OOUI GraphQL Schema Application Design Design System & Frontend’s Components Backend & Frontend Types 参考:オブジェクト指向UIデザイン──使いやすいソフトウェアの原理 (WEB+DB PRESS plusシリーズ) https://amzn.asia/d/44G2TbJ
デザインシステム 8 リリース後も継続的な機能開発が想定されていたため、Figmaでatoms, moleculesレベルのみの軽量なデザインシステムを構築した。 Domain Model Atomic Design OOUI GraphQL
Schema Application Design Design System & Frontend’s Components Backend & Frontend Types 参考:Atomic Design https://bradfrost.com/blog/post/atomic-web-design/
フロントエンド 9 Domain Model を Atomic Design の organisms レベルで対応させたコンポー
ネントを実装する。 Domain Model Atomic Design OOUI GraphQL Schema Application Design Design System & Frontend’s Components Backend & Frontend Types
GraphQL Schema と Type 10 Domain Model と GraphQL の
Schema をほぼそのまま対応させる。 TS の型を Schema から生成し、フロントエンドとバックエンドの双方で利用。 Domain Model Atomic Design OOUI GraphQL Schema Application Design Design System & Frontend’s Components Backend & Frontend Types
GraphQL Schema と コンポーネント 11 GraphQLのSchemaはフロントのorganismsレベルのコンポーネントとほぼ対 応するのでマッピングが容易。 Domain Model Atomic
Design OOUI GraphQL Schema Application Design Design System & Frontend’s Components Backend & Frontend Types
Domain Modelの進化 12 実際にデザインしてみて、実装してみて見つけられた新しい知識は、Domain Modelをメンテして、デザインや型や実装に反映させていった。 Domain Model Atomic Design OOUI
GraphQL Schema Application Design Design System & Frontend’s Components Backend & Frontend Types
良かったこと 13 • メンバー間で認識の齟齬がとにかく少なかった • ↑によりコスパがよかった • ドメイン知識と実装の乖離が少ないのでクライアントとの調整も比較的 スムーズ •
(特定の条件が重なる必要はあるが)受託案件でもある程度いい感じに 進められる道筋が見えた
イマイチなとこ 14 • デザイナ、フロントエンド、バックエンド、それぞれがそれぞれの分野 である程度スキルを持っている必要がある • PMの理解が必要なところ(今回はその辺恵まれていた)
まとめ 15 Domain Modelを中心として各分野の既存概念がゆるく繋がりマッピングが 容易になったことで、認識の齟齬による手戻り、ビジネス知識と実装の乖離 が減り、コスパの良さを感じた。受託開発だとスピードを優先させてこの辺 は適当にやりがちだが、まあやりようなんじゃないかと思えた。