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
730
Other Decks in Programming
See All in Programming
Flutter로 Gemini와 MCP를 활용한 Agentic App 만들기 - 박제창 2025 I/O Extended Seoul
itsmedreamwalker
0
130
AIのメモリー
watany
13
1.4k
ZeroETLで始めるDynamoDBとS3の連携
afooooil
0
160
AIコーディングエージェント全社導入とセキュリティ対策
hikaruegashira
16
9.6k
管你要 trace 什麼、bpftrace 用下去就對了 — COSCUP 2025
shunghsiyu
0
380
新しいモバイルアプリ勉強会(仮)について
uetyo
1
250
Understanding Kotlin Multiplatform
l2hyunwoo
0
250
DataformでPythonする / dataform-de-python
snhryt
0
160
PHPカンファレンス関西2025 基調講演
sugimotokei
6
1.1k
CLI ツールを Go ライブラリ として再実装する理由 / Why reimplement a CLI tool as a Go library
ktr_0731
3
1k
Android 15以上でPDFのテキスト検索を爆速開発!
tonionagauzzi
0
200
MCP連携で加速するAI駆動開発/mcp integration accelerates ai-driven-development
bpstudy
0
290
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Testing 201, or: Great Expectations
jmmastey
45
7.6k
Designing Experiences People Love
moore
142
24k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Six Lessons from altMBA
skipperchong
28
3.9k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.4k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
880
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
A better future with KSS
kneath
239
17k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
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を中心として各分野の既存概念がゆるく繋がりマッピングが 容易になったことで、認識の齟齬による手戻り、ビジネス知識と実装の乖離 が減り、コスパの良さを感じた。受託開発だとスピードを優先させてこの辺 は適当にやりがちだが、まあやりようなんじゃないかと思えた。