Upgrade to Pro — share decks privately, control downloads, hide ads and more …

React Nativeで運用しているアプリにExpoを導入する - 計画編 -

Avatar for teppeita teppeita
June 25, 2025
83

React Nativeで運用しているアプリにExpoを導入する - 計画編 -

Avatar for teppeita

teppeita

June 25, 2025
Tweet

Transcript

  1. Expo導入の目的 Expoの概要と一般的なメリット • React Nativeが公式で推奨しているフレームワークの 1つ https://reactnative.dev/docs/environment-setup • ネイティブ絡みの設定・実装が比較的容易になる(ほとんどが JS・JSONで対応可能)

    • Expoが開発しているネイティブ絡みのライブラリ群が使えるようになる • EASを使うことでビルド・リリースが簡単になる • React Nativeのバージョンアップも簡単になる
  2. Expo導入の目的 マイベストがExpo導入する主な狙い • Webエンジニアでも開発しやすくしてチーム間の流動性を高める ◦ ネイティブレイヤーを触る必要性が減る ◦ Expo Routerでファイルベースルーティングにでき、ルーティング周りのキャッチアップ が容易になる

    • EAS Updateで効率的にリリースができるようになる ◦ OTA Update自体は別ライブラリでも可能(実際導入している)だが、 EAS Updateは 差分更新などパフォーマンスや運用効率が良さそう
  3. 導入計画 計画の前提・工夫ポイント • 機能開発は継続する • なるべく既存の仕様や運用を維持して移行期間を短くする ◦ →機能開発への影響とコンフリクトの発生を最小限にするため ◦ (ライブラリの移行や

    EASによるビルド・リリースは一旦後回し) • 事前に不確実性の高い部分が問題なく移行できるか確認( Native Modules利用箇所など) • 早い段階でExpoを使ってアプリ起動できるところまで進める ◦ →以降の動作確認ができるように • Prebuildと元コードを比較して、ネイティブ実装の差分が無い状態を目指す(後述)
  4. 進捗と気づき 現在の進捗 できたこと ✅ 事前にNative Modulesなどを移行して動作確認 ✅ Expoを導入して、ローカルで Prebuildを実行しアプリを起動 ✅

    環境ごとのconfig分岐 対応中 ☑ Push通知→expo-notificationsを使うことに ☑ アイコン・スプラッシュスクリーンの設定 ☑ ビルド・リリース設定 ☑ 細かい動作確認
  5. 進捗と気づき つまづいたこと LINEログイン • Native Modulesで実装しており簡単に移行できるかと思っていたら意外と大変だった • Expo ModulesのライフサイクルAPIの理解(後日Zennに書きます) •

    Native Modules実装との対応関係を整理して移行する必要があった envの扱い(react-native-config) • 環境変数の扱いの見直しが必要そうだと判明 • しかし、色々試した結果、 config-pluginsを使って暫定対応できた ◦ withReactNativeConfigPlugin.jsというファイルを自作
  6. 今後 次の計画 対応中 ☑ Push通知の確認→expo-notificationsを使うことに ☑ アイコン・スプラッシュスクリーンの設定 ☑ ビルド・リリース設定 ☑

    細かい動作確認 Expo導入後 • EASを利用 • Expo Router入れる →導入後どうなったのかを、またどこかで発表できたら良いな 💭
  7. Appendix 参考文献 • Install Expo modules in an existing React

    Native project ◦ https://docs.expo.dev/bare/installing-expo-modules/ • Why Expo is a great fit for new and existing React Native apps ◦ https://expo.dev/blog/why-expo-is-a-great-fit-for-new-and-existing-react-na tive-apps • How I migrated my bare React Native app to Expo ◦ https://expo.dev/blog/how-i-migrated-my-bare-react-native-app-to-expo