このガイドでは、iOS アプリと Android アプリのビルドとリリースを自動化するオープンソース プラットフォームである fastlane を使用して、AAB ビルドをテスターに配布する方法について説明します。この配布は、Fastfile で定義されたシンプルな手順に従います。fastlane と Fastfile を設定したら、App Distribution と fastlane の構成を統合できます。
App Distribution は Google Play の内部アプリ共有サービスと統合して、アップロードした AAB を処理し、テスターのデバイス設定用に最適化された APK を提供します。AAB を配布すると、次のことが可能になります。
- テスターのデバイス向けに最適化された APK(Google Play が提供)を実行する。 
- デバイス固有の問題を検出してデバッグする。 
- Play Feature Delivery や Play Asset Delivery などの App Bundle 機能をテストする。 
- テスターのダウンロード サイズを削減する。 
必要な権限
AAB を App Distribution にアップロードするには、Firebase アプリを Google Play のアプリにリンクする必要があります。これらの操作を行うには、必要なアクセスレベルを持っている必要があります。
必要な Firebase アクセス権がない場合は、Firebase プロジェクトのオーナーに、Firebase コンソールの IAM 設定を介して該当するロールを割り当ててもらうよう依頼してください。オーナーの確認や割り当てなど、Firebase プロジェクトへのアクセスについてご不明な点がある場合は、Firebase プロジェクトの権限とアクセスに関するよくある質問をご覧ください。
次の表は、Firebase アプリを Google Play のアプリにリンクする操作と、AAB をアップロードする操作に適用されます。
| Firebase コンソールでの操作 | 必要な IAM 権限 | 必要な権限をデフォルトで含む IAM ロール | その他の必要なロール | 
|---|---|---|---|
| Firebase アプリを Google Play のアプリにリンクする | firebase.playLinks.update | 次のいずれかのロール: | 管理者としての Google Play デベロッパー アカウントへのアクセス権 | 
| AAB を App Distribution にアップロードする | firebaseappdistro.releases.update | 次のいずれかのロール: | –– | 
始める前に
- まだ Firebase を Android プロジェクトに追加していない場合は追加します。このワークフローを終了すると、Firebase Android アプリが Firebase プロジェクトに追加されます。 - 他の Firebase プロダクトを使用していない場合は、プロジェクトを作成してアプリを登録するだけでかまいません。追加のプロダクトを使用する場合は、Android プロジェクトに Firebase を追加するの手順をすべて完了してください。 
- Google Play への Firebase リンクを作成し、AAB をアップロードするには、アプリが次の要件を満たしていることを確認してください。 - Google Play のアプリと Firebase Android アプリが同じパッケージ名で登録されていること。 
- Google Play のアプリがアプリ ダッシュボードで設定され、いずれかの Google Play トラック(内部テスト、クローズド テスト、オープンテスト、製品版)に配布されていること。 
- Google Play でアプリの審査が完了し、アプリが公開されていること。[アプリのステータス] 列に、内部テスト(未公開の内部テスト以外)、クローズド テスト、オープンテスト、製品版のいずれかのステータスが表示されている場合、アプリは公開されています。 
 
- Firebase Android アプリを Google Play デベロッパー アカウントにリンクします。 - Firebase コンソールで、 - [プロジェクト設定] に移動し、[統合] タブを選択します。
- Google Play カードの [リンク] をクリックします。 
 すでに Google Play へのリンクがある場合は、[管理] をクリックします。
- 画面上の手順に沿って App Distribution 統合を有効にし、Google Play にリンクする Firebase Android アプリを選択します。 
 - Google Play へのリンクに関する詳細をご覧ください。 
