アプリの数が 5 個であっても 100 個であっても大丈夫。すべての Play ストア掲載情報の管理を自動化できるツールがあります。
Google Play には、Play ストアの掲載情報や APK などを管理するための Developer API が用意されています。
Google は 2017 年 1 月に、Twitter からデベロッパー ツールスイート
Fabric を買収しました。その中に含まれていたのが、アプリ自動化ツールのスイート
fastlane です。fastlane を使用すると、スクリーンショット、ベータ版のデプロイ管理、アプリの署名と Play ストアへのプッシュを自動化できます。
さらに managed Google Play では、
Custom App Publishing API を使用することで、
最小バージョンのチェックなしで限定公開アプリを作成できます。
managed Google Play は、限定公開アプリをサポートする Android Enterprise 用マーケットプレイスです。
限定公開アプリとは、一般には公開せず、内部ユーザーのみを対象に配信する Android アプリです。
限定公開アプリのデプロイは数分で作成できます。fastlane の中心的なコントリビューター、
Jan Piotrowski 氏が作成した
プル リクエストにより、コーディングなしでデプロイすることも可能になっています。この問題に関する GitHub の機能リクエスト履歴は
こちらで確認できます。managed Google Play や Google Play プロテクトについて詳しくは、こちらの
ブログ投稿をご覧ください。
重要である理由: Custom App Publishing API や fastlane を使用すると、managed Google Play への移行や継続的インテグレーションのツールやプロセスの統合を大幅に簡略化し、その過程で発生する問題を減らすことができます。
セットアップ
重要: デバッグ キーストアと製品版キーストアを作成する際は、以下に推奨する方法で
アプリの署名を行ってください。製品版キーストアは紛失しないよう注意してください。Google Play(限定公開アプリを含む)のアプリケーション ID に使用したキーストアを変更する場合は、新しいアプリ掲載情報を作成してアプリケーション ID を修正しなければなりません。
推奨: APK の署名には、
Google Play アプリ署名を使用することをおすすめします。これにより、キーストアを紛失するリスクを低減できます。実装の詳細については
こちらをご覧ください。
重要: Google Play のすべてのアプリ(限定公開アプリを含む)には、固有のアプリケーション ID を割り当てる必要があります。アプリケーション ID を再利用することはできません。
限定公開アプリを公開するには、事前に次の 3 つの手順を行う必要があります。
手順の詳細についてはこちらの
ガイドをご覧ください。
- Cloud API Console で Google Play Custom App Publishing API を有効にします。
- サービス アカウントを作成し、新しい秘密鍵を JSON 形式でダウンロードします。
- 下記の手順に沿って、限定公開アプリを有効にします。
fastlane のセットアップ
- fastlane のインストールについては、こちらのドキュメントをご覧ください。managed Google Play のサポートは、fastlane に含まれています。
限定公開アプリを有効にする - デベロッパー アカウント ID の取得
限定公開アプリを作成する手順については、こちらの
ガイドをご覧ください。この手順では、developerAccount ID を受け取るための OAuth コールバックを作成する必要があります。限定公開アプリを有効にする方法としては、fastlane を使用する方法と API を使用する方法があります。以下に、それぞれの方法と難易度を示します。
fastlane を使用する - 初級>
fastlane run get_managed_play_store_publishing_rights
出力例:
[13:20:46]: To obtain publishing rights for custom apps on Managed Play Store, open the following URL and log in:
[13:20:46]:https://play.google.com/apps/publish/delegatePrivateApp?service_account=SERVICE-ACCOUNT-EMAIL.iam.gserviceaccount.com&continueUrl=https://fastlane.github.io/managed_google_play-callback/callback.html
[13:20:46]: ([Cmd/Ctrl] + [Left click] lets you open this URL in many consoles/terminals/shells)
[13:20:46]: After successful login you will be redirected to a page which outputs some information that is required for usage of the `create_app_on_managed_play_store` action.
リンクをウェブブラウザに貼り付け、managed Google Play アカウントの所有者で認証することで先に進めます。
API を使用する - 中級
アプリ管理のウェブ ユーザー インターフェースを作成する予定がない場合は、下に示す基本のノード スクリプトを使用して Firebase 関数を実行することで、developerAccountId を簡単に取得できます。continueUrl に https://foo.bar(または他の架空 URL)を設定して developerAccountId を取得する方法もありますが、セキュリティ上の観点からはおすすめできません。
Firebase 用の Cloud 関数のセットアップ
cloud 関数をセットアップする方法については、こちらの
ガイドをご覧ください。次のコードはエンドポイントに利用できます。(
参照)
const functions = require('firebase-functions');
exports.oauthcallback = functions.https.onRequest((request, response) => {
response.send(request.query.developerAccount);
});
限定公開アプリの掲載情報を作成する
fastlane を使用する - 初級(参照)
ENV['SUPPLY_JSON_KEY'] = 'key.json'
ENV['SUPPLY_DEVELOPER_ACCOUNT_ID'] = '111111111111000000000'
ENV['SUPPLY_APP_TITLE'] = 'APP TITLE'
desc "Create the private app on the Google Play store"
lane :create_private_app do
gradle(
task: 'assemble',
build_type: 'Release'
)
# Finds latest APK
apk_path = Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]
create_app_on_managed_play_store(
json_key: ENV['SUPPLY_JSON_KEY'],
developer_account_id: ENV['SUPPLY_DEVELOPER_ACCOUNT_ID'],
app_title: ENV['SUPPLY_APP_TITLE'],
language: "en_US",
apk: apk_path
)
end
Fastfile の例
>
fastlane create_private_app
API を使用する - 中級
API
ドキュメントをご覧ください。
Java、
Python、
C#、
Ruby のクライアント ライブラリが用意されています。
API の例
Ruby で記述したこのサンプルコードでは、
Google サービス アカウントの json キーファイルで認証を行い、Play Custom App サービスを呼び出して限定公開 APK の最初のバージョンを作成しアップロードしています。このコードは初めてアプリを作成するときにのみ使用します。それ以降の更新には、Play Publishing API の APK アップロード機能を使用する必要があります。(
参照)
require "google/apis/playcustomapp_v1"
# Auth Info
KEYFILE = "KEYFILE.json" # PATH TO JSON KEYFILE
DEVELOPER_ACCOUNT = "DEVELOPER_ACCOUNT_ID" # DEVELOPER ACCOUNT ID
# App Info
APK_PATH = "FILE_NAME.apk" # PATH TO SIGNED APK WITH V1+V2 SIGNATURES
APP_TITLE = "APP TITLE"
LANGUAGE_CODE = "EN_US"
scope = "https://www.googleapis.com/auth/androidpublisher"
credentials = JSON.parse(File.open(KEYFILE, "rb").read)
authorization = Signet::OAuth2::Client.new(
:token_credential_uri => "https://oauth2.googleapis.com/token",
:audience => "https://oauth2.googleapis.com/token",
:scope => scope,
:issuer => credentials["client_id"],
:signing_key => OpenSSL::PKey::RSA.new(credentials["private_key"], nil),
)
authorization.fetch_access_token!
custom_app = Google::Apis::PlaycustomappV1::CustomApp.new title: APP_TITLE, language_code: LANGUAGE_CODE
play_custom_apps = Google::Apis::PlaycustomappV1::PlaycustomappService.new
play_custom_apps.authorization = authorization
play_custom_apps.create_account_custom_app(
DEVELOPER_ACCOUNT,
custom_app,
upload_source: APK_PATH,
) do |created_app, error|
unless error.nil?
puts "Error: #{error}"
else
puts "Success: #{created_app}."
end
end
限定公開アプリを更新する
限定公開アプリを作成したら、Play ストアの新しい掲載情報を作成した後、
Google Play Publishing API を使用して新しい APK をプッシュできます。fastlane では、この機能を使用して新しい APK を Play にアップロードできます。詳しくは
こちらをご覧ください。
ユーザーへのデプロイ
managed Google Play でユーザーにアプリを配信するには EMM(Enterprise Mobility Management)システムが必要です。詳しくは
こちらをご覧ください。
限定公開のエンタープライズ アプリのデプロイと管理が、これまでになく簡単になりました。managed Google Play を通じたアプリのデプロイはどちらの方法でも可能です。お使いの CI システムと、コーディングの必要性に応じてお選びください。fastlane を活用することで時間を大幅に短縮できるはずです。
fastlane の問題やバグにお気づきの際は、
GitHub からご報告ください。
Reviewed by Ben Seab - Regional Manager, Android Enterprise