最近の Android App Bundle の改善と新規アプリのスケジュール
2020年8月14日金曜日
この記事は Dom Elliott、Yafit Becher による Android Developers Blog の記事 "Recent Android App Bundle improvements and timeline for new apps on Google Play" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
Android App Bundle が Google Play でアプリやゲームを公開する際の実質的な標準となってから、2 年あまりが経ちました。現在の実環境では、60 万以上のアプリやゲームで App Bundle が使われており、Google Play のすべてのリリースの 40% 以上を占めています。App Bundle は、Google Play のトップ デベロッパーの 50% が使用しています。たとえば Adobe の場合、App Bundle を使って Adobe Acrobat Reader のサイズを 20% 削減しました。
最近リリースした Play Asset Delivery(PAD)は、App Bundle による大きなメリットをゲームにもたらします。PAD を利用すると、配信コストとゲームのサイズを減らしつつ、ユーザー エクスペリエンスを向上させることができます。Gameloft は、PAD を使ってユーザーの維持率を高め、以前のアセット配信システムの使用時に比べて新規プレイヤーが 10% 増加しました。App Bundle を使うために必要な Play App Signing に関するよくある質問や App Bundle のテスト方法に関するガイダンスを公開しています。本記事では、App Bundle の開発、テスト、公開に関する最近行われた改善について説明します。
App Bundle を使うと、カスタマイズ可能な各種配信オプションを備えた動的機能モジュールによってアプリ開発をモジュール化できます。モジュール化したアプリを構築する際には、動的機能モジュールやベース モジュールのリソースの縮小もできるようになっています。この機能は長く待ち望まれてきたもので、アプリのサイズを大幅に削減できる可能性があります。この機能は、現在 Canary 版となっている Android Studio 4.2 以降で試験運用版フラグ android.experimental.enableNewResourceShrinker=true を指定すると利用できます。
デフォルトでは、App Bundle が配布用 APK に変換される際にインストール時モジュールが自動的に組み込まれます(bundletool 1.0.0 以降)。つまり、各端末に配布する APK の数を減らしつつ、開発時にアプリをモジュールに分割できます。これにより、アプリのダウンロードやインストールにかかる時間が短くなります。インストール時モジュールには「削除可能フラグ」を設定することもできます。その場合、組み込みが行われなくなるので、モジュールの使用後に端末からアンインストールできるようになります。大きなモジュールが不要になった場合は、削除するとよいでしょう。アプリのサイズを減らすことで、アンインストールされる可能性が低くなります。
Android Studio 4.0 では、機能間の依存性が安定版になっています。そのため、動的機能モジュールが他の機能モジュールに依存するように指定できます。この関係を定義できることで、アプリで追加機能を解放するために必要なモジュールが存在することを保証でき、その結果リクエストが少なくなり、アプリのモジュール化が簡単になります。
アプリの配信のテストで実際のユーザーと同じ操作を行ってみることが不可欠です。内部アプリ共有を使うと、テストビルドを Play にアップロードし、アプリをダウンロードできる共有可能なリンクを生成できます。このリンクからアプリをダウンロードすると、アプリを Play にリリースしたときにユーザーに提供されるものと同じバイナリを取得できます。
Play Asset Delivery は、App Bundle のフォーマットを拡張し、Google Play で公開する単一アーティファクトのバイナリと合わせて最大 2 GB のゲームアセットを格納できるようにします。PAD を使うと、150 MB 以上のゲームは以前の拡張ファイル(OBB)ではなく、ゲームのバイナリと同じように Google Play の機能を使ってアセットを最新に保つようになります。さらに、圧縮や差分パッチの対応、ダウンロード サイズの最小化、アップデートの高速化も行われます。
アセットをユーザーに配信するタイミングに応じて、3 つの配信モードから選択できます。install-time は、最初のゲームのインストールとともに配信します。on-demand は、リクエストされたときにのみ配信します。fast-follow は、ユーザーがアプリを開く操作とは関係なく、ゲームのインストールが完了した直後に追加ダウンロードが行われます。fast-follow を使うと、最初のインタラクションまでの時間を短縮しつつ、アセットをできる限り早くユーザーに配信できます。
今後数か月のうちに、テクスチャ圧縮フォーマットのターゲット指定をリリースする予定です。これを使うと、複数のテクスチャ圧縮フォーマットのアセットを含めておき、リクエストする端末がサポートする最も高度なフォーマットを自動選択して配信できるようになります。
詳細については、Game Developer Summit のこちらのセッションをご覧ください。また、Unity、Unreal Engine、Gradle、ネイティブ、Java のサポート オプションについては、ドキュメントをご覧ください。
Google Play は、無数の種類の端末を使う世界中の Android ユーザーに、毎月数十億のアプリやゲーム、アップデート、動的機能モジュールを配信しています。私たちは、ユーザー エクスペリエンスが複雑にならないようにしつつ、皆さんのコンテンツをできる限りシームレスかつ効率的にユーザーに配信するため、多くの時間と労力を費やしています。
たとえば最近では、Google Play で利用しているダウンロード サービスをアップグレードしました。この変更だけで、App Bundle によるアプリのインストールが平均 6% 高速化され、世界のインストール成功率が 1% 上昇しました。その結果、毎週のインストール数は数百万回増加しました。
また、動的機能モジュールの配信に関する複数の改善をロールアウトしています。たとえば、アプリが VISIBLE 以上の場合にモジュールのインストールを許可する、ストレージ不足エラーのしきい値となる空き領域を下げる、大きな動的機能を Wi-Fi でダウンロードする際のユーザーの確認を省略するなどです。これだけで、モジュールの遅延ダウンロードの成功率が 12% 上昇しました。動的機能を使うアプリでは、自動的にこの変更によるメリットが得られます。
引き続き、Google Play で App Bundle を APK よりも優れた公開フォーマットにするための作業に取り組んでいます。たとえば、新しい App Bundle Explorer を使うと、すべての App Bundle を 1 か所で管理できます。Play が配信用に生成する APK そのものや、別の配信チャンネルで使用できる署名されたユニバーサル APK(サポート対象の端末に必要なすべてのコードやリソースを含む 1 つのインストール可能 APK)をダウンロードして確認することもできます。
App Bundle がアプリやゲームのエコシステムに広く普及することを大変嬉しく思っており、今後もその改善を続けてゆきます。Android 11 のイベントでお知らせしましたが、今後の改善に向けた労力を集中させるため、2021 年の下半期には、Google Play で新しいアプリやゲームを公開する際に Android App Bundle の使用が必須になる予定です。同じタイミングで、以前の APK 拡張ファイル(OBB)のサポートを終了し、Play Asset Delivery が、150 MB 以上のゲームを公開する際の標準オプションになります。また、インスタント対応にはインスタント対応 App Bundle による公開を必須とし、以前の Instant App の ZIP フォーマットのサポートを終了する予定です。
既に Android App Bundle に切り替えてくださっている皆さま、また、フィードバックを共有してくださった皆さま、ありがとうございます。皆さまのご意見は、App Bundle の将来を形作り、あらゆる人に向けたテクノロジーを改善するために役立ちます。ぜひ今後も感想をお知らせください。
Reviewed by Yuichi Araki - Developer Relations Team
Android App Bundle が Google Play でアプリやゲームを公開する際の実質的な標準となってから、2 年あまりが経ちました。現在の実環境では、60 万以上のアプリやゲームで App Bundle が使われており、Google Play のすべてのリリースの 40% 以上を占めています。App Bundle は、Google Play のトップ デベロッパーの 50% が使用しています。たとえば Adobe の場合、App Bundle を使って Adobe Acrobat Reader のサイズを 20% 削減しました。
最近リリースした Play Asset Delivery(PAD)は、App Bundle による大きなメリットをゲームにもたらします。PAD を利用すると、配信コストとゲームのサイズを減らしつつ、ユーザー エクスペリエンスを向上させることができます。Gameloft は、PAD を使ってユーザーの維持率を高め、以前のアセット配信システムの使用時に比べて新規プレイヤーが 10% 増加しました。App Bundle を使うために必要な Play App Signing に関するよくある質問や App Bundle のテスト方法に関するガイダンスを公開しています。本記事では、App Bundle の開発、テスト、公開に関する最近行われた改善について説明します。
Google Play での機能配信
App Bundle を使うと、カスタマイズ可能な各種配信オプションを備えた動的機能モジュールによってアプリ開発をモジュール化できます。モジュール化したアプリを構築する際には、動的機能モジュールやベース モジュールのリソースの縮小もできるようになっています。この機能は長く待ち望まれてきたもので、アプリのサイズを大幅に削減できる可能性があります。この機能は、現在 Canary 版となっている Android Studio 4.2 以降で試験運用版フラグ android.experimental.enableNewResourceShrinker=true を指定すると利用できます。
デフォルトでは、App Bundle が配布用 APK に変換される際にインストール時モジュールが自動的に組み込まれます(bundletool 1.0.0 以降)。つまり、各端末に配布する APK の数を減らしつつ、開発時にアプリをモジュールに分割できます。これにより、アプリのダウンロードやインストールにかかる時間が短くなります。インストール時モジュールには「削除可能フラグ」を設定することもできます。その場合、組み込みが行われなくなるので、モジュールの使用後に端末からアンインストールできるようになります。大きなモジュールが不要になった場合は、削除するとよいでしょう。アプリのサイズを減らすことで、アンインストールされる可能性が低くなります。
Android Studio 4.0 では、機能間の依存性が安定版になっています。そのため、動的機能モジュールが他の機能モジュールに依存するように指定できます。この関係を定義できることで、アプリで追加機能を解放するために必要なモジュールが存在することを保証でき、その結果リクエストが少なくなり、アプリのモジュール化が簡単になります。
アプリの配信のテストで実際のユーザーと同じ操作を行ってみることが不可欠です。内部アプリ共有を使うと、テストビルドを Play にアップロードし、アプリをダウンロードできる共有可能なリンクを生成できます。このリンクからアプリをダウンロードすると、アプリを Play にリリースしたときにユーザーに提供されるものと同じバイナリを取得できます。
Play Asset Delivery
Play Asset Delivery は、App Bundle のフォーマットを拡張し、Google Play で公開する単一アーティファクトのバイナリと合わせて最大 2 GB のゲームアセットを格納できるようにします。PAD を使うと、150 MB 以上のゲームは以前の拡張ファイル(OBB)ではなく、ゲームのバイナリと同じように Google Play の機能を使ってアセットを最新に保つようになります。さらに、圧縮や差分パッチの対応、ダウンロード サイズの最小化、アップデートの高速化も行われます。
1 つのベース モジュール、2 つの動的機能モジュール、2 つのアセットパックのある Android App Bundle の内容
アセットをユーザーに配信するタイミングに応じて、3 つの配信モードから選択できます。install-time は、最初のゲームのインストールとともに配信します。on-demand は、リクエストされたときにのみ配信します。fast-follow は、ユーザーがアプリを開く操作とは関係なく、ゲームのインストールが完了した直後に追加ダウンロードが行われます。fast-follow を使うと、最初のインタラクションまでの時間を短縮しつつ、アセットをできる限り早くユーザーに配信できます。
今後数か月のうちに、テクスチャ圧縮フォーマットのターゲット指定をリリースする予定です。これを使うと、複数のテクスチャ圧縮フォーマットのアセットを含めておき、リクエストする端末がサポートする最も高度なフォーマットを自動選択して配信できるようになります。
詳細については、Game Developer Summit のこちらのセッションをご覧ください。また、Unity、Unreal Engine、Gradle、ネイティブ、Java のサポート オプションについては、ドキュメントをご覧ください。
Google Play による高品質の配信
Google Play は、無数の種類の端末を使う世界中の Android ユーザーに、毎月数十億のアプリやゲーム、アップデート、動的機能モジュールを配信しています。私たちは、ユーザー エクスペリエンスが複雑にならないようにしつつ、皆さんのコンテンツをできる限りシームレスかつ効率的にユーザーに配信するため、多くの時間と労力を費やしています。
たとえば最近では、Google Play で利用しているダウンロード サービスをアップグレードしました。この変更だけで、App Bundle によるアプリのインストールが平均 6% 高速化され、世界のインストール成功率が 1% 上昇しました。その結果、毎週のインストール数は数百万回増加しました。
また、動的機能モジュールの配信に関する複数の改善をロールアウトしています。たとえば、アプリが VISIBLE 以上の場合にモジュールのインストールを許可する、ストレージ不足エラーのしきい値となる空き領域を下げる、大きな動的機能を Wi-Fi でダウンロードする際のユーザーの確認を省略するなどです。これだけで、モジュールの遅延ダウンロードの成功率が 12% 上昇しました。動的機能を使うアプリでは、自動的にこの変更によるメリットが得られます。
2021 年下半期の新規アプリ要件
引き続き、Google Play で App Bundle を APK よりも優れた公開フォーマットにするための作業に取り組んでいます。たとえば、新しい App Bundle Explorer を使うと、すべての App Bundle を 1 か所で管理できます。Play が配信用に生成する APK そのものや、別の配信チャンネルで使用できる署名されたユニバーサル APK(サポート対象の端末に必要なすべてのコードやリソースを含む 1 つのインストール可能 APK)をダウンロードして確認することもできます。
App Bundle がアプリやゲームのエコシステムに広く普及することを大変嬉しく思っており、今後もその改善を続けてゆきます。Android 11 のイベントでお知らせしましたが、今後の改善に向けた労力を集中させるため、2021 年の下半期には、Google Play で新しいアプリやゲームを公開する際に Android App Bundle の使用が必須になる予定です。同じタイミングで、以前の APK 拡張ファイル(OBB)のサポートを終了し、Play Asset Delivery が、150 MB 以上のゲームを公開する際の標準オプションになります。また、インスタント対応にはインスタント対応 App Bundle による公開を必須とし、以前の Instant App の ZIP フォーマットのサポートを終了する予定です。
既に Android App Bundle に切り替えてくださっている皆さま、また、フィードバックを共有してくださった皆さま、ありがとうございます。皆さまのご意見は、App Bundle の将来を形作り、あらゆる人に向けたテクノロジーを改善するために役立ちます。ぜひ今後も感想をお知らせください。
Reviewed by Yuichi Araki - Developer Relations Team