$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
スタートアップで React Native を採用してよかったこと
Search
dinii_otomo
October 08, 2022
Technology
2
750
スタートアップで 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.5k
diniiでのHasura活用例
dinii_otomo
1
720
Other Decks in Technology
See All in Technology
寫了幾年 Code,然後呢?軟體工程師必須重新認識的 DevOps
cheng_wei_chen
1
1.5k
AWSを使う上で最低限知っておきたいセキュリティ研修を社内で実施した話 ~みんなでやるセキュリティ~
maimyyym
2
1.8k
MariaDB Connector/C のcaching_sha2_passwordプラグインの仕様について
boro1234
0
920
30分であなたをOmniのファンにしてみせます~分析画面のクリック操作をそのままコード化できるAI-ReadyなBIツール~
sagara
0
180
年間40件以上の登壇を続けて見えた「本当の発信力」/ 20251213 Masaki Okuda
shift_evolve
PRO
1
140
Snowflakeでデータ基盤を もう一度作り直すなら / rebuilding-data-platform-with-snowflake
pei0804
6
1.6k
20251218_AIを活用した開発生産性向上の全社的な取り組みの進め方について / How to proceed with company-wide initiatives to improve development productivity using AI
yayoi_dd
0
140
AI駆動開発における設計思想 認知負荷を下げるフロントエンドアーキテクチャ/ 20251211 Teppei Hanai
shift_evolve
PRO
2
430
re:Invent2025 コンテナ系アップデート振り返り(+CloudWatchログのアップデート紹介)
masukawa
0
390
AIエージェント開発と活用を加速するワークフロー自動生成への挑戦
shibuiwilliam
4
320
Fashion×AI「似合う」を届けるためのWEARのAI戦略
zozotech
PRO
2
870
Haskell を武器にして挑む競技プログラミング ─ 操作的思考から意味モデル思考へ
naoya
7
1.6k
Featured
See All Featured
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
63
It's Worth the Effort
3n
187
29k
Building Adaptive Systems
keathley
44
2.9k
Agile that works and the tools we love
rasmusluckow
331
21k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
54k
Become a Pro
speakerdeck
PRO
31
5.7k
Raft: Consensus for Rubyists
vanstee
141
7.2k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
From π to Pie charts
rasagy
0
86
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
[SF Ruby Conf 2025] Rails X
palkan
0
540
Optimising Largest Contentful Paint
csswizardry
37
3.5k
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 ͰɺଟϓϩμΫτΛϚϧνϓϥοτϑΥʔϜͰٻΊΒΕΔϏδωεͱͷ૬ੑ͕ൈ܈ͩͬͨɻ