この記事はSTORES Advent Calendar 2023の14日目の記事です。
こんにちは、@tomorrowkey です。
STORES ブランドアプリでは、オーナーさんのアプリを作成しリリースの管理まで担っています。 全アプリを手作業でやっていてはコストがかかりすぎるので、AndroidアプリのリリースではGoogle Play Developer APIを使って半自動的にリリースできるようになっています。
従来はこのAPIを使用するために、Google Play Developer AccountのAccount OwnerによってGoogle Playとリンクされた特別なGoogle Cloud Projectが必要でしたが、最近のアップデートによって「ユーザーを招待する」権限を持っていれば使用できるようになりました。 今回はそのアップデートされた手順の紹介と、検証時に見つけた99%の人が遭遇しない罠を紹介します。
APIを使うための手順
Google Cloud Projectの準備
適当なGoogle Cloud Platformを用意し、「Google Play Android Developer API」を有効にします。 これまでのようにGoogle Playと連携する必要はありません。
有効にすると「認証情報を作成」というボタンが表示されるので、そのボタンから認証情報を作成します。 サービスアカウントを作りたいので、アクセスするデータの種類では「アプリケーションデータ」を選択します。
アカウントの情報を入力するフォームが表示されるので、適当な値を入れてアカウントを作成します。 あとでも確認できますが、ここに表示されているメールアドレスがGoogle Play Developer Accountのユーザーとして招待するメールアドレスとなります。
サービスアカウントが発行されたら、鍵(JSONファイル)も一緒に発行しておき、手元に控えておきましょう。
Google Cloud Project側の作業は以上です。
Google Play Developer Accountへのユーザー招待
あとはGoogle Play Developer Accountへ先程作ったサービスアカウントを招待するだけです。 「ユーザーと権限」「新しいユーザーを招待」からユーザーを招待するページを開きます。
さきほど作成したサービスアカウントのメールアドレスを入力し、そのAPIで使う必要な権限を設定して、招待します。
これだけでAPIを使うための準備は完了です。 サービスアカウントの鍵(JSONファイル)を使ってAPIにアクセスできるようになりました。
99%の人が遭遇しない罠
これらのアップデートをうけて、1つのサービスアカウントですべてのアプリがアップロードできたら、導入が楽になるだろうなと思い、検証していたところ思ってもみない罠にかかりました。その際のスクリーンショットがこちらです。
このサービスアカウントには他のデベロッパーアカウントへのアクセス権がすでに10個設定されており、設定の上限に達しています。
どうやら 1つのサービスアカウントに設定できるGoogle Play Developer Accountの数は10個までという制限があるらしく、1つのサービスアカウントで運用することは叶いませんでした。ひとまずサービスアカウントが異なっていれば問題なさそうなので、オーナーごとにサービスアカウントを発行し、それを使うことで問題を回避しました。
アクセス制御の観点からもサービスアカウントを分けたり、もしくはGoogle Cloud Projectから分離することも必要になるので、要件に応じた設計の必要性を感じました。
多くの方は1つのサービスアカウントを1つのGoogle Play Developer Accountに設定して作業は完了するかと思いますので、この制限を知らない方も多いのではないでしょうか。
おわりに
ブランドアプリの開発では通常のアプリ開発も行っていますが、特にアプリのリリースやビルド周りについて、他のチームでは経験できないようなニッチな挙動に遭遇することも少なくありません。 ブランドアプリでは自動化を強く進めていく必要があるプロダクトなので、通常だったら深く知らなくてもよい挙動であったとしてもひとつひとつ検証したうえで、最適な自動化方法はなにがいいか日々考え続けています。 もしこういったリリースやビルドに深く知りたい、自動化に興味があるという方がいらっしゃいましたら、ぜひ一緒にモバイルアプリ開発をしましょう。