Android App Bundle に関するよくある質問

Android App Bundle について

Android App Bundle(AAB)とは何ですか?

Android App Bundle(AAB)は、2018 年にリリースされた Android 用の公開形式です。Google Play と他のアプリストアに加え、Android Studio、Bazel、Buck、Cocos Creator、Gradle、Unity、Unreal などのビルドツールでサポートされています。

AAB と APK の違いは何ですか?

App Bundle は公開のみを目的としており、Android デバイスにインストールすることはできません。Android パッケージ(APK)は、Android 用のインストール可能かつ実行可能なアプリ形式です。App Bundle をデバイスにインストールできるようにするには、ディストリビュータが APK に加工することが必要です。

AAB は Google Play のみで使用できる独自形式ですか?

いいえ、AAB は独自形式ではありません。App Bundle はオープンソースであるため、すべてのアプリストアでサポートすることが可能です。App Bundle は Google Play だけでなく、その他のいくつかのアプリストアでもサポートされています。

AAB を作成すると、他のアプリストアで公開できなくなりますか?

いいえ、他のアプリストアで公開できなくなることはありません。アプリをビルドする際に、各アプリストアで必要な公開形式に応じて、AAB と APK を同時にビルドできます。

AAB を使用するにはどれくらいの労力が必要ですか?

ほとんどのアプリでは、ビルド時に APK の代わりに AAB を選択するだけなので、AAB をビルドする労力は APK をビルドする場合と同等です。アプリによっては、AAB のメリットを十分に得るために、いくつかの変更が必要になることがあります。

AAB を使用しているデベロッパーはすでに存在しますか?

はい。100 万を超えるアプリとゲームが、App Bundle を使用して Google Play で製品版リリースを公開しています。その中には、アクティブなインストールが数十億回にのぼる人気アプリが多数あります。Google Play を使用してアプリをインストールした場合、デバイスで稼働するアプリの多くは、元々 App Bundle として公開されたものです。

AAB によって、ユーザーによるアプリの「サイドローディング」は防止されますか?

いいえ。AAB によって、ユーザーが任意のソースから APK をインストールするのを防止することはできません。AAB は単なる公開形式であるため、Android プラットフォームの動作を変更することはありません。

デベロッパーが最適化された APK を AAB を使用して配信する場合、その APK を共有するユーザーが問題に遭遇する可能性はありますか?

Android では、アプリが APK と AAB のどちらで公開されたかにかかわらず、APK をデバイス間で直接転送できないケースがまれにあります。具体的には、APK が特定のデバイス向けに(たとえば特定のチップ アーキテクチャ向けに)最適化されている場合、APK を別のデバイスに直接転送すると、ターゲット デバイスが元のデバイスのプロパティと一致しないときに、問題が発生することがあります。このような場合は、ターゲット デバイスに適した APK(または APK のセット)をインストールする必要があります。

複数のアプリストアで公開できますか?

はい。AAB を使用するかどうかにかかわらず、複数のアプリストアで公開できます。Google Play と AAB をサポートする他のアプリストアで AAB を公開するのと同時に、AAB をサポートしていない他のアプリストアやウェブサイトでも APK を公開できます。

AAB 要件は managed Google Play に公開される限定公開アプリに適用されますか?

いいえ。managed Google Play に公開される限定公開アプリは、APK または AAB のいずれかで公開できます。新しい限定公開アプリを作成するときに、自己署名の非公開 APK を公開する場合は、[アプリ署名鍵を変更] を選択して Play アプリ署名をオプトアウトできます。

Play アプリ署名について

Play アプリ署名とは何ですか?

Android 上のすべての APK は、インストール可能にするために、アプリ署名鍵を使用して暗号で署名する必要があります。Android プラットフォームはこの鍵を使用して、アプリのアップデートがデバイスにインストールされているアプリと一致することを確認します。これにより、アプリの初回インストール以降、各アップデートを確実に同じ鍵の所有者から受け取ることができ、悪意のあるアプリに更新されるリスクを軽減できます。2017 年にリリースされた Play アプリ署名は、Play で配信するアプリ用の Play デベロッパーのアプリ署名鍵を保護および管理する、Google Play の鍵管理サービスです。また、Play アプリ署名は、アップロードされた AAB から Play が生成した APK に対して署名オペレーションを実行します。新規アプリについては、AAB を使用できるように Play アプリ署名が必須となっています。

Google が Play アプリ署名をリリースしたのはなぜですか?

長年にわたり、アプリ署名鍵は Play デベロッパーにとって難題でした。鍵を紛失すると、アプリのアップデートをユーザーに配信できなくなり、鍵が不正使用されると、ユーザーが悪意のある更新のリスクにさらされます。ソフトウェア配信においては、このようなリスクを軽減するため、配布チャネルが配信ソフトウェア用の鍵を格納、管理するのが一般的です。Play アプリ署名は、Play 配信鍵を紛失するリスクを根絶し、鍵が不正使用されたときでも Play ユーザーを保護することを可能にし、デベロッパーが Google の継続的なセキュリティ投資から利益を得られるようにするため、2017 年にリリースされました。

