SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ExpoとEASで始める快適モバイルアプリ開発

アプリリリースまでExpoとEASで完結。EAS Submitによるストア提出

ExpoとEASで始める快適モバイルアプリ開発 第11回

ストア提出の下ごしらえ:Android(Play Consoleとサービスアカウント)

 Androidでは、まずGoogle Play Consoleでアプリを作成し、EAS Buildで生成するAABの受け皿を用意します。このとき、提出するAABのパッケージ名がapp.jsonandroid.packageと一致していることも確認しておきます。

 Google Playへ提出する操作を行うのは、開発者本人ではなくEASです。そのため提出の認証には、個人のGoogleアカウントではなく、プログラムからの操作専用の「サービスアカウント」を用意します。サービスアカウントはGoogleのクラウド基盤であるGoogle Cloudの機能で、リソースの入れ物である「プロジェクト」の下に作成します。業務でGoogle Cloudを使っていなければ、この提出用に新しいプロジェクトを1つ作ってしまって構いません。

 準備の流れは大きく3ステップです。(1)Google Cloud Consoleの「IAMと管理」でサービスアカウントを作成し、JSON形式のキーを発行する、(2)同じプロジェクトでGoogle Play Developer APIを有効化する、(3)Google Play Consoleの「ユーザーと権限」からサービスアカウントのメールアドレスを招待し、対象アプリのリリースを管理できる権限を付与する、という順です。JSONキーを作っただけでは提出できず、(3)の権限付与まで完了させる必要がある点に注意してください。

 ダウンロードしたJSONファイルには、サービスアカウントの秘密鍵が含まれています。eas submitはこのファイルを認証情報として参照しますが、プロジェクト直下に置く場合は.gitignoreに追加して、リポジトリへ含めないようにします(リスト1)。

[リスト1]google-service-account.json を .gitignore に追加
# Google Play Consoleへの提出用サービスアカウント
google-service-account.json

 なお、Googleまわりの手順は変化の速い領域です。かつて必須だった初回AABの手動アップロードは現在のEAS Submitでは不要になり、以前の「APIアクセス」ページでのリンク作業も「ユーザーと権限」からの招待方式に置き換わりました。古い解説記事とは手順が食い違うことがあるため、実際に設定する際は、Expo公式のAndroid提出ガイドと、Google Play Developer APIの利用開始ドキュメントを一次情報として参照してください。

 iOSはApp Store Connect API Keyという認証情報の準備が主であるのに対し、AndroidはGoogle Play Developer APIから操作するロボット用アカウントの発行と権限付与が主になります。受け皿と認証情報を一度整えれば、提出はiOSもAndroidも同じEAS CLIの操作体系に寄せられます。

eas.json のsubmitプロファイル

 前回(第10回)では、各プロファイルの詳細なカスタマイズは第11回で扱うと予告しました。この章ではその予告通り、ビルド成果物の性質を決めるbuild.productionと、完成した成果物の提出先を決めるsubmit.productionを順に見ていきます。

 ビルド番号やストアごとの認証情報をコマンド実行のたびに手作業で指定すると、提出先を間違えたり、チーム内で手順がばらついたりしがちです。これらをeas.jsonにまとめておけば、ビルドから提出までの設定をプロジェクトと一緒に管理できます。

productionビルドプロファイルを読み解く

 まず、第10回で作成したeas.jsonのうち、productionに関係する部分を再掲します(リスト2)。build.productionに設定したautoIncrement: trueが、ストア提出用のビルドで重要になります。

[リスト2]eas.json の production プロファイル
{
  "cli": {
    "version": ">= 18.6.0",
    "appVersionSource": "remote"
  },
  "build": {
    "production": {
      "autoIncrement": true
    }
  },
  "submit": {
    "production": {}
  }
}

 autoIncrement: trueを指定すると、EAS Buildのたびに、iOSのビルド番号やAndroidの versionCodeを自動で繰り上げます。さらにappVersionSource: "remote"によって、その番号をEAS側で管理します。手元のapp.jsonを毎回書き換えて番号を合わせなくても、EASが管理する番号を基準に更新できるため、複数人でビルドする場合にも向いています。

 このproductionプロファイルでビルドすると、Androidでは.aabを、iOSではApp Store用の .ipaを生成します。previewで使う内部配布向けの成果物とは異なり、ストアへ提出することを前提にした最終成果物です。3つのプロファイルの違いは、「最初に誰へ届けるか」で整理すると分かりやすくなります(表1)。

表1:プロファイルと配布先の対応
プロファイル 最初に届ける相手 主な目的
development 開発者の手元 Metroと接続しながら実装を確認する
preview 社内テスター 本番に近い構成でレビューや受け入れテストを行う
production ストア 利用者に配布する最終成果物を提出する

 EAS Buildでは、同じアプリでも配布先に合わせたプロファイルを選ぶだけで、ビルドの目的を切り替えられます。ローカルで署名や配布方法を切り替える手順を個別に用意するより、チームで同じeas.jsonを参照できる点が便利です。productionで作った.aab.ipaを、次はsubmitプロファイルの設定に従ってストアへ送ります。

submitプロファイルを書く

 ビルドプロファイルが「どのような成果物を作るか」を定めるのに対し、submitプロファイルは「どこへ、どの認証情報で、どの状態で提出するか」を定めます。iOSとAndroidではストアの認証方式が異なるため、プラットフォームごとに設定を分けます(リスト3)。

[リスト3]submitプロファイルの設定例
{
  "submit": {
    "production": {
      "ios": {
        "ascAppId": "1234567890",
        "appleTeamId": "ABCDE12345",
        "ascApiKeyPath": "./AuthKey_ABC123XYZ.p8",
        "ascApiKeyIssuerId": "01234567-89ab-cdef-0123-456789abcdef",
        "ascApiKeyId": "ABC123XYZ"
      },
      "android": {
        "serviceAccountKeyPath": "./google-service-account.json",
        "track": "internal",
        "releaseStatus": "draft"
      }
    }
  }
}

 iOSのascAppIdには、App Store Connectの「アプリ情報」に表示される「Apple ID」の数字を指定します。appleTeamIdはApple Developer ProgramのチームIDです。App Store Connect API Keyを使う場合は、前章で用意した .p8ファイルのパスをascApiKeyPathに指定し、Issuer IDはascApiKeyIssuerIdに、キーIDはascApiKeyIdに指定します。API Keyの実体や.p8ファイルをリポジトリに含めない点は、前節で説明したとおりです。

 AndroidのserviceAccountKeyPathには、前章のリスト1で.gitignoreに追加したgoogle-service-account.jsonを指定します。trackは提出先のトラックで、internalalphabetaproductionの4種類があります。最初の提出では、まずinternalから始めることを推奨します。限られたテスターに配布して動作を確認してから、段階的に公開範囲を広げられるためです。

 releaseStatusはトラック内でのリリース状態を指定します。リスト3ではdraftとして、Play Console側で内容を確認してから次の操作へ進める例にしています。提出先と認証情報がeas.jsonに揃っていれば、ストアごとに異なるアップロードツールへ持ち替えず、iOSとAndroidを同じeasコマンド体系で扱えます。

 ビルドプロファイルとsubmitプロファイルはproductionのように名前で対応します。この対応関係は、次回扱う予定のeas build --auto-submitで重要になります。まずは対応関係を押さえたうえで、次の章から実際に成果物をストアへ提出してみましょう。

次のページ
eas submitでストアに提出する

この記事は参考になりましたか?

ExpoとEASで始める快適モバイルアプリ開発連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 中川 幸哉(ナカガワ ユキヤ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/29311 2026/08/24 09:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー