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
650
スタートアップで 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
4k
diniiでのHasura活用例
dinii_otomo
1
640
Other Decks in Technology
See All in Technology
2024年にチャレンジしたことを振り返るぞ
mitchan
0
160
AWS環境におけるランサムウェア攻撃対策の設計
nrinetcom
PRO
1
300
C++26 エラー性動作
faithandbrave
2
870
[トレノケ雲の会 mod.13] 3回目のre:Inventで気づいたこと -CloudOperationsを添えて-
shintaro_fukatsu
0
120
UI State設計とテスト方針
rmakiyama
4
920
ハイテク休憩
sat
PRO
2
190
多様なメトリックとシステムの健全性維持
masaaki_k
0
130
あの日俺達が夢見たサーバレスアーキテクチャ/the-serverless-architecture-we-dreamed-of
tomoki10
0
550
Qiita埋め込み用スライド
naoki_0531
0
5.4k
20240513 - 框裡框外_文學院學生如何在AI世代安身立命 @ 淡江大學
dpys
0
530
Oracle Cloudの生成AIサービスって実際どこまで使えるの? エンジニア目線で試してみた
minorun365
PRO
5
340
生成AIによるテスト設計支援プロセスの構築とプロセス内のボトルネック解消の取り組み / 20241220 Suguru Ishii
shift_evolve
0
120
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Statistics for Hackers
jakevdp
796
220k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
The Invisible Side of Design
smashingmag
299
50k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.4k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.4k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.3k
Why Our Code Smells
bkeepers
PRO
335
57k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Building Your Own Lightsaber
phodgson
104
6.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 ͰɺଟϓϩμΫτΛϚϧνϓϥοτϑΥʔϜͰٻΊΒΕΔϏδωεͱͷ૬ੑ͕ൈ܈ͩͬͨɻ