📱

EAS Submitを使ってApp Store/Google Playにアプリを公開してみる

2024/12/23に公開

この記事はReact Native 全部俺 Advent Calendar 21目の記事です。

https://adventar.org/calendars/10741

このアドベントカレンダーについて

このアドベントカレンダーは @itome が全て書いています。

基本的にReact NativeおよびExpoの公式ドキュメントとソースコードを参照しながら書いていきます。誤植や編集依頼はXにお願いします。

EAS Submitを使ってApp Store/Google Playにアプリを公開してみる

今回はExpo Application Services (EAS)のSubmit機能を使って、App StoreとGoogle Playへのアプリ提出を自動化する方法をご紹介します。

事前準備: ストア提出用のバイナリ作成

ストアに提出するためにはApp Store用の.ipaファイルとGoogle Play用の.aabファイルが必要です。従来のReact Nativeアプリ開発では、これらのバイナリを作成するために以下のような複雑な手順が必要でした:

  1. Xcodeでアーカイブを作成
  2. Android Studioでリリースビルドを作成
  3. 各プラットフォームごとの署名設定
  4. バージョン管理

EAS Buildを使うと、これらの作業を1つのコマンドで実行できます:

ビルド設定ファイルの作成
$ eas build:configure

このコマンドでeas.jsonにビルド設定が追加されます:

eas.json
{
  "build": {
    "production": {
      "ios": {
        "distribution": "store",
        "credentialsSource": "remote"
      },
      "android": {
        "buildType": "app-bundle"
      }
    }
  }
}

バイナリの作成は以下のコマンドで実行できます:

ストア提出用バイナリの作成
$ eas build --platform all --profile production

EAS Buildは以下のような利点があります:

  • マシンごとの環境差異を気にする必要がない
  • バイナリの署名を自動的に処理
  • ビルド設定をコードで管理可能
  • iOS/Androidのビルドを同時に実行可能
  • ビルド履歴の管理が容易

ストア提出用の設定

eas.jsonに提出用の設定を追加します。

eas.json
{
  "submit": {
    "production": {
      "ios": {
        "ascAppId": "123456789",
        "appleId": "your.email@example.com"
      },
      "android": {
        "serviceAccountKeyPath": "./path/to/service-account.json",
        "track": "internal"
      }
    }
  }
}

App Store向けの準備

ここが従来のiOSアプリ開発と大きく異なる部分です。通常のiOSアプリ開発では以下のような面倒な作業が必要でした:

  • 証明書(Certificate)の作成と更新
  • プロビジョニングプロファイルの作成と更新
  • デバイスの登録
  • チーム間での証明書の共有

EASを使うとこれらの作業を全てEASが管理してくれます。必要なのは以下の設定だけです:

  1. アプリのバンドルIDを登録
  2. アプリケーション用のASC App IDを取得
  3. App Store Connect APIキーを生成

これらは事前にEASのダッシュボードに登録しておきましょう。

ストアメタデータの管理

まだベータ段階の機能ではありますが、EAS Metadataを使うと、ストアの説明文やスクリーンショットなどのアセットもコードで管理できます。
設定用のstore.config.jsファイルは自分で書くこともできますが、すでにアプリストア上にアプリがある場合は、以下のコマンドで既存のメタデータから自動で作ることもできます。

メタデータの取得
$ eas metadata:pull

メタデータの更新は以下のコマンドで実行できます

メタデータの更新
$ eas metadata:push

Google Play向けの準備

Google Play Consoleで以下の設定が必要です:

  1. サービスアカウントを作成
  2. JSONキーファイルをダウンロード
  3. 必要な権限を付与

アプリの提出

ビルドからストアへの提出まで一括で行う場合:

ビルドと提出を実行
$ eas build --platform all --profile production
$ eas submit --platform all --profile production

既存のビルドを使用する場合:

既存ビルドを使用して提出
$ eas submit --platform ios --latest
$ eas submit --platform android --latest

まとめ

開発からリリースまでの自動化により、チームの生産性を上げることができます。特にモバイルアプリの開発では、ストアへの提出作業が煩雑になりがちなので、EAS Submitのような自動化ツールを活用することをおすすめします。証明書管理の自動化とメタデータのバージョン管理機能により、開発者はアプリの開発に集中できる環境を実現できます。

また、まだプレビューリリース中の機能ではありますが、EAS Workflowを使うと任意のトリガーをもとに、EAS Build, EAS Submitを自動で実行できるようになります。
これまではGitHub Actionsなどの外部CIサービスを使う必要がありましたが、EAS Workflowが正式に採用できるようになれば、EASだけで完結できるようになるかもしれません。

https://docs.expo.dev/eas-workflows/get-started/

Discussion