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
730
スタートアップで 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.4k
diniiでのHasura活用例
dinii_otomo
1
710
Other Decks in Technology
See All in Technology
もう外には出ない。より快適なフルリモート環境を目指して
mottyzzz
14
11k
20251027_findyさん_音声エージェントLT
almondo_event
2
490
AIエージェントによる業務効率化への飽くなき挑戦-AWS上の実開発事例から学んだ効果、現実そしてギャップ-
nasuvitz
5
1.4k
ヘンリー会社紹介資料(エンジニア向け) / company deck for engineer
henryofficial
0
420
Okta Identity Governanceで実現する最小権限の原則
demaecan
0
200
20251024_TROCCO/COMETAアップデート紹介といくつかデモもやります!_#p_UG 東京:データ活用が進む組織の作り方
soysoysoyb
0
130
デザインとエンジニアリングの架け橋を目指す OPTiMのデザインシステム「nucleus」の軌跡と広げ方
optim
0
120
JSConf JPのwebsiteをGatsbyからNext.jsに移行した話 - Next.jsの多言語静的サイトと課題
leko
2
190
東京大学「Agile-X」のFPGA AIデザインハッカソンを制したソニーのAI最適化
sony
0
150
ざっくり学ぶ 『エンジニアリングリーダー 技術組織を育てるリーダーシップと セルフマネジメント』 / 50 minute Engineering Leader
iwashi86
6
3k
QA業務を変える(!?)AIを併用した不具合分析の実践
ma2ri
0
160
激動の時代を爆速リチーミングで乗り越えろ
sansantech
PRO
1
170
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.6k
It's Worth the Effort
3n
187
28k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
930
Designing for Performance
lara
610
69k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
2
130
The Illustrated Children's Guide to Kubernetes
chrisshort
49
51k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Designing for humans not robots
tammielis
254
26k
Done Done
chrislema
185
16k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.7k
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 ͰɺଟϓϩμΫτΛϚϧνϓϥοτϑΥʔϜͰٻΊΒΕΔϏδωεͱͷ૬ੑ͕ൈ܈ͩͬͨɻ