【React Native】Expoでの開発の流れ、ビルドについてまとめ
はじめに
最近、web開発からモバイル開発に移りました。
React NativeのExpoを用いて開発を行っているのですが、Web開発とは異なり、モバイルアプリでは「ビルド」の概念が重要で、ビルドのタイミング、複数のビルドの使い分けに混乱しました。
そこで、モバイル開発初心者の視点から、開発の流れやビルドが必要な場面、また複数のビルドの使い分けについてまとめてみました。
ビルドとは
そもそもモバイルアプリのビルドとは書いたコードを実際のアプリとして利用可能な形に変換する作業のことです。
ビルドには15分ほど(差あり)時間がかかり、最終的にインストール可能なアプリファイル(Androidの場合は.apkや.aab形式、iOSの場合は.ipa形式)を生成します。
Expo Goでの開発
開発中はコードを書きながらUIや機能を追加していきます。しかし、動作確認のたびに15分かかるビルドを毎回行うのは非効率です。そこでExpo Goというツールを使用します。Expo Goを使えば、QRコードを読み取るだけで、手元のスマートフォン上でアプリの動作確認ができます。
Expo Goはビルドとは異なり、開発中のコードをそのまま動作させるプレビュー用のツールです。
ビルドしなくて良いため、手軽に動作確認ができます。
いつビルドが必要か
Expo Goは開発中のコードをリアルタイムで動作させるプレビュー用ツールであり、完全な「アプリ化」には至っていません。そのため、アプリ化(ビルド)された本番環境に近い挙動を完全に再現することはできません。
したがって、以下のタイミングでビルドを行う必要があります。
- 開発中、Expo Goで確認できない機能の動作確認をしたいとき(Development Build)
- スマホにインストールして本番環境やストア向けの動作確認を行いたいとき(Preview Build)
- 作ったアプリをアプリストアに公開したいとき(Production Build)
Expo Goとビルドをうまく使い分けて開発を進めることが重要です。
ビルドする (EAS Build)
EAS BuildとはExpo または React Native コードを簡単にビルドできる公式のサービスです。
ビルド手順
公式ドキュメント参照
以下2点を事前に済ませておきます。
- Expoプロジェクトの作成
- Expo devのアカウント作成
Expoでの環境構築についてはこちらを参照してください。
Expo devのアカウント作成
- EAS CLIをインストールします。
$ npm install -g eas-cli
- Expoアカウントにログインします。
$ eas login
ユーザー名、パスワードを聞かれるので入力してログインします。
- ビルドの設定を行います。
$ eas build:configure
設定するプラットフォームについて聞かれるため答えます。(iOS or Android or All)
ビルドの設定ファイル(eas.json)が生成されます。eas.jsonについては下記で説明します。
- ビルドコマンドを実行します。
以下2点を指定してビルドを実行します。ビルドの種類と条件については下記で説明します。
- プラットフォーム(iOS or Android or All)を指定
- プロファイル(
development
,staging
,production
など)を指定(指定しないとproduction
)
例:Android で development 用のビルドを行う場合
$ eas build --platform android --profile development
eas.jsonとは
ビルドするためにはeas.jsonが必要です。eas.jsonとは EAS Build のための設定ファイルです。
以下のような内容を設定します。
- 各ビルドプロファイル(
development
,staging
,production
など)の設定 - Android/iOSそれぞれのビルド設定
- 環境変数や特定のビルドオプションを指定
{
"cli": {
"version": ">= 14.2.0",
"appVersionSource": "remote"
},
"build": {
// ① development用のビルド設定(Development Build)
"development": {
"developmentClient": true,
"distribution": "internal",
"android": {
"buildType": "apk"
}
},
// ①' iOSシミュレーターでのdevelopment用のビルド設定(Development Build)
"ios-simulator": {
"extends": "development",
"ios": {
"simulator": true
}
},
// ② staging用のビルド設定(Preview Build)
"staging": {
"distribution": "internal",
"android": {
"buildType": "apk"
}
},
// ③ production用のビルド設定(Production Build)
"production": {
"autoIncrement": true
}
},
"submit": {
"production": {}
}
}
build
の下に任意の名前で複数のビルドプロファイル(デフォルトではdevelopment
, preview
, production
)を設定することができます。
したがって、development
, staging
, production
のようにプロファイルを分けて、環境ごとのビルドの設定ができます。
ビルド時は複数から特定のプロファイルを1つ選んでビルドします。
例:① development 用のビルドを行う場合
$ eas build --profile development
ビルド (EAS Build) の種類と条件
プラットフォームや用途に応じてビルドコマンドを実行します。また、無料でできるものと有料のものがあります。
プラットフォーム | ビルド用途 | ビルドコマンド | 生成ファイル形式 | 条件 | 無料か |
---|---|---|---|---|---|
Android | エミュレーター(Android Studio)検証 | eas build --platform android --profile <プロファイル指定> |
.apk | eas.jsonに"android": {"buildType": "apk" } を指定 |
✅ |
デバイス検証 | eas build --platform android --profile <プロファイル指定> |
.apk | eas.jsonに"android": {"buildType": "apk" } を指定 |
✅ | |
アプリストア向け | eas build --platform android --profile <プロファイル指定> |
.aab | ※生成自体は無料だが、Google Playストアにアップロードして公開するためにはGoogle Play デベロッパー メンバーシップが必要 | ✅※ | |
iOS | シミュレータ(Xcode)検証 | eas build --platform ios --profile simulator --profile <プロファイル指定> |
.app | eas.jsonに"ios": {"simulator": "true" } を指定 |
✅ |
デバイス検証 | eas build --platform ios --profile <プロファイル指定> |
.ipa | Apple Developer Program のメンバーシップが必要 | ||
アプリストア向け | eas build --platform ios --profile <プロファイル指定> |
.ipa | Apple Developer Program のメンバーシップが必要 |
ビルドしたアプリを確認する(Android デバイスで確認する)
今回は無料でできるAndroidでビルドし、デバイスで確認する方法を紹介します。
上記表の通り、eas.jsonに"buildType": "apk"
を指定し、ビルドコマンドを実行した後の手順です。
$ eas build --platform android --profile development
- expo dev の Dashboard の Recent activity でビルドが成功したことを確認します。
- ビルドの詳細を確認し、Installを押下して出てきたQRコードをAndroid のカメラで読み取ります。
- Android デバイスで再びInstallを押下し、ファイルをダウンロードし、アプリをインストールし、アプリを開くことができます。(指示が出てくる通りに進めます。)
Development Build は、eas.jsonに"developmentClient": true
を指定することで、アプリが開発サーバーと連携し、コードの変更をリアルタイムで反映できるようになります。
一度 Development Build をインストールした後、npm run start
で開発サーバーを起動するとQRコードが表示されます。
このQRコードを実機で読み取ると、アプリがサーバーと接続され、コードを修正すると即座に反映されます。Development Build は、Expo Goでは確認できないカスタムネイティブモジュールや特定のネイティブ機能のテストも可能です。
まとめ
- 開発中はExpo Goで手軽に動作確認
- Expo Goで確認できないネイティブ機能はEAS Build の Develop Build を行って確認
- アプリストア向けのテストやリリースを行うときにEAS Build の Preview Build や Production Build を行う
- eas.jsonには複数プロファイル Develop Build、Preview Build、Production Build等の設定をする
このようにExpo Goとビルドを使い分けて開発を進めていきます。
Discussion