対象読者
- React NativeとExpoでモバイルアプリを開発し、EAS Buildで成果物を作ったことがあるエンジニア
-
eas submitを使って、iOSやAndroidのアプリをストアへ提出する流れを身につけたい開発者 - ストア提出を、チームで再現可能な手順として整備したい開発リーダー
前提環境
筆者の検証環境は以下の通りです。Apple Developer Programへの登録が済み、第10回で作成したeas-sandboxプロジェクトとeas.jsonが用意されている状態から始めます。第10回の執筆時点からExpo SDKのバージョンが進んだため、サンプルプロジェクトはSDK 57系へアップグレードしています。なお、本稿の実行例はiOSを中心に紹介し、Androidの提出は流れの解説にとどめます。
- macOS Tahoe 26.5.2
- Node.js 26.5.0
- Expo 57.0.7
- React Native 0.86.0
- React 19.2.3
- TypeScript 6.0.3
- EAS CLI 21.0.2
- Apple Developer Program(有料、年間99ドル)に登録済み
- Google Play Consoleデベロッパーアカウント(初回登録25ドル)はAndroidの提出を実際に試す場合に必要
ストア提出の下ごしらえ:iOS(App Store ConnectとAPIキー)
eas submitを叩く前に、ストア側に受け皿が必要です。ビルド成果物をアップロードすれば自動的にアプリのページができあがるわけではなく、iOSならApp Store Connect、AndroidならGoogle Play Consoleに、アプリのレコードと提出先を用意しておかなければなりません。
ストアの規約に同意し、アプリを受け入れる設定をするこの準備だけは、EASにも肩代わりできない人間の仕事です。逆にいえば、受け皿と認証情報が揃えば、ここから先の提出操作はEAS CLIで済ませられます。
iOSとAndroidでは、準備する認証情報の性質が異なります。まずはApp Store Connect側にアプリを登録し、次にGoogle Play Console側にアプリとサービスアカウントを登録していきましょう。
iOSの提出先はApp Store Connectです。App Store Connectにサインインし、「アプリ」画面の「+」ボタンから「新規アプリ」を選びます。プラットフォームにiOSを選び、名前、プライマリ言語、バンドルID、SKUなどを入力してアプリレコードを作成します。
このときに選ぶバンドルIDは、プロジェクトのapp.jsonに設定したios.bundleIdentifierと一致している必要があります。第10回でAndroidのパッケージ名にio.github.nkzn.eassandboxを使ったのと同じ要領で、app.jsonに"ios": { "bundleIdentifier": "io.github.nkzn.eassandbox" }を設定しているなら、App Store Connectでも同じバンドルIDを選びます(図1)。ここがずれていると、EAS Buildで生成したiOSバイナリを提出できません。
SKUはApp Store Connect内部の管理用IDで、ユーザーの目に触れることはありません。アカウント内で一意であれば任意の文字列を指定でき、迷ったらバンドルIDと同じ文字列を入れておけば十分です。
eas submitからApp Store Connectへ接続する認証方法は、App Store Connect API KeyとApple IDログインの2択です。継続的な提出やCIでの利用を考えるなら、対話的なログインに依存しないApp Store Connect API Keyを推奨します。手元で一度だけ提出する場合などは、Apple IDでログインする方法も選べます。
API KeyはApp Store Connectの「ユーザとアクセス」から発行します。「統合」へ進み、App Store Connect APIのキー作成画面で、App Manager以上のロールを選んで作成します。作成直後に表示される秘密鍵の.p8ファイルをダウンロードし、Issuer IDとキーIDも控えておきます。
EASでAPI Keyを使うときに必要なのは、ダウンロードした.p8ファイル、Issuer ID、キーIDの3点です。.p8ファイルは作成後に再ダウンロードできないため、パスワードマネージャーなど安全な場所で保管してください。キーの値やファイルをリポジトリにコミットしてはいけません。なお、create-expo-app が生成する.gitignoreには*.p8があらかじめ含まれており、うっかりコミットしてしまう事故をある程度防いでくれます。
キーの作成後、App Store Connect APIの一覧画面にIssuer IDと各キーのキーIDが表示されます。.p8ファイルのダウンロードもこの画面から行います(図2)。
なお、submitプロファイルを設定しないままeas submitを実行すると、「Ensuring your app exists on App Store Connect.」というメッセージとともにApple Developerアカウントへのログインを求められます。これは、EASがApp Store Connect上のアプリレコードの確認や作成を代行しようとする動きです。
メッセージにも表示される通り、ascAppIdをsubmitプロファイルに指定しておけばこのステップは省略されます。対話に身を任せる方法もありますが、本稿では提出先とバンドルIDの対応を自分の目で確認できる、事前作成の手順を採りました。
