Firebase App Distributionに移行した話
-
2025年4月18日
こんにちは。Cocone EngineeringでクライアントエンジニアをしているISです。
今回はテスト用のアプリ配信をFirebase App Distributionに移行した事例を紹介します。
はじめに
私のチームでは2025年3月までAppCenterを利用して社内のテスト用アプリを配信していました。
AppCenterは2025年3月31日にサービスが終了するとのことで、2025年4月以降は代替となるアプリの配信方法が必要となりました。
そこで今回は、Firebase App Distributionを利用することになりましたので、AppCenterから移行作業をすることになりました。
Firebaseプロジェクトについて
Firebaseプロジェクトを作成して、そのプロジェクト内にアプリを追加してアプリごとにApp Distributionの開始ボタンを押して、機能を有効にしていきます。

(私のチームではすでにFirebase Cloud Messagingを利用したていたのでプロジェクトはすでに作成済みで、アプリも本番用とアルファ用が追加済みでした)
ここで問題が!
Firebaseプロジェクト内に同一のパッケージ名(iOSではバンドルID)のアプリは登録できません。 これまでAppCenterではQA用、アルファ用、ベータ用、課金用などさまざまな種類の社内用アプリを配信しており、一部のアプリは同一のパッケージ名で運用していました。
これを回避するためもう一つFirebaseプロジェクトを作成し、2つのFireabaseプロジェクトに分けて運用することにしました。
アップロードしてみる
Firebaseプロジェクトの作業が終わったら実際にアプリをアップロードしてみます。
- Firebase CLIのインストール
npm install -g firebase-tools - 秘密鍵の作成

プロジェクトの設定から秘密鍵を生成して、ダウンロードします - ロールの設定
- 以下3つのロールをサービスアカウントに追加します
- Firebase App Distribution Admin SDK サービス エージェント
- Firebase Service Management サービス エージェント
- サービス アカウント トークン作成者
- 以下3つのロールをサービスアカウントに追加します
- 環境変数の追加
- サービスアカウントで認証するため環境変数 GOOGLE_APPLICATION_CREDENTIALS を設定します
- 適当な場所にダウンロードしておいた秘密鍵を置きます(今回はホームディレクトリの.firebase以下に配置)
- .zshrc に秘密鍵のパスを追記します
export GOOGLE_APPLICATION_CREDENTIALS=$HOME/.firebase/private_key_xxx.json - パスを反映します
source ~/.zshrc
- テスターの登録
- App Distributionのテスターとグループでグループを作成し、自分のメールアドレスを追加します。(もちろん自分以外のテスターも登録してOKです)

- App Distributionのテスターとグループでグループを作成し、自分のメールアドレスを追加します。(もちろん自分以外のテスターも登録してOKです)
- アプリのアップロード
- Firebase CLIでアップロードしてみます
firebase appdistribution:distribute /Users/test/android_alpha.apk \\--app {アプリID} --groups 'qa-team'
- Firebase CLIでアップロードしてみます
- アプリのダウンロード
- ここから(https://appdistribution.firebase.google.com/)ダウンロードできるか確認します
- またはアップロード時にテスターには招待メールがくるのでそこからダウンロードします
Slackに通知してみる
SlackのWebhookを使って通知します。(事前にWebhookを利用するためのSlackのAppの準備はしておきます)
- Firebase CLIの結果をファイルにリダイレクトしておきます
firebase appdistribution:distribute /Users/test/android_alpha.apk \\--app {アプリID} --groups 'qa-team' > appdistribute.log - アップロードが成功した場合の結果はこんな感じで、2つ目のURLがテスター用のダウンロード用URLです
i uploading binary... ✔ uploaded new release 1.00.1 (111) successfully! ✔ View this release in the Firebase console: <https://console.firebase.google.com/project/xxxxx> ✔ Share this release with testers who have access: <https://appdistribution.firebase.google.com/testerapps/xxxx> ✔ Download the release binary (link expires in 1 hour): <https://firebaseappdistribution.googleapis.com/app-binary-downloads/projects/xxxx> i updating release notes... ✔ added release notes successfully i distributing to testers/groups... ✔ distributed to testers/groups successfully - ダウンロード用URLを抽出します
DOWNLOAD_URL=$(cat appdistribute.log | grep -oE 'https?://[^ ]+' | sed -n '2p') - Slackに通知します
curl -X POST -H 'Content-type: application/json' --data "{\\"text\\":\\"${DOWNLOAD_URL} \\"}" "<https://hooks.slack.com/services/xxxx>"
その他気になること
アプリダウンロード時のファイル名がすべて、app.apk になってしまう……
AppCenterの時はアップロード時のファイル名でダウンロードできていたのでここは若干不便です。だいぶ前から要望が出ているようですが、2025年4月時点でも変わってないようです。