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
790
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
スタートアップで React Native を採用してよかったこと
2022/10/08 開催の React Native Matsuri 2022 での登壇資料になります。
dinii_otomo
October 08, 2022
More Decks by dinii_otomo
See All by dinii_otomo
10個以上のプロダクトを3人のメンバーでローンチしたdiniiの開発の裏側
dinii_otomo
0
4.7k
diniiでのHasura活用例
dinii_otomo
1
740
Other Decks in Technology
See All in Technology
【CEDEC2026】グラフィックスエンジニアのためのニューラルシェーディング入門
cygames
PRO
0
120
メルカリのグローバルアプリで挑んだ AlloyDB 運用と課題解決の実践記
hatappi
0
230
【CEDEC2026】専門性の高いデフォルメチームが挑んだ人材育成戦略 〜Cygames Academiaの企画から実施まで〜
cygames
PRO
0
520
ガバメント AI 源内を地方自治体は活用できるのか可能性と課題、期待について
takeda_h
1
320
Bill One 開発エンジニア 紹介資料
sansan33
PRO
7
19k
20260804_Q4AzureUpdateBite_FabricDataAgentの精度を高める設計.pdf
matayuuu
1
110
Breaking the Seal: Static Deobfuscation of Compiled V8 JavaScript Bytecode Malware
hshrzd
0
620
Webアクセシビリティ入門 2026
recruitengineers
PRO
2
430
サイバー捜査員研修(前半)
nomizone
1
1.9k
【Google Cloud Next Tokyo'26】Gemini Enterprise と Oracle AI Database で実現する、業務データ活用を実現する AI エージェント実装
shisyu_gaku
0
230
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
53k
TypeScript入門 2026
recruitengineers
PRO
2
480
Featured
See All Featured
Building an army of robots
kneath
306
46k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Product Roadmaps are Hard
iamctodd
55
12k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
400
What's in a price? How to price your products and services
michaelherold
247
13k
How to Talk to Developers About Accessibility
jct
2
490
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Technical Leadership for Architectural Decision Making
baasie
3
470
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
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 ͰɺଟϓϩμΫτΛϚϧνϓϥοτϑΥʔϜͰٻΊΒΕΔϏδωεͱͷ૬ੑ͕ൈ܈ͩͬͨɻ