先月は、Android の次期バージョンの初期プレビューとして、Android 12 デベロッパー プレビューを公開しました。今月、2021 年 3 月 17 日(日本時間 3 月 18 日)に Android 12 デベロッパー プレビュー 2 をリリースしました。このビルドでは、アプリでテストできる新機能や変更点がさらに追加されています。
初期 プレビュー プログラムは、オープン性とコミュニティの皆さんとのコラボレーションで改善を行う、私たちの中核的な理念に基づいて進められています。皆さんから寄せられた情報を元に、Android をデベロッパーやユーザーにとって、よりよいプラットフォームにするために引き続き開発していきます。ぜひ今後もフィードバックをお寄せください。
Android 12 では、プライバシーとセキュリティを中核に据え、OS をよりスマートにし、使いやすさとパフォーマンスを向上させることを目指しています。また、ユーザーがスマートフォン、ノートパソコン、タブレット、TV、自動車のどれを使っていてもすばらしい体験を提供できるように、新しいツールの開発も進めています。デベロッパー プレビュー 2 で注目すべき機能は、新しい角丸画面 API、ピクチャー イン ピクチャー API の改善、コンパニオン デバイス管理の改善、ぼかしや色フィルタなどのエフェクトの使い勝手の向上、アプリ オーバーレイ コントロールなどです。
デベロッパー プレビュー 2 には、注目すべき機能がたくさん含まれています。ここでは、そのいくつかをご紹介します。詳しい情報を確認したい方や Pixel にダウンロードしたい方は、Android 12 デベロッパー ウェブサイトをご覧ください。既にデベロッパー プレビュー 1 または 1.1 を実行している方は、無線(OTA)アップデートで最新のリリース データを受信することもできます。
信頼と安全
私たちは、デバイスやデータを安全に保ちつつ、ユーザーにとっての透明性と制御を向上させることに注力し続けています。このリリースでは、実際に確認してアプリでテストできる新機能をいくつか追加しました。
- アプリ オーバーレイ コントロール - Android のシステム アラート ウィンドウは、アクティブなアプリの上にオーバーレイを表示して、ユーザーが重要なアクションに注意を向ける方法を提供しています。しかし、このようなウィンドウはユーザーの邪魔になる可能性があるので、ウィンドウを表示する前にパーミッションをリクエストすることを既に必須としています。
Android 12 では、このようなオーバーレイをコンテンツの上に表示するかどうかをコントロールできるようになります。新しいパーミッションを宣言し、アプリで Window#setHideOverlayWindows() を呼び出すと、アプリのウィンドウが表示されているときにすべての TYPE_APPLICATION_OVERLAY ウィンドウを隠すことができます。取引の確認フローなど、機密性の高い画面を表示する場合は、この方法を選択するとよいでしょう。詳しくはこちらをご覧ください。
- ロック画面通知アクションのセキュリティ向上 - Android 12 では、デバイスのロック画面に表示される通知のプライバシーとセキュリティをさらに細かくコントロールできるようになります。具体的には、通知アクションを設定することで、ロック画面からトリガーされた場合に常に認証を求めることができます。この機能により、既に通知 API から設定できるようになっている通知の可視性のコントロールが向上します。たとえばメッセージ アプリでは、メッセージを削除したり、既読とマークしたりする前に、認証を要求できます。詳しくはこちらをご覧ください。
- アプリのダイジェストへのアクセス - アプリで Android デバイスにインストール済みのアプリのパッケージの整合性を検証できるように、インストール済みのアプリのチェックサムをプラットフォームに直接問い合わせる API を新たに導入します。ダイジェストのアルゴリズムは、SHA256、SHA512、Merkle Root などから選ぶことができます。チェックサムをリクエストするには、アプリのパッケージ名、必要なチェックサムの種類、信頼するインストーラの証明書、チェックサムを受け取るリスナーを渡して PackageManager.requestChecksums() を呼び出します。プラットフォームは対応するチェックサムを返します。これは、インストーラ アプリ(Google Play など)があらかじめ計算したものか、プラットフォームが計算するものになります。結果はパッケージの可視性ガイドラインに基づいてフィルタされるので、目的のパッケージをマニフェストで宣言する必要があります。
この新しい API は、チェックサムを取得するシンプルで効率的な方法を提供します。また、スピードとセキュリティが最適化された標準の安定したパブリック API が提供されることになります。下位互換性を確保するため、API 15 以降で同じ機能を提供する Jetpack ライブラリの作業も進めています。詳しくは、今後お知らせします。
上記の詳細やその他のプライバシーやセキュリティの変更点については、こちらをご覧ください。
ユーザー エクスペリエンス ツールの進化
洗練されたエクスペリエンスと高いパフォーマンスをユーザーに提供していただけるように、さらにツールを充実させる作業を続けています。ここでは、今回のリリースに含まれるアップデートの一部を紹介します。
- 角丸画面のサポート - 多くの最新デバイスでは、きれいでモダンな見た目を実現するために角の丸い画面が使われていますが、アプリ デベロッパーにとってはさらなる配慮が求められることになります。このようなデバイスで優れた UX を実現するため、デベロッパーは角丸画面を考慮し、近くの UI 要素が切り捨てられないように調整する必要があります。
それに役立ててもらうため、新しい API を導入し、角丸画面について照会して詳しい情報を取得できるようにします。角の詳細情報を表す RoundedCorner には、半径や中心点などのデータが含まれます。Display.getRoundedCorner() を呼び出すと、それぞれの角の丸さについて完全な情報を得ることができます。また、WindowInsets.getRoundedCorner() を呼び出すと、アプリの境界に対する角の詳細情報を得ることができます。これらを使えば、必要に応じて UI 要素の位置やコンテンツを管理できます。詳しくはこちらをご覧ください。
- ピクチャー イン ピクチャー(PIP)の改善 - ジェスチャー ナビゲーションを行うユーザーのため、上にスワイプしてホーム画面を表示する際に、アプリがピクチャー イン ピクチャー(PIP)モードに遷移する方法を改善します。
アプリで自動 PIP が有効になっている場合、上にスワイプすると、システムはアニメーションが完了するのを待たずに、アプリを PIP モードに直接遷移させます。これにより、遷移がスムーズになり、パフォーマンスの改善を実感できます。動画以外のコンテンツで PIP ウィンドウのサイズを変更する改善も行いました。アプリは、必要な場合にシステムが PIP アクティビティのサイズを変更できるようにすることで、シームレスなサイズ変更を実現できます。
Android 12 は、PIP ウィンドウを画面の左右の端にドラッグして隠す機能もサポートします。さらに、PIP ウィンドウを操作しやすくするため、タップの動作をアップデートしました。現在は、シングルタップでコントロールを表示、ダブルタップで PIP ウィンドウのサイズを切り替えるようになっています。詳しくはこちらをご覧ください。
- コンパニオン デバイス アプリの起動状態を維持 - スマートウォッチやフィットネス トラッカーなどのコンパニオン デバイスを管理するアプリでは、関連付けられたコンパニオン デバイスが近くにあるときに、アプリが常に起動して接続されている状態を維持するのが難しい場合があります。これを簡単に行えるように、新しい CompanionDeviceService API で Companion Device Manager を拡張しました。
コンパニオン デバイスを管理するアプリがこのサービスを実装すると、関連付けられたコンパニオン デバイスが近くにあるときに、システムがアプリの起動状態を維持するようになります。システムは、デバイスが近くにあるときは常にこのサービスをバインドし、デバイスが範囲から出入りしたり、電源が切られたりした場合はサービスに通知します。そのため、アプリは必要に応じて状態をクリーンアップできます。また、アプリは新しいコンパニオン デバイス プロファイルを使ってスマートウォッチに接続できます。これにより、関連するパーミッションを 1 つにまとめることができるので、登録操作がシンプルになります。詳しくはこちらをご覧ください。
- 帯域幅推定の改善 - 各ユーザーが一般的に利用できる帯域幅を把握して操作を最適化するデベロッパーのために、帯域幅推定を改善しました。デバイスのすべてのユーザーに対して、携帯通信会社や Wi-Fi SSID、ネットワークの種類、シグナルレベルごとに合計スループットを推定できるように、既存の帯域幅推定 API を強化しました。新しい推定方法は他のほとんどの推定方法よりも簡単で正確なはずなので、ぜひ試してみて感想をお聞かせください。
- ぼかしや色フィルタなどのエフェクトの使い勝手の向上 - Android 12 では、ビューやレンダリング階層でよく使われるグラフィック エフェクトを適用しやすくしています。RenderEffect を使うと、任意の RenderNode にぼかしや色フィルタなどを適用できます。これらのエフェクトは、チェーン エフェクトとして組み合わせたり(その場合、内部エフェクトと外部エフェクトが順番に構成されます)、ブレンドしたりすることができます。View.setRenderEffect(RenderEffect) を呼び出して、(ベースとなる RenderNode を利用して)ビューに直接エフェクトを適用することもできます。
view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))
RenderEffect でビューにぼかしをかける
これを利用すると、ビットマップ データの取得、イメージの処理、新しい Bitmap の作成、ImageView への設定という操作を行わなくても、ImageView のコンテンツにぼかしをかけることができます。RenderEffect は、既存のレンダリング パイプラインを利用して余分な計算を最小限にとどめます。
ぜひ試してみて、感想をお聞かせください。詳しくはこちらをご覧ください。
新しい Window.setBackgroundBlurRadius() API を使うと、ウィンドウの背景にすりガラス エフェクトをかけることもできます。半径を設定して密度とスコープをコントロールすると、プラットフォームがアプリのウィンドウの境界内にある背景コンテンツのみにぼかしをかけます。また、blurBehindRadius を使うと、ウィンドウの後ろにあるすべてのコンテンツをぼかすことで、フローティング ウィンドウに深度エフェクトをかけることができます。
背景とウィンドウの後ろにぼかしをかけたダイアログ ウィンドウ
アプリの互換性
新しいバージョンのプラットフォームをロールアウトするにあたって、アプリの互換性を優先し、迅速かつスムーズにアップデートできるように作業を行っています。皆さんが Android 12 に対応する時間を長くとれるように、Android 12 ではアプリに関連する変更のほとんどがオプトイン方式になっています。また、短時間で対応できるように、ツールやプロセスをアップデートしています。
リリースに一歩近づいたデベロッパー プレビュー 2 では、全般的な安定性を改善する作業を続けています。今が新機能や変更点をテストする良いタイミングです。特に、API に関するご意見や、プラットフォームの変更点がアプリに与える影響に関する詳しいフィードバックをお待ちしています。フィードバック ページから、問題の報告をお願いします。
また、今は互換性テストを行って必要な作業を洗い出し始めるべきタイミングでもあります。Android 12 Beta 1 までに互換性のあるアップデートをリリースできるように、早めにこの作業を開始することを推奨しています。現時点では、アプリの targetSdkVersion を変更する必要はありませんが、動作の変更点の切り替えを使うと作業がスムーズに行なえます。Android 12 の変更点をオプトインすることで、アプリがどのような影響を受ける可能性があるかについての予備知識を得ることができます。
2021 年 8 月に Platform Stability に到達すると、アプリに関連するすべてのシステム動作、SDK/NDK API、非 SDK リストが確定します。このタイミングで最終的な互換性テストを終え、完全に互換性があるバージョンのアプリ、SDK、ライブラリをリリースできます。デベロッパー向けのタイムラインの詳細は、こちらをご覧ください。
開発者向けオプションのアプリの互換性切り替え
Android 12 の利用を開始する
このデベロッパー プレビューには、Android 12 の機能を確認し、アプリをテストしてフィードバックを私達にお送りいただくために必要なすべてのものが含まれています。Pixel 3 / 3 XL、Pixel 3a / 3a XL、Pixel 4 / 4 XL、Pixel 4a / 4a 5G、Pixel 5 のシステム イメージへダウンロードすると、すぐに利用を開始できます。Pixel デバイスをお持ちでない方は、Android Studio で 64 ビット システム イメージと Android Emulator を使うことができます。
今回のリリースでは、Android TV でアプリをテストしたり、まったく新しい Google TV エクスペリエンスを試したりすることもできます。詳細はこちらをご覧ください。開発を始めるには、ADT-3 デベロッパー キットを利用します。
開発に必要な詳細情報一式は、Android 12 デベロッパー ウェブサイトでご覧いただけます。