Google はどのようにして Play アプリ署名のセキュリティを確保していますか?

Google は、自社の鍵の保護に使用しているのと同じ業界最先端の安全なインフラストラクチャにより、デベロッパーの鍵を保護しています。鍵は、厳格な ACL を持つロックダウンされた専用の鍵管理サーバー上で暗号化されており、改ざん検出可能な監査証跡がすべてのオペレーションについて記録されます。Google のクラウド セキュリティ オペレーションとベスト プラクティスについては、Google のセキュリティに関するホワイトペーパーをご覧ください。

Google Play によってアプリに使用されるアプリ署名鍵を選択することはできますか?

はい。新しいアプリを作成する際に、アプリ署名鍵の生成と保存を Google にまかせるか、または独自のアプリ署名鍵を選択してそのコピーをアップロードするかを選択できます。

Google Play と他のアプリストアで同じアプリ署名鍵を使用したいのですが、可能でしょうか?

アプリのアップデートの仕組みをご検討いただいたうえで、複数のアプリストアで同じ署名鍵を引き続き使用することは可能です。これにより、複数のアプリストアをまたいだアプリのアップデートを各アプリストアで行えるようになります。方法には次の 2 つがあります。

  • ローカルで鍵を生成して、そのコピーを Play にアップロードできます。この方法により、他のアプリストア用にアプリをビルドする際に、Google Play が使用するのと同じ鍵を使用できます。
  • Google が生成した鍵を Play アプリ署名に使用し、Google が生成した鍵で署名された配信 APK を Google Play Console からダウンロードして、その APK を他のアプリストアやウェブサイトでの配信に使用できます。

2021 年 8 月より前に作成されたアプリでは、アプリ署名鍵のコピーを提供しなくても Play アプリ署名を使用できますか?

はい。Play アプリ署名は、2021 年 8 月より前に作成されたアプリ向けに「鍵アップグレード」オプションをサポートしています。これにより、アプリは新しいアプリ署名鍵で Play アプリ署名を使用できるようになります。ただし、このオプションを使用するには、アップグレードを行った後、各リリースで 2 つのもの(App Bundle と、アップグレード前のアプリ署名鍵で署名された以前の APK)をアップロードする必要があります。Play は AAB を使用して、新規インストールとそのアップデート用に、アップグレードされた鍵で署名された APK を生成します。それと同時に、すでにアプリをインストールしたユーザーへのアプリ アップデート用に、以前の APK を使用します。時間の経過とともに、以前のインストールはアップグレードされた鍵に移行します(たとえば、ユーザーが新しいモバイル デバイスに移行したとき)。

2021 年 8 月より前に作成されたアプリと 2021 年 8 月以降に作成されたアプリで同じアプリ署名鍵を使用する方法はありますか?

一般的に、複数のアプリで同じアプリ署名鍵を使用することは推奨されません。アプリごとに固有の鍵を使用する方が安全です。ただし、複数のアプリで同じアプリ署名鍵を使用する必要がある場合は、そうすることができます。いずれにせよ、Play アプリ署名を設定する際に、既存のアプリ署名鍵のコピーをアップロードできます。既存のアプリ署名鍵を共有したくない場合は、まもなく追加される「鍵アップグレード」オプションを 2021 年 8 月より前のアプリで使用して、Play アプリ署名の使用を開始することもできます。そうすれば、2021 年 8 月より前のアプリと 2021 年 8 月以降のアプリの両方で、同じ新しい鍵を使用できます。

Play アプリ署名で使用されているアプリ署名鍵を変更できますか?

はい。Google Play Console で鍵アップグレードをリクエストすることにより鍵を変更できます。

Google Play がコードに想定外の変更を加えていないことを確認するにはどうすればよいですか?

Google Play と、Play Console の App Bundle エクスプローラから、いつでもアーティファクトをダウンロードして検査できます。さらに、Play Developer API により、APK をリリース トラックにコミットする前に検証する機能がまもなく提供されます。App Bundle のコード透明性と呼ばれるオプションの機能を利用することもできます。コード透明性により、デベロッパーとエンドユーザーは、Google Play などのアプリストアに対して、配信されるコードに関する責任を持たせることができます。

App Bundle のコード透明性はどのように機能しますか?

コード透明性は、アプリを配信するアプリストアに対して、配信されるコードに関する責任を持たせることができるオプションの機能です。コード透明性を使用するには、ビルド時に、コードを表すコード透明性ファイル(具体的には、アプリのコードのハッシュを格納したファイル)をアプリ内に生成します。デベロッパーが保有する独自の非公開のコード透明性鍵でファイルに署名します。コード透明性鍵を Google に提供する必要はありません。その後、デバイス上で、インストールされた APK を検査し、デベロッパーが署名したコード透明性ファイルが APK のコードと引き続き一致しているかどうかを検証できます。これにより、APK 自体が配信中に再署名された場合でも、コード透明性によって検証されたコードは変更されていないことが保証されます。不一致がある場合は、配信中にコードが変更された証拠になります。コード透明性は APK 署名に代わるものではなく、Android プラットフォームに含まれている機能ではありません。

