もっと詳しく

2022年2月10日10:00AM(現地時間)、GoogleよりAndroid 13 Developer Preivew1が発表されました。最新のAndroid 13(Android T, Android 13 t-DP1)のアップデートをダイジェストでお伝えします。

https://developer.android.com/about/versions/13 より引用

Android 13 DP1のアップデート内容は、プライバシーやセキュリティ機能および開発者の生産性向上にフォーカスしており、これは2021年2月のAndroid 12 DP1と同様の傾向を示しています。アプリ開発で直接的に関わる部分は多くはありません。特にアプリ開発者が気になる設計トピックはAndroid OSから切り離され、Jetpack ComposeをはじめとしたJetpackライブラリに役割が移行しつつあります。この流れは2021年8月のCompose 1.0リリースから定着し、リリース間隔が短くなってアプリに反映するリードタイムも短縮できる恩恵を受けています。

この記事ではAndroid 13の注目すべき機能、マイルストーンやリファレンス、変更点一覧を開発者向けに解説します。例年であれば2022年3月以降のAndroid 13 DP2やBeta1,2リリースの際に多くの機能が追加されるので必要に応じて更新します。続きをどうぞ。

今後のマイルストーンとリファレンス

https://developer.android.com/about/versions/13 よりAndroid 13 Update Timeline

Android 13は2022年2月のDeveloper Preview 1から4月にBeta6月に安定版(Platform Stability、Beta3,4)を予定しています。この計画は例年より1ヶ月、安定版提供に関しては2ヶ月程度の前倒しです。2021年はAndroid 12Lの開発者プレビューも進行していたため、Googleの計画からは差分が小さく、短い期間で安定する想定が読み取れます。

次のリストは本記事の執筆にあたって参考にしたリファレンスです。

プライバシーとセキュリティに関する変更・機能追加

新しいフォトピッカーの動作デモ( https://developer.android.com/about/versions/13/features/photopicker より引用)

動画や画像を安全に共有するためのフォトピッカーAPIが追加されました。これまでのAndroidはドキュメントピッカーがありましたが、こちらは動画/画像に限らない汎用的な仕組みでした。新しいフォトピッカーは写真やビデオなどのメディアファイルに特化しています。この機能はMedia Providerを利用しており、Google Playシステムの更新を通じてAndroid 11以降でもバックポートされる予定です。

Android 13ではプライバシーポリシーにも変更が入り、パーミッションにNEARBY_WIFI_DEVICESを追加しました。このパーミッションはWi-Fi(ホットスポットなど)を見つけるなどWi-Fi APIにアクセスするための権限です。Android 12以前ではACCESS_FINE_LOCATIONパーミッションが担当していましたが、ユーザーにとっては位置情報とWi-Fi設定を直感的に関連付けることが難しいため、変更に至りました。影響があるAPIはWiFiManagerを始めとしたこちらのWi-Fi APIリストが対象です。

セキュリティ面では<intent-filter>(インテントフィルター)に一致しないIntent(インテント)をブロックする変更が行われました。Android 13以降の挙動に影響するため注意してください。Android 12以前はインテントフィルターに合致しないIntentであってもアプリを起動できてしまうことから内部のコンポーネントが不意に呼び出されてしまうため対策されました。Android 13でのintent filtersの挙動変更に先駆けて、Android 12ではコンポーネントの外部公開を明示的に指定するandroid:exported属性が必須となっています。

アプリ開発者が意図せず公開しないように、また外部の攻撃者がアプリ内部のコンポーネントを任意に開くことがなくなる、アプリを防御するための変更です。

ユーザー体験の向上:テーマアイコン

https://developer.android.com/about/versions/13/features より引用 テーマ別のアイコン例(なし・テーマあり・ダークテーマ)

Android 13ではテーマつきアプリアイコンが増えました。ユーザーはランチャー設定からアプリアイコンを変更できます。テーマでは壁紙やその他のカラー設定を継承して色合いを適用するため、テーマアイコンは自由に色を決めることが出来ません。次の制約があります。

  • テーマアイコンは単色SVGであること(画像は不可)
  • 推奨ロゴ領域は36dp x 36dp(コンテナエリアは90dp x 90dp)
  • 立体ロゴの場合にはアルファグラデーション利用可能

SVGアイコンは既存のベクターデータ(たとえば通知バーのアイコンなど)が再利用可能と解説されていますが、テーマ対応アプリアイコンでは基本的にMaterial Youのダイナミックカラーを使用することになります。デザインガイドラインを再確認し、Android 13に備えましょう。

ユーザ体験の向上:クイック設定API

https://developer.android.com/about/versions/13/features#quick-settings より引用 カスタムタイル設定APIの追加

クイック設定画面に独自タイルを追加できます。新しい点はアプリから直接タイルを追加できるようになった点です(これまでもユーザーがアプリを離れてクイック設定画面に移動すれば追加可能でした)。新しいクイック設定APIを使うとアプリから離れることなく、設定タイルを追加できます。

ユーザー体験の向上:アプリごとの言語設定

新しいプラットフォームAPIを使用するとユーザーの好みのアプリごとの言語を設定/取得できます。これは複数の言語に対応したアプリのみ影響を受ける変更です。「システム言語は日本語だけど特定のアプリは英語を使う」といったユースケースに対応でき、利便性が向上します。

アプリ内言語ピッカーを備えている/または使いたいアプリは言語設定のために上記の新API対応が必要です。そうでないケースは対応不要です(編集注釈:Android OSシステム側で設定を持つと推測しています)。新APIへの対応は今後、Jetpackライブラリに同様のAPIを追加する予定があるとアナウンスされています。バックポートの手間を考えると更新を待ってもいいでしょう。

パフォーマンス改善

Android 13 DP1ではアプリ体験向上のため次の変更が行われています。

いずれも基本的なAPIやUIコンポーネント向けで、パフォーマンス向上を目的としています。OpenJDK 11対応ではvarキーワードのサポートのほか、Stringクラスに新しいメソッドが増えていたり、コレクション対応などOpenJDK 11 LTSに合わせるかたちで更新があります。

https://developer.android.com/about/versions/13/features#graphics より引用

プログラマブルシェーダーのAGSLはAndroidのレンダリングシステム(Android View)に特化しており、Ripple effectやblur効果に使われています。Android専用で提供することでパフォーマンス向上に寄与しています(今の所プラットフォーム内部での利用が前提のようです)

Android 13のまとめ

AndroidのようなモバイルOSでは数多くのアプリケーションが動作しているため、利用者のプライバシーを守る堅牢なセキュリティが求められています。Android 13では開発者の生産性・ユーザーのUX向上・セキュリティの3つをバランスさせるための取り組みが中心です。

たとえばフォトピッカーは、複雑なコンテンツプロバイダー/MediaProviderへのアクセスなど開発者の負担を避けるとともにユーザーへは統一したUXを提供する試みです(ファイル全部へアクセス可能といった全権委任的なパーミッションをアプリに渡すこと無く実現しています)。WiFi用のパーミッション追加やIntentFilterの整理も意図しない動作やユーザーと開発者の間にあるアプリ体験の違いを吸収する変更と受け取れます。

Android OSの今後の役割は、Android 12Lでタブレット/フォルダブル/Chromebooko向けの最適化を行ったように、プラットフォームとしての柔軟性(アプリのパフォーマンスや体験の最適化)の確保とセキュリティやプライバシーの担保が中心となります。

アプリ開発、とくに開発者の生産性向上に対してはComposeが代表するJetpackライブラリ、Android Studioなどの開発ツールの改善と二人三脚で進めていくことになります(これは数年前から行われているアプローチですが筆者は2022年に至って随分と完成に近づいた/進捗したように感じています)。

Android 13の開発者オプションではアプリ互換性テスト機能も提供
https://android-developers.googleblog.com/2022/02/first-preview-android-13.html より引用

Android 13のリリースに合わせてMaterial You(マテリアル・ユー)とJetpack Compose 1.1のアナウンスも行われています。あわせて確認することをお勧めします。Material You、Jetpackライブラリ、Android Studioなどの開発者向けの新機能は、Android OSのリリースサイクルとは異なっていますが、Android 13に合わせてアップデートがあります。

https://android-developers.googleblog.com/2022/02/material-you-coming-to-more-android.html より引用

Material Youの対応デバイスが増えるに合わせて(Samsung、OnePlus、Oppo、Vivo、realme、Xiaome等での対応がロールアウト予定)、今後数か月以内にMaterial ThemeBuilder(テーマビルダー)/MaterialColorUtilitiesのアップデートがアナウンスされました。アプリへの適応に便利なツールです。

2月9日にはJetpack Composeライブラリ 1.1 stableをリリースし、ロードマップを更新しています。次のリリース(Compose 1.2+)ではパフォーマンス、Material You、ウィジェット、Largeスクリーンなど改善項目が上げられています。今すぐの導入予定がなくても今後主流となっていく技術ですのでウォッチしておくといいでしょう。

1月31日にリリースされたAndroid Studio Dolphin Canary 1もIntelliJ 2021.3.1ベースに刷新されています(2月10日に確認したところしれっとAndroid Studio Dolphin Canary 2も出ていました)。

https://developer.android.com/studio/preview/ より
Android 13にあわせてAndroid Studio Dolphin Canary 2もリリース

今後もAndroid 13 DP2やBeta、ComposeやMaterial You、そしてAndroid Studioなど開発情報、新機能アナウンスが楽しみです。

今回の記事は公式リファレンス、Android Developer向けの公式ブログ等の初出情報を元にして執筆しました。Google I/OのようなGoogleの開発者との直接的なディスカッションは行っていません。可能な限り正確な表記を心がけていますが誤りを含んでいる場合があります。もし見つけたらTwitterなど @mhidaka までご連絡ください。

The post Android 13 Developer Preview 1リリース:変更点と新機能 first appeared on TechBooster.