Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
怖くないexpo eject - TECH STAND #2
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
takahi5
December 18, 2020
Programming
2.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
怖くないexpo eject - TECH STAND #2
3年ほどExpoのmanaged workflowで開発していたアプリをejectしてbare workflowへ移行しました。その際の苦労やeject後の運用についてご紹介します。
takahi5
December 18, 2020
More Decks by takahi5
See All by takahi5
仮説検証フェーズの開発 with React Native
takahi5
0
160
React Nativeでアニメーションを頑張る- React Native Meetup #11
takahi5
4
1.6k
React Native x Firebaseの メリットとTips5選
takahi5
1
2.3k
React Native パフォーマンス最適化 - 2020-10-15 RN Tech Blog
takahi5
1
110
リリースから1年経った React Nativeアプリの リファクタリング
takahi5
0
790
リモートワーク×副業 が中心のチームづくり
takahi5
0
1.4k
React Native + Expoなアプリを リリースして1年を”5分”で振り返る
takahi5
1
330
Other Decks in Programming
See All in Programming
ActionController meets Protocol Buffers
sorah
0
650
[Dev Group Paris Octobre 26] Agentforce, SIforce, Claudeforce, Slackbot… on s'y retrouve ?
nabondance
0
120
Simple Storage Service(S3) is not simple
iwatsukayura
0
300
自作Discord音声botをLambda MicroVMsに移行した話 / Migrating My Discord Voice Bot to Lambda MicroVMs
akihisaikeda
0
130
phperだってパンチカードでコーディングしたい
o0h
PRO
0
370
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
35
17k
Jetpack Compose Mechanisms
skydoves
3
840
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
410
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
310
最近”作らせてる” ローカルAIアプリの話
akit37
0
480
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
300
dotNET_vulnclicker_intro.pdf
deka_morita
0
150
Featured
See All Featured
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
490
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
270
Building Better People: How to give real-time feedback that sticks.
wjessup
371
20k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
630
Side Projects
sachag
456
43k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Thoughts on Productivity
jonyablonski
76
5.4k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
300
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Transcript
怖くない expo eject ワダタカヒコ @takahi5
和田崇彦(ワダタカヒコ) @takahi5 • フリーランス (1月にstand.fmジョイン予定!) • React NativeのUdemyコースを作っ たり
今日話すこと 3年運用したアプリをexpo ejectして Bare Workflowへ移行した話
スポーツ観戦を楽しくするアプリ • リアルタイム実況 • 応援 • ギフティング SpoLive
Expoあり?なし? expo init my-project npx react-native init myProject Expoあり Expoなし(Vanilla
RN, 素のRN)
iOS Android React Native Expo Expoあり (managed workflow)
Expoのメリット (Managed workflow) • Expo Clientアプリによるスピーディな動作確認 (QRコードで起動) • OTAアップデート (apple審査なし)
• クラウドビルド (XCode, Android Studio不要, プロビジョニング管理も)
Expoのデメリット (Managed workflow) ネイティブコードを触れない Expoの提供してない機能は、実現できない (例) • 3rd party製のSDKの導入(広告計測など) •
動画, 音声, bluetoothなどネイティブ寄りの実装 • アプリ内課金
要件を満たすならExpoがおすすめ (大半のアプリはExpoで足りそう)
途中でExpoでは満たせない要件が 追加になったら!?
expo eject Expo (Managed Workflow) Expo (Bare Workflow) expo eject
ネイティブコードも触れる!
Expo Bare Workflowとは iOS Android React Native react-native-unimodule expo- camera
expo- update expo- notification etc ...
フォルダ階層 Managed Workflow Bare Workflow
Expoあり?なし?(まとめ) expo init my-project npx react-native init myProject npx create-react-native-app
my-project Expo (Managed Workflow) Expo (Bare Workflow) Vanilla RN (素のRN) eject +unimodule
↓ まともに起動しない expo eject
~元通り動かすためにやったこと~ 1. Bareに対応していないExpoモジュール • Googleログイン ◦ expo-google-app-authでなくexpo-google-sign-in • スプラッシュスクリーン ◦
expo-app-loading でなく expo-splash-screen ...など https://docs.expo.io/bare/unimodules-full-list/
~元通り動かすためにやったこと~ 2. Constantsの読み込み import * as manifest from "app/app.json"; const
apkKey = manifest.expo.extra.apiKey import Constants from 'expo-constants'; const apiKey = Constants.manifest.extra.apiKey Expo 40では不要!
~元通り動かすためにやったこと~ 3. 3rdパーティ製モジュールの改修 Bareに対応していない3rdパーティ製モジュール ↓ forkして修正したものを読み込み 例: expo-analytics
~元通り動かすためにやったこと~ 4. クレデンシャルなどの設定 Expo側で管理していたクレデンシャルやプッシュ通知のキー をダウンロードしてXCodeで設定
Bare Workflowになって 変わったこと 変わらなかったこと
Managed → Bareで変わったこと 変わった 変わらなかった OTA Push 通知 Expo Client
SDK の更新 ビルド 方法 社内の 配布方法
OTA ♂ Bareでも対応している (expo-update) Expo SDK 38〜
Push通知 ♂ Bareでも対応している (expo-notification) Expo SDK 37〜
Expo Clientはだいたい動く Managedで対応している機能は動く 非対応機能は分岐させる必要あり expo start react-native start
Expo Clientを使うために... ManagedもしくはBareでしか使えない機能は分岐させる if (Constants.appOwnership === "expo") { // Expo
Clientで起動した場合 // Managedのみの機能 } else { // Bareのみの機能 } https://docs.expo.io/bare/using-expo-client/
SDKの更新 Expo SDKと別に、RN及びExpoパッケージを更新可能 SpoLiveではExpo SDKリリースのタイミングで更新している expo upgrade
社内配布 Before: QRコードでプルリクごとに配布 After: devのrelease channelを向けたビルドを社内に配布 release-channel=prod release-channel=stage ユーザー 社内
まとめ • Bare Workflowも整備されてきた感 • なるべく最新のExpo SDKにしてからejectするのが⭕