Google Play での大きなサイズのアプリやゲームの公開

Google Play で AAB を使用する場合のアプリのサイズ制限について教えてください。

AAB から生成されたベース モジュールの圧縮ダウンロード サイズの上限は 200 MB です。つまり、Google Play はまずベース モジュールを生成し、次に AAB から追加の機能モジュールまたはアセットパックを生成します。次に、Google Play は、個々のデバイスが受信する圧縮ダウンロードの累積合計サイズが 4 GB を超えていないことを確認します。

Google Play は AAB に対して拡張ファイル(OBB)をサポートしていますか?

いいえ。Google Play は AAB に対して拡張ファイルをサポートしていません。拡張ファイル(OBB)は、APK を使用して大きなサイズのアプリやゲームを公開するための、Google Play 固有の以前のソリューションです。200 MB を超える AAB については、Google とサードパーティによって代替手段が提供されています。

Google Play で 200 MB を超えるアプリまたはゲームを公開するにはどうすればよいですか?

大きなサイズのアプリやゲームで AAB を使用する場合、Play Asset Delivery や Play Feature Delivery などの Play 配信サービスを使用して、200 MB のサイズ制限を超えるコンテンツを配信できます。または、サードパーティのコンテンツ配信ネットワークを利用する方法もあります。

Play Asset Delivery には拡張ファイル(OBB)と比べてどのような利点がありますか?

Google Play では、APK を使用する場合に追加のリソースをユーザーに配信するには、別個の拡張ファイル(OBB)が必要でした。しかし、OBB は署名されず、アプリの外部ストレージに保存されるため、あまり安全ではありません。Play Asset Delivery(PAD)を使用すると、Play ストアでゲーム全体を 1 つの App Bundle として公開することにより、OBB を使用せずに 200 MB を超えるゲームを配信できます。また、公開プロセスがよりスムーズになり、配信モードの柔軟性が増すだけでなく、アップデートに必要なデバイス ストレージが削減されます。その結果、インストール率が向上する可能性があります。さらに、PAD の「テクスチャ圧縮形式のターゲット設定」機能を使用すれば、今や約 80% のデバイスがサポートする ASTC をそれらのデバイスに配信できます。利用可能なハードウェアとデバイス ストレージを効率的に利用しつつ、幅広いデバイスをターゲットに設定できます。

AAB によって可能になった Google Play の配信機能

AAB を使用するデベロッパーに Google Play が提供する新機能にはどのようなものがありますか?

Google Play などのアプリストアは、AAB をインストール可能な APK に加工します。APK について責任を負うことで、デベロッパーとユーザーに利益をもたらす新しい機能とサービスを提供することが可能になります。Play は、デベロッパーによって幅広く使用され、高く評価されているサービスをすでに提供しており、その 2 つの例として Play Feature DeliveryPlay Asset Delivery があります。

Play Feature Delivery とは何ですか?

App Bundle の特長の 1 つは、アプリを「機能モジュール」と呼ばれる複数のモジュールに分割できることです。分割されたモジュールは、異なるタイミングでユーザーとデバイスに動的に配信できます(これに対して、以前はインストール時にあらゆるものを 1 つのファイルとして配信する必要がありました)。Play Feature Delivery を使用すると、デベロッパーはどの機能モジュールをどのデバイスにいつ配信するかを、各種の配信モード(インストール時、条件付き、オンデマンド)を使ってカスタマイズできます。これにより、アプリのサイズを削減し(これはインストール数の増加につながります)、アプリのエクスペリエンスを調整できるようになります。たとえば、カスタマー サポートのようなまれにしか使用されない機能を、インストール時ではなく、それを必要とするユーザーにのみオンデマンドで配信することで、全ユーザー向けの初回インストールのサイズを削減できます。また、ハイエンド デバイスには完全なアプリ エクスペリエンスを提供する一方で、データとデバイスのストレージに制約があるエントリレベルのデバイスには、オプションのオンデマンド機能を使用して小規模なアプリ エクスペリエンスを提供することもできます。

Play Asset Delivery とは何ですか?

Play Asset Delivery を使用すると、ゲーム デベロッパーは大規模なアセットを最適なタイミングで動的に配信することで、ユーザー エクスペリエンスを向上させるとともに、ユーザーの待ち時間を短縮できます。Play Asset Delivery を使用するゲームでは、テクスチャ圧縮形式のターゲット設定も利用できるので、ユーザーはスペースや帯域幅を無駄に消費することなく、使用するデバイスに適したアセットのみを入手できます。

上記の Play 配信機能は他のアプリストアでも利用できますか?

いいえ。Play Feature Delivery と Play Asset Delivery は、Google Play ストアと直接やり取りするアプリとゲームでのみ利用できます。これらのオプションのサービスは、Play を他のアプリストアから差別化し、Play のデベロッパーとユーザーに付加価値と有用性を提供する機能の例です。App Bundle と APK を使用する他のアプリストアは、それぞれ独自のアプリストア サービスをデベロッパーに提供しています。