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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
TomPenguin
March 07, 2023
Programming
360
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
540
Git ゼンゼン ムズカシクナイ
tompenguin
0
560
あきらめる Atomic Design
tompenguin
5
760
Other Decks in Programming
See All in Programming
仕様駆動開発へのトライを機に チームに適合する手法を模索し続けている話
freee
PRO
0
460
React本体のコードリーディング
high_g_engineer
1
140
Built Our Own Background Agent at LayerX
layerx
PRO
9
5.1k
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
610
PHP初心者セッション2026 〜生成AIでは見えない裏側を知る:今だからLAMPを通して仕組みを学ぶ〜
kashioka
0
880
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
18k
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
4.1k
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
170
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
490
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
210
仕様駆動開発の消費期限
watany
19
7.6k
そこに3びきプロダクトがいるじゃろう——生成AI時代における“価値が届かない理由”の構造
kosuket
0
450
Featured
See All Featured
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.2k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
460
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
The Pragmatic Product Professional
lauravandoore
37
7.4k
The SEO Collaboration Effect
kristinabergwall1
1
520
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.5k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Agile that works and the tools we love
rasmusluckow
331
22k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
56k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
240
Balancing Empowerment & Direction
lara
6
1.2k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
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を中心として各分野の既存概念がゆるく繋がりマッピングが 容易になったことで、認識の齟齬による手戻り、ビジネス知識と実装の乖離 が減り、コスパの良さを感じた。受託開発だとスピードを優先させてこの辺 は適当にやりがちだが、まあやりようなんじゃないかと思えた。