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
TomPenguin
March 07, 2023
Programming
0
330
Domain Modelを共有していい感じにプロダクトを作る
PM、デザイナ、フロントエンド、バックエンドがいい感じに協業するための考え方の提案。
TomPenguin
March 07, 2023
Tweet
Share
More Decks by TomPenguin
See All by TomPenguin
【JavaScript】Strategy Patternっぽいのをちょい使いしてif分を駆逐する
tompenguin
0
210
【JavaScript】クロージャを理解して正しく使う
tompenguin
0
520
Git ゼンゼン ムズカシクナイ
tompenguin
0
550
あきらめる Atomic Design
tompenguin
5
740
Other Decks in Programming
See All in Programming
Updates on MLS on Ruby (and maybe more)
sylph01
1
180
Go言語での実装を通して学ぶLLMファインチューニングの仕組み / fukuokago22-llm-peft
monochromegane
0
120
🔨 小さなビルドシステムを作る
momeemt
3
670
rage against annotate_predecessor
junk0612
0
160
Android 16 × Jetpack Composeで縦書きテキストエディタを作ろう / Vertical Text Editor with Compose on Android 16
cc4966
0
180
Namespace and Its Future
tagomoris
6
700
250830 IaCの選定~AWS SAMのLambdaをECSに乗り換えたときの備忘録~
east_takumi
0
390
AWS発のAIエディタKiroを使ってみた
iriikeita
1
180
[FEConf 2025] 모노레포 절망편, 14개 레포로 부활하기까지 걸린 1년
mmmaxkim
0
1.6k
AI時代のUIはどこへ行く?
yusukebe
17
8.8k
Deep Dive into Kotlin Flow
jmatsu
1
310
機能追加とリーダー業務の類似性
rinchoku
2
1.2k
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
BBQ
matthewcrist
89
9.8k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
51
5.6k
How STYLIGHT went responsive
nonsquared
100
5.8k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.8k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
111
20k
How to train your dragon (web standard)
notwaldorf
96
6.2k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.7k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Music & Morning Musume
bryan
46
6.8k
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を中心として各分野の既存概念がゆるく繋がりマッピングが 容易になったことで、認識の齟齬による手戻り、ビジネス知識と実装の乖離 が減り、コスパの良さを感じた。受託開発だとスピードを優先させてこの辺 は適当にやりがちだが、まあやりようなんじゃないかと思えた。