ステップ 1. fastlane を設定する
- fastlane の構成に App Distribution を追加するには、Android プロジェクトのルートから次のコマンドを実行します。 - fastlane add_plugin firebase_app_distribution - コマンドでオプションの選択を求めるプロンプトが表示されたら、 - Option 3: RubyGems.orgを選択します。
ステップ 2. Firebase で認証する
fastlane プラグインを使用する前に、まず、次のいずれかの方法で Firebase プロジェクトで認証する必要があります。注: 他の認証方法が使用されていない場合、デフォルトでは、fastlane プラグインは Firebase CLI の認証情報を探します。
ステップ 3. Fastfile を設定してアプリを配布する
- ./fastlane/Fastfileのレーンに- firebase_app_distributionブロックを追加します。次のパラメータを使用して、配布を構成します。- firebase_app_distribution のパラメータ - app- 必須: アプリの Firebase アプリ ID。このアプリ ID は、Firebase コンソールの全般設定ページで確認できます。 - app: "1:1234567890:android:0a1b2c3d4e5f67890" - firebase_cli_token- Firebase CLI を使用して CI 環境を認証するときに出力される更新トークン(詳細については CI システムで CLI を使用するをご覧ください)。 - service_credentials_file- Google サービス アカウントの JSON ファイルのパス。上記のサービス アカウント認証情報を使用して認証する方法をご覧ください。 - android_artifact_type- Android のファイル形式(APK または AAB)を指定します。 - android_artifact_path- apk_path(非推奨)に代わるものです。アップロードする APK または AAB ファイルの絶対パス。指定されていない場合、fastlane はファイルが生成されたレーンからファイルの場所を特定します。- release_notes
 - release_notes_file- このビルドのリリースノート。 - リリースノートを直接指定します。 - release_notes: "Text of release notes" - または、プレーン テキスト ファイルのパスを指定します。 - release_notes_file: "/path/to/release-notes.txt" - testers
 - testers_file- 招待するテスターのメールアドレス。 - メールアドレスのカンマ区切りのリストとしてテスターを指定します。 - testers: "ali@example.com, bri@example.com, cal@example.com" - または、メールアドレスのカンマ区切りのリストを含む書式なしテキスト ファイルへのパスを指定します。 - testers_file: "/path/to/testers.txt" - groups
 - groups_file- 招待するテスター グループ(テスターを管理するをご覧ください)。グループは - グループ エイリアス で指定します。これは、Firebase コンソールで検索できます。- グループをカンマ区切りのリストとして指定します。 - groups: "qa-team, trusted-testers" - または、グループ名のカンマ区切りのリストを含む書式なしテキスト ファイルのパスを指定します。 - groups_file: "/path/to/groups.txt" - test_devices
 - test_devices_file
 - 次の配布タイプは、自動テスターのベータ版機能の一部です。 - ビルドを配布するテストデバイス(自動テストをご覧ください)。 - テストデバイスは、テストデバイスのセミコロン区切りのリストとして指定できます。 - test_devices: "model=shiba,version=34,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait" - または、テストデバイスのセミコロン区切りのリストを含む書式なしテキスト ファイルのパスを指定します。 - test_devices_file: "/path/to/test-devices.txt" - test_username- 自動テスト中に使用する自動ログインのユーザー名。 - test_password
 - test_password_file- 自動テスト中に使用する自動ログイン用のパスワード。 - または、パスワードを含む書式なしテキスト ファイルのパスを指定します。 - test_password_file: "/path/to/test-password.txt" - test_username_resource- 自動テスト中に自動ログインに使用するユーザー名フィールドのリソース名。 - test_password_resource- 自動テスト中に自動ログインに使用するパスワード フィールドのリソース名。 - test_non_blocking- 自動テストを非同期で実行します。自動テストの結果は Firebase コンソールで確認できます。 - debug- ブール値のフラグ。 - trueに設定すると詳細なデバッグ情報が出力されます。
platform :android do desc "My awesome app" lane :distribute do build_android_app(task: "bundle", ...) # build_android_app is a built-in fastlane action. release = firebase_app_distribution( app: "1:123456789:android:abcd1234", testers: "tester1@company.com, tester2@company.com", release_notes: "Lots of amazing new features to test out!", android_artifact_type: "AAB" ) end end
テスターがビルドを利用できるようにするためにレーンを実行します。
fastlane <lane>
アクションの戻り値は、アップロードされたリリースを表すハッシュです。このハッシュは lane_context[SharedValues::FIREBASE_APP_DISTRO_RELEASE] を使用して取得することもできます。このハッシュで使用可能なフィールドの詳細については、REST API ドキュメントをご覧ください。
リリースのアップロード後、fastlane プラグインによって次のリンクが出力されます。これらのリンクにより、バイナリを管理し、テスターや他のデベロッパーが正しいリリースを入手できるようになります。
- 1 つのリリースを表示する Firebase コンソールへのリンク。このリンクは、組織内の他のデベロッパーと共有できます。
- テスター エクスペリエンス(Android ネイティブ アプリ)のリリースへのリンク。これを使用すると、テスターはリリースノートを表示し、アプリをデバイスにインストールできます。このリンクを使用するには、テスターにリリースへのアクセス権が必要です。
- アプリのバイナリ(APK または AAB ファイル)を直接ダウンロードしてインストールする署名付きリンク。このリンクは 1 時間後に失効します。
ビルドを配布した後、Firebase コンソールの App Distribution ダッシュボードで 150 日間ビルドを使用できます。ビルドが期限切れになる 30 日前に、テストデバイス上のテスターのビルドリストとコンソールに有効期限のお知らせが表示されます。
アプリのテストに招待されていないテスターには、開始するための招待メールが届きます。既存のテスターには、新しいビルドの準備ができていることを知らせるメールが届きます。テストアプリのインストール方法については、テスター設定ガイドをご覧ください。Firebase コンソールで各テスターのステータス(招待を承諾したか、アプリをダウンロードしたか)を確認できます。
(省略可)App Distribution で新しいリリースを作成するたびにビルド番号を自動的に増やすには、firebase_app_distribution_get_latest_release アクションと increment_version_code fastlane プラグインを使用できます。次のコードは、ビルド番号を自動的に増やす方法を示しています。
lane :increment_version do
  latest_release = firebase_app_distribution_get_latest_release(
    app: "<your Firebase app ID>"
  )
  increment_version_code({ version_code: latest_release[:buildVersion].to_i + 1 })
