コンテンツにスキップ

01. Expo Go・開発ビルド・EASの使い分け

アプリ開発の途中で「Expo Goでは動くのに、通知や広告を追加したら動かなくなった」という問題が起きることがあります。多くの場合、JavaScriptの問題ではなく、インストールしているアプリ本体に必要なネイティブ機能が含まれていないことが原因です。

この記事では、開発環境を次の4つに分けて、いつ切り替えるかを決めます。

環境主な用途ネイティブコードの追加
Expo Go画面、状態管理、ローカル保存の試作既存の対応範囲のみ
開発ビルド通知、認証、広告、課金、独自設定の開発プロジェクト専用のアプリ本体を作る
EAS Build開発・プレビュー・本番用のアプリをビルドするクラウドまたはローカルで新しいバイナリを生成
EAS UpdateJavaScript、スタイル、画像などを配信するネイティブ変更には使わない

Expo Goは学習や初期試作に便利ですが、ネイティブライブラリやアプリ固有の設定を含むアプリには開発ビルドを使います。開発ビルドは、アプリ名やアイコンを持つ自分専用のExpo開発環境です。Expo公式の開発ビルド解説も確認してください。

次の質問に「はい」と答えたら、Expo Goから開発ビルドへ移ります。

  • Expo Goに含まれていないネイティブライブラリを追加するか
  • app.json または app.config.* のネイティブ設定を変更するか
  • 通知、広告、課金、App Check、React Native Firebaseを実機で確認するか
  • iOSとAndroidの権限画面やアプリ起動状態を確認するか

TypeScriptやスタイルだけを変更した場合は、既存の開発ビルドを再利用できます。ネイティブライブラリ、アプリ設定、Expo SDKを変更した場合は、開発ビルドを作り直します。

まずプロジェクトに開発クライアントを追加します。

Terminal window
npx expo install expo-dev-client

EAS上で開発ビルドを作る場合は、eas.json に開発用プロファイルを用意してから、対象プラットフォームを指定します。

Terminal window
eas build --platform android --profile development
eas build --platform ios --profile development

ビルドが端末に入ったら、通常どおり開発サーバーを起動します。

Terminal window
npx expo start

expo-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で配信できる変更と、新しいビルドが必要な変更を区別できる
  • 端末上で開発ビルドを起動し、更新後の動作を確認できる