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
スタートアップで React Native を採用してよかったこと
Search
dinii_otomo
October 08, 2022
Technology
2
700
スタートアップで React Native を採用してよかったこと
2022/10/08 開催の React Native Matsuri 2022 での登壇資料になります。
dinii_otomo
October 08, 2022
Tweet
Share
More Decks by dinii_otomo
See All by dinii_otomo
10個以上のプロダクトを3人のメンバーでローンチしたdiniiの開発の裏側
dinii_otomo
0
4.3k
diniiでのHasura活用例
dinii_otomo
1
690
Other Decks in Technology
See All in Technology
[TechNight #90-1] 本当に使える?ZDMの新機能を実践検証してみた
oracle4engineer
PRO
3
140
Observability в PHP без боли. Олег Мифле, тимлид Altenar
lamodatech
0
260
TechLION vol.41~MySQLユーザ会のほうから来ました / techlion41_mysql
sakaik
0
140
(非公式) AWS Summit Japan と 海浜幕張 の歩き方 2025年版
coosuke
PRO
1
320
OTFSG勉強会 / Introduction to the History of Delta Lake + Iceberg
databricksjapan
0
120
Windows 11 で AWS Documentation MCP Server 接続実践/practical-aws-documentation-mcp-server-connection-on-windows-11
emiki
0
640
CI/CDとタスク共有で加速するVibe Coding
tnbe21
0
230
OAuth/OpenID Connectで実現するMCPのセキュアなアクセス管理
kuralab
5
780
AWS Summit Japan 2025 Community Stage - App workflow automation by AWS Step Functions
matsuihidetoshi
1
140
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
53
31k
新卒3年目の後悔〜機械学習モデルジョブの運用を頑張った話〜
kameitomohiro
0
370
25分で解説する「最小権限の原則」を実現するための AWS「ポリシー」大全 / 20250625-aws-summit-aws-policy
opelab
6
670
Featured
See All Featured
Embracing the Ebb and Flow
colly
86
4.7k
How STYLIGHT went responsive
nonsquared
100
5.6k
How GitHub (no longer) Works
holman
314
140k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.5k
BBQ
matthewcrist
89
9.7k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
228
22k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
Navigating Team Friction
lara
187
15k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
480
Speed Design
sergeychernyshev
31
1k
Scaling GitHub
holman
459
140k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Transcript
ελʔτΞοϓͰ React Native Λ ࠾༻ͯ͠Α͔ͬͨ͜ͱ גࣜձࣾ dinii CTO େ༑Ұथ React
Native Matsuri 202 2 2022/10/08
ࠓ͢͜ͱ 2 • ελʔτΞοϓͷ্ཱ͔ͪ͛ΒɺReact Native Λຊ࠾༻͢Δ·ͰͷܦҢ • ͦͷޙͲ͏ͳ͔ͬͨʁ
ελʔτΞοϓͷ্ཱͪ͛ͱٕज़ 3 ϓϩμΫτେମ͏·͍͔͘ͳ͍ Կࣦഊ͢Δɺվળ͢Δɺͦͷࢼߦճ͕উෛ → ͱʹ͔͙͘͢ʹಈ͘ͷΛ࡞Γɺͱʹ͔͘ϦϦʔε͠ɺֶͼΛಘΔճ͕ॏཁ https://blog.winnonapartners.com/what-is-a-pivot-top-10-best-tech-startup-pivots-case-study/
ελʔτΞοϓͷ্ཱͪ͛ͱٕज़ 4 • dinii Ͱɺ͕ࣗ͜Ε·Ͱॻ͍͖ͯͨίʔυɾ࡞͖ͬͯͨϓϩμΫτͷ΄ͲΜͲ͕͏ͳ͍ɻ ◦ ࠓ·Ͱ 4,5ճେ͖͘ϐϘοτ͍ͯ͠Δ • ʮͱʹ͔͘ࠓϦϦʔεͤͶʂʂʯͱ͍͏Ձ؍Ͱɺͦͷ࣌ͷϝϯόʔ͕࠷େύϑΥʔϚϯεΛग़ͤ
Δٕज़બఆͱ࣮Λ͍ͯͨ͠(ϦϦʔευϦϒϯͳٕज़બఆ)ɻ ↓ ࣗաڈͷϝϯόʔ͕ܞΘͬͨʑͷϓϩμΫτͨͪ
dinii ͷٕज़ελοΫ 5 ʮଟͷϓϩμΫτʯΛʮগਓʯͰʮߴʯ͔ͭʮ҆ఆʯʹ։ൃ͢Δઓུͱͯ͠ͷ TypeScript, React, GraphQL (Hasura) ͷҰۃूத Ϩδ
ΩΦεΫ ΩονϯσΟεϓϨΠ μογϡϘʔυ ϋϯσΟ ϞόΠϧΦʔμʔ ϓϦϯλ࿈ܞ ࣗಈમػ࿈ܞ ϓϦϯλ࿈ܞ LINE Mini App όοΫΤϯυ → ࠷ॳશવҧ͍·ͨ͠
dinii ͷٕज़ελοΫ(ݕূظ) 6 • ݩʑɺϑϩϯτΤϯυͱόοΫΤϯυ TypeScript x Node.js Ͱ͍ͬͯͨ (CTO
͕ͦΕ͔͠ॻ͚ͳ͔ͬͨ / ॻ͘༨༟͕ͳ͔͔ͬͨΒ 😂 ) • ϞόΠϧɺجຊతʹωΠςΟϒ(Swift/Kotlin)࣮͍ͯͨ͠ ◦ ͦͦ web ͳ͘ϞόΠϧओମͷαʔϏεͷ࣌ظ͋ͬͨͷͰ • େ͖ͳϓϩμΫτɾαʔϏεͰ͍͏ͱ4,5ճϐϘοτ͍ͯ͠Δ ◦ ͦͷʹؙͬͱαʔϏεΛ࡞Γ͠
dinii ʹ͓͚Δٕज़બఆͷཱͪҐஔͷৼΓฦΓ 7 Ϗδωε/ϓϩμΫτ ٕज़બఆɾΞʔΩςΫνϟ ৫ɾਓࡐ ΞʔϦʔͳͷͰ Α͔͘Βͳ͍ɻ ະΛΔͨΊʹɺ ૣ͘ଟ͘ϦϦʔεɻ
ߴϦϦʔεͷͨΊʹɺ ࠓͷϝϯόʔ͕࠷େύ ϑΥʔϚϯεΛൃشͰ͖Δ ٕज़બఆ ৽ن্ཱ͛ɺվળɺӡ ༻ɺϐϘοτɺશͯΛ͜ ͳ͢λϑͳਓࡐ ͜͏ͳΔΜ͡Όͳ͍͔ɺ ͱ͍͏ະདྷ૾͕ ݟ͑ͯ͘Δ ϏδωεͷϏδϣϯʹର ͯ͠దͨ͠ΞʔΩςΫ νϟɺٕज़બఆ ΞʔΩςΫνϟͱٕज़બఆ ʹదͨ͠৫ߏͱਓࡐ ݕূظ (ϦϦʔευϦϒϯ) PMFޙ (ϏδϣϯυϦϒϯ) ✅ ͜ͷసظͰ React Native ͷຊ࠾༻Λͨ͠
React Native ಋೖͷܦҢ 8 • ҰఆϏδωεɾϓϩμΫτͷํੑ͕ݟ͑ͨ࣌ʹɺ͋Δͻͱͭͷ ϞόΠϧΞϓϦ(Ϩδ)ʹຊ֨తʹྗ͢ΔҙࢥܾఆΛͨ͠ɻ →ʮϨδʯͱ͍͏ϞόΠϧΞϓϦͷٕज़બఆͰඇৗʹ໎ͬͨɻ
Ϩδ։ൃྗલͷٕज़ɾνʔϜঢ়گ 9 x1 x2 ͜͜ʹྗ͍ͯ͘͠Ϗδωε্ͷ ҙࢥܾఆ͕͞Εͨ Backend web app native
app A native app B (Ϩδ) ༷ʑͳ HW ࿈ܞͷ༧ఆ͋ Γ SWE Kotlin Ͱଓ vs React Native Ҡߦ
Ϩδͷٕज़બఆʹ͓͍ͯߟ͑ͨ͜ͱ 10 • ΩϟογϡυϩϫʔɺϓϦϯλʔͳͲɺ༷ʑͳཧσόΠεͱͷ࿈ܞ͕ݟ͍͑ͯͨ ◦ ωΠςΟϒ࣮ͷํָ͕ͦ͏ ◦ ϋʔυΣΞଆʹɺRN SDK ͳͲͳ͍͜ͱ͕ଟ͍
• ωΠςΟϒ࣮Ͱͷӡ༻ͷͨΊ࣮/࣮͋ͬͨ ◦ ྫ: ҿ৯ళ 24/365 ͳͷͰɺࣗಈΞοϓσʔτ͕͔͔Βͳ͍ͱ͍͚ͳ͍ɻ ▪ Android ͳͷͰ OS ͷਂ͍ͱ͜Ζ·Ͱ৮Ε͍ͯͨͨΊɺͳΜͱ͔ͳ͍ͬͯͨɻ • ͍͠ҿ৯ళ͚ϓϩμΫτͳͷͰɺඍົͳૢ࡞ੑεϐʔυײ͕ڧ͘ٻΊΒΕͦ͏ ◦ ωΠςΟϒͷํ͕ؤுΕͦ͏ • ϨδΞϓϦͷωΠςΟϒ࣮ͷ͜Ε·Ͱͷࢿ࢈Λࣺ͕͍ͯͨ ◦ ͳΜ͔ͩΜͩ͜Ε͕Ұ൪େ͖͍
ͳͥ React Native ͕બࢶͱͯ͠ग़͖ͯͨʁ 11 • աڈͷϐϘοτͷܦݧ͔Βɺ ଟ͘ͷϓϩμΫτΛશͯ࿈ಈͤ͞Δ͜ͱʹͳΔͷͰͳ͍͔ʁͱ͍͏ߏ͕ग़͖ͯͨͨΊɻ • ҰํͰɺ͜Ε·ͰͷωΠςΟϒ࣮ɾӡ༻ͷࢿ࢈Λࣺ͕͍ͯͨͱ͍͏τϨʔυΦϑɻ
→ ϏδωεߏతʹɺଟϓϩμΫτͷ։ൃޮੑʹٕज़ج൫Λͨ͠ํ͕ϨόϨοδ͕ޮ͖ͦ͏ ͩͬͨͷ͕ܾΊखɻ ॳͱকདྷ૾Λఱṝʹֻ͚ɺ Ϩδ։ൃྗલʹ React Native Ͱ࡞Γ͢͜ͱΛҙࢥܾఆ
ͦͷޙͲ͏ͳ͔ͬͨʁ 12 • ఆΑΓɺϞόΠϧΞϓϦ͕૿͑ͨɻ ◦ ҰํͰಉ͡Α͏ͳ࣮Օॴ͕ଟ͍ɻશ෦ TS Ͱॻ͚ΔͷͰϝϯςίετ͕͑͘ΒΕͨɻ ◦ ྫ:
དྷళ٬ɺళฮελοϑɺ৭ʑͳਓ͕͋ͪͪ͜Ͱจ͢Δ = ΠϯλʔϑΣʔε৭ʑɺϩδοΫಉ͡ɻ • ͦͷଞͷɺΤίγεςϜͷॿ͚͋ΓඞཁेʹղܾͰ͖ͨɻ ◦ HW ࿈ܞʹ͓͍ͯɺωΠςΟϒґଘͳ࣮Λ͑ΒΕͨ(ͦ͏ͳΒͳ͍ྗ͕Ͱ͖ͨ)ɻ ◦ ࣗಈΞοϓσʔτ Expo ͷ OTA update ͕͋ͬͨͷͰͳ͔ͬͨɻ ◦ ύϑΥʔϚϯεͷݒ೦ɺਖ਼͍࣮͠ͰؤுΕͨɻ ▪ ༷ʑͳϥΠϒϥϦۀքͱͯ͠ͷ࣮ݟɺ෦తͳωΠςΟϒ࣮ͳͲɻ ◦ → React Native ͷڧྗͳΤίγεςϜʹॿ͚ΒΕͨ෦͕ଟ͍
ۙͷٕज़ɾνʔϜঢ়گ 13 xͨ͘͞Μ Backend web app native app A native
app B (Ϩδ) HW ࿈ܞ SWE native app C native app D ݁ہͬͱ૿͑ͨ HW Λ iOS Խ શ௨৴Λ GraphQL Խ ଟ͘ͷมԽ͕͕͋ͬͨʮଟ͘ͷϓϩμΫτΛ࡞Δʯલఏͷ͓͔͛ͰϏδωεతʹࣦͤͣεέʔϧத
Takeaways 14 • ৗʹϏδωεɾϓϩμΫτͷকདྷΛݟ௨ͯ͠ɺٕज़ʹөͤ͞ΒΕΔͱྑ͍ɻ ◦ ͱ͍͑ɺக͠ํͳ͍ϑΣʔζͲ͏ͯ͋͠Δɻ ▪ ಛʹॳظɺ͙͢ʹϦϦʔεΛֶͯ͠ͼΛಘΔ͜ͱͰ࣍ʹܨ͕Δ͜ͱ͕ଟ͍ɻ ◦ dinii
ͷ߹ɺ͘ҿ৯υϝΠϯͰ 0→1 Λ͍ͬͯͨͷͰɺଟϓϩμΫτͷߏͱॏཁੑΛεέʔϧલʹͰ ͖ͨ͜ͱ͕ӡͩͬͨɻ ▪ ʮ͜͜࡞Βͳͯ͘ྑ͘ͳ͍ʁʯɺେׂͱ͙͢ʹ࡞Β͟ΔΛಘͳ͔ͬͨɻɻɻ • ͋ͬͯΑ͔ͬͨɺReact Nativ e ◦ ෆ࣮֬ੑ͕ߴ͍ελʔτΞοϓʹ͓͍ͯɺϚϧνϓϥοτϑΥʔϜ / web ͷٕज़͕͑Δ / ΤίγεςϜ͕େ͖͍ ͜ͱඇৗʹڧྗɻ ◦ ಛʹ dinii ͰɺଟϓϩμΫτΛϚϧνϓϥοτϑΥʔϜͰٻΊΒΕΔϏδωεͱͷ૬ੑ͕ൈ܈ͩͬͨɻ