01. Expo Go・開発ビルド・EASの使い分け
アプリ開発の途中で「Expo Goでは動くのに、通知や広告を追加したら動かなくなった」という問題が起きることがあります。多くの場合、JavaScriptの問題ではなく、インストールしているアプリ本体に必要なネイティブ機能が含まれていないことが原因です。
この記事では、開発環境を次の4つに分けて、いつ切り替えるかを決めます。
1. 4つの環境の役割
Section titled “1. 4つの環境の役割”| 環境 | 主な用途 | ネイティブコードの追加 |
|---|---|---|
| Expo Go | 画面、状態管理、ローカル保存の試作 | 既存の対応範囲のみ |
| 開発ビルド | 通知、認証、広告、課金、独自設定の開発 | プロジェクト専用のアプリ本体を作る |
| EAS Build | 開発・プレビュー・本番用のアプリをビルドする | クラウドまたはローカルで新しいバイナリを生成 |
| EAS Update | JavaScript、スタイル、画像などを配信する | ネイティブ変更には使わない |
Expo Goは学習や初期試作に便利ですが、ネイティブライブラリやアプリ固有の設定を含むアプリには開発ビルドを使います。開発ビルドは、アプリ名やアイコンを持つ自分専用のExpo開発環境です。Expo公式の開発ビルド解説も確認してください。
2. 切り替えの判断表
Section titled “2. 切り替えの判断表”次の質問に「はい」と答えたら、Expo Goから開発ビルドへ移ります。
- Expo Goに含まれていないネイティブライブラリを追加するか
app.jsonまたはapp.config.*のネイティブ設定を変更するか- 通知、広告、課金、App Check、React Native Firebaseを実機で確認するか
- iOSとAndroidの権限画面やアプリ起動状態を確認するか
TypeScriptやスタイルだけを変更した場合は、既存の開発ビルドを再利用できます。ネイティブライブラリ、アプリ設定、Expo SDKを変更した場合は、開発ビルドを作り直します。
3. 開発ビルドを作る
Section titled “3. 開発ビルドを作る”まずプロジェクトに開発クライアントを追加します。
npx expo install expo-dev-clientEAS上で開発ビルドを作る場合は、eas.json に開発用プロファイルを用意してから、対象プラットフォームを指定します。
eas build --platform android --profile developmenteas build --platform ios --profile developmentビルドが端末に入ったら、通常どおり開発サーバーを起動します。
npx expo startexpo-dev-client、ネイティブ設定、ビルドプロファイルの組み合わせはプロジェクトごとに異なります。コマンドの成功だけで完了にせず、実機で起動、画面遷移、権限拒否、アプリ再起動を確認してください。
4. EAS Updateを使う変更、使わない変更
Section titled “4. EAS Updateを使う変更、使わない変更”EAS Updateは、ストア提出を待たずにJavaScriptやアセットの更新を配信する仕組みです。EAS Update公式ドキュメントでは、画面、文言、翻訳、JavaScriptのバグ修正などが対象として説明されています。
次の変更は、新しいアプリビルドを作ります。
- ネイティブライブラリの追加・更新
- アプリ権限の追加
- Expo SDKの更新
- iOS / Androidのネイティブ設定変更
runtimeVersionと互換しない変更
更新を公開する前に、チャンネル、対象ビルド、差分、ロールバック方法を記録します。
- 自分のプロジェクトでExpo Goと開発ビルドの役割を説明できる
- ネイティブ変更後に開発ビルドを再作成できる
- EAS Updateで配信できる変更と、新しいビルドが必要な変更を区別できる
- 端末上で開発ビルドを起動し、更新後の動作を確認できる