成熟したネイティブアプリへExpoを導入する方法(再構築不要)
Key Points
- 段階的導入が可能
- 最小単位は1画面で迅速導入
- expo-dev-clientは未対応
Summary
Expoを既存の成熟したネイティブアプリに段階的に追加する手順と注意点をまとめます。アプリ全体の再構築は不要で、1画面や単機能ずつReact Native/Expoを導入して短期間で反復可能です。
Key Points
- 導入理由: プラットフォーム横断の機能実装、共有コンポーネント、チーム分業、老朽コードの段階的置換など。
- 最小単位は1画面: オンボーディングや設定、チャットビューなどをReact Nativeで素早く追加。
- 既存ネイティブ資産は保持したまま段階的に移行できるためリスクが低い。
- 主要な利点は開発速度と柔軟性の向上。
Quick Integration Steps
- Expoプロジェクト作成:
npx create-expo-app my-project。 - プロジェクト構成:
ios/とandroid/ディレクトリを用意または既存プロジェクトを移動してルートを整える。 - Androidでの主な変更点: Gradleファイル(settings.gradle、build.gradle、app/build.gradle、gradle.properties)にReact Native Gradle Pluginと必要プロパティを追加、AndroidManifestの権限設定、MainActivityでReactを初期化、ReactActivityを作成してレンダリング。
- iOSでの主な変更点: Podfileに依存を追加して
pod install、XcodeでJSバンドル用のビルドフェーズを追加、Info.plistの設定、ReactViewControllerを作成してレンダリング。 - Metro起動: ネイティブアプリをビルドした上でReact Nativeディレクトリで
npx expo startを実行して動作確認。 - 参考実装: https://github.com/expo/expo-brownfield-examples と https://github.com/gabrieldonadel/expo-brownfield-experiments を参照して具体的な統合例を確認。
Notes & Limitations
- 多くのExpoライブラリはそのまま動作するが、アプリライフサイクルのリスナー追加など追加設定が必要な場合がある(Android/iOS別設定を確認)。
expo-dev-clientは現時点で未対応で、次のSDKリリースでの対応が予定されている。- 未対応ライブラリの一覧や詳細は https://docs.expo.dev/brownfield/overview/ を参照。
- 実運用前に提供されているオープンソース例で動作検証することを推奨。