Expo
概要
Expo は React Native の上に乗るオープンソースのフレームワーク兼プラットフォームで、モバイルアプリの構築・実行・出荷を格段に簡単にします。厳選されたネイティブモジュール群、コマンドラインツール、そして Xcode や Android Studio を自分で管理せずにアプリをビルド・申請するためのクラウドサービス(EAS)をひとまとめにしています。Expo Go アプリを使えば、QR コードをスキャンするだけで実機上のプロジェクトを即座にプレビューできます。
強み
- ネイティブビルドの煩雑さの大半を取り除く。一般的なケースでは Xcode/Gradle に触れる必要がない。
- 既製のネイティブ API(カメラ、通知、位置情報など)の大規模なライブラリ。
- EAS Build と EAS Submit がクラウドビルドとストア申請を処理する。
- Over-the-Air アップデートにより、フルなストア審査なしで JavaScript の修正をプッシュできる。
- ファイルベースのルーティング(Expo Router)と優れた TypeScript サポート。
トレードオフ
- Expo のリリースサイクルとサポートされるネイティブモジュール群に縛られます。
- 深くカスタマイズされたネイティブコードには「prebuild」とより多くの設定が必要になることがあります。
- アプリサイズが大きくなることがあり、一部の高度なネイティブ統合には追加の作業が必要です。
- クラウドビルドサービスには無料枠での利用上限があります。
最適な用途
Expo はほとんどの React Native プロジェクトにとって適切なデフォルトです。特に、ネイティブビルドの専門家にならずに両ストアへ素早く出荷したい小規模チームや個人開発者に向いています。
バイブコーディングとの相性
Expo は AI 支援の構築に最適です。CLI はコマンド 1 つで動くアプリをスキャフォールドし、Expo Go は実機での即時プレビューを提供し、同梱の API のおかげでアシスタントが壊れやすいネイティブコードを配線する必要がほとんどありません。ナビゲーションには Expo Router を、安全性のために TypeScript を、そしてサードパーティのネイティブパッケージより前に Expo 自身のモジュール(例: expo-camera)を使うようモデルに依頼しましょう。EAS を正しく設定できるよう、対象とするストアを伝えてください。
npx create-expo-app@latest my-app
cd my-app
npx expo start # Expo Go で QR をスキャン
npx eas build --platform all # 両ストア向けにクラウドビルド