end
firebase_app_distribution_get_latest_release アクションの詳細については、アプリの最新リリースに関する情報を取得するをご覧ください。
ステップ 4. (省略可)対象のテスターを管理する
プロジェクトまたはグループのテスターは、Fastfile ファイルを使用するか、fastlane アクションを直接実行して追加や削除することが可能です。アクションを直接実行すると、Fastfile に設定された値がオーバーライドされます。
Firebase プロジェクトにテスターを追加すると、個々のリリースにテスターを追加できるようになります。Firebase プロジェクトから削除されたテスターはプロジェクト内のリリースにアクセスできなくなりますが、一定の期間、リリースにアクセスできる可能性があります。
テスターの人数が多い場合は、グループの使用を検討してください。
Fastfile を使用する
# Use lanes to add or remove testers from a project. lane(:add_testers) do firebase_app_distribution_add_testers( emails: "foo@google.com,bar@google.com" # or file: "/path/to/testers.txt" group_alias: "qa-team" # (Optional) add testers to this group ) end lane(:remove_testers) do firebase_app_distribution_remove_testers( emails: "foo@google.com,bar@google.com" # or file: "/path/to/testers.txt" group_alias: "qa-team" # (Optional) remove testers from this group only ) end
# Add or remove testers with the terminal
$ fastlane add_testers
$ fastlane remove_testersfastlane のアクションを実行する
fastlane run firebase_app_distribution_create_group display_name:"QA Team" alias:"qa-team"fastlane run firebase_app_distribution_add_testers group_alias:"qa-team" emails:"foo@google.com,bar@google.com"fastlane run firebase_app_distribution_remove_testers group_alias:"qa-team" emails:"foo@google.com,bar@google.com"fastlane run firebase_app_distribution_delete_group alias:"qa-team"
--emails の代わりに --file="/path/to/testers.txt を使用してテスターを指定することもできます。
また、firebase_app_distribution_add_testers タスクと firebase_app_distribution_remove_testers タスクは次の引数を受け入れます。
- project_name: Firebase プロジェクト番号。
- group_alias(省略可): 指定すると、テスターは指定したグループに追加(または削除)されます。
- service_credentials_file: Google サービス認証情報ファイルのパス。
- firebase_cli_token: Firebase CLI の認証トークン。
service_credentials_file と firebase_cli_token は、アップロード アクションで使用される引数と同じです。
ステップ 5. (省略可)アプリの最新リリースに関する情報を取得する
firebase_app_distribution_get_latest_release アクションを使用すると、App Distribution でアプリの最新リリースに関する情報(アプリのバージョン情報、リリースノート、作成日時など)を取得できます。この情報は、バージョンの自動増分や、以前のリリースのリリースノートの引き継ぎなどに使用できます。
アクションの戻り値は、最新のリリースを表すハッシュになります。このハッシュは lane_context[SharedValues::FIREBASE_APP_DISTRO_LATEST_RELEASE] を使用して取得することもできます。このハッシュで使用可能なフィールドの詳細については、REST API ドキュメントをご覧ください。
パラメータ
| firebase_app_distribution_get_latest_release パラメータ | |
|---|---|
| app | 必須: アプリの Firebase アプリ ID。このアプリ ID は、Firebase コンソールの全般設定ページで確認できます。 app: "1:1234567890:android:0a1b2c3d4e5f67890" | 
| firebase_cli_token | Firebase CLI を使用して CI 環境を認証するときに出力される更新トークン(詳細については CI システムで CLI を使用するをご覧ください)。 | 
| service_credentials_file | Google サービス アカウントの JSON ファイルのパス。上記のサービス アカウント認証情報を使用して認証する方法をご覧ください。 | 
| debug | 
            ブール値のフラグ。 | 
次のステップ
- アプリ内フィードバックを実装して、テスターがアプリに関するフィードバック(スクリーンショットを含む)を簡単に送信できるようにする。 
- アプリの新しいビルドがインストール可能になった場合にテスターにアプリ内アラートを表示する方法を確認する。 
- CI / CD を使用して QA テスターに Android アプリを配布するためのベスト プラクティスを確認する。