Android 10 は、3 つの重要なテーマを軸に開発されました。まず、Android 10 は、高度な機械学習と、折りたたみ式デバイスや 5G 対応スマートフォンなどの新しいデバイスのサポートにより、モバイル イノベーションの最先端を形成しています。次に、Android 10 ではプライバシーとセキュリティに重点が置かれており、ユーザーの保護、透明性、管理性を高める 50 近くの機能が搭載されています。最後に、Android 10 ではユーザーの Digital Wellbeing コントロールが拡張され、個人や家族がテクノロジーとのより良いバランスを見つけられるようになっています。
ここでは、Android 10 のデベロッパー向け機能と、それらを今すぐ活用する方法について説明します。
イノベーションと新機能
Android 10 では、最新のハードウェアとソフトウェアのイノベーションを活用して、ユーザーに優れたアプリ エクスペリエンスを提供できます。
Android 10 では、折りたたみ式デバイスなどの大画面デバイス向けにアプリを最適化できます。
折りたたみ式デバイス
Android 10 では、堅牢なマルチウィンドウ サポートを基盤として、アプリ ウィンドウをまたぐマルチタスクが拡張され、デバイスの折りたたみや展開時にアプリの状態を維持する画面の継続性が提供されます。Android 10 では、onResume と onPause にいくつかの改善が加えられ、複数のアプリの再開がサポートされるとともに、アプリがフォーカスされたときに通知されるようになりました。また、resizeableActivity マニフェスト属性の動作も変更され、折りたたみ式デバイスや大画面でのアプリの表示方法を管理できるようになります。折りたたみ式デバイス向けにビルドできるように、Android Studio で折りたたみ式エミュレータを仮想デバイス(AVD)として構成できます。折りたたみ式デバイス向けにアプリを最適化する方法については、デベロッパー ガイドをご覧ください。
5G ネットワーク
5G は、一貫して高速で低レイテンシな通信を実現します。Android 10 では、5G のプラットフォーム サポートが追加され、既存の API が拡張されて、これらの機能強化を活用できるようになりました。接続 API を使用すると、デバイスに高帯域幅の接続があるかどうかを検出し、接続が従量制かどうかを確認できます。これにより、アプリやゲームは 5G 経由でリッチで没入感のあるエクスペリエンスをユーザーに提供できます。
通知内のスマート リプライ
Android 10 では、デバイス上の ML を使用して、通知内のコンテキスト アクションを提案します。たとえば、メッセージに対するスマート リプライや、通知内の住所の地図を開くことなどです。アプリは、特別な操作を行うことなく、この機能をすぐに利用できます。システム提供のスマート リプライとアクションは、デフォルトで通知に直接挿入されます。必要に応じて、独自の返信やアクションを指定することもできます。setAllowGeneratedReplies() と setAllowSystemGeneratedContextualActions() を使用して、通知ごとにスマート リプライを無効にするだけです。
スマート リプライは、通知の内容に基づいてアクションを提案できます。
ダークモード
Android 10 では、システム全体にダークモードが追加されました。これは、暗い場所での使用に最適で、バッテリーの節約にも役立ちます。ユーザーは、[設定] に移動するか、バッテリー セーバーをオンにすることで、システム全体に適用される新しいダークモードを有効にできます。これにより、システム UI がダークモードに変更され、ダークモードをサポートするアプリのダークモードが有効になります。アプリ用のカスタム ダークモードを作成することも、新しい Force Dark 機能にオプトインすることもできます。Force Dark 機能を使用すると、システムによって既存のテーマからダーク バージョンが動的に作成されます。また、AppCompat の DayNight 機能を利用して、以前のバージョンの Android を使用しているユーザーにダークモードを提供することもできます。詳しくは、デベロッパー ガイドをご覧ください。
Android 10 では、Force Dark を使用してアプリのダークモードを動的に作成できます。
ジェスチャー ナビゲーション
ジェスチャー ナビゲーションを使用すると、アプリはコンテンツを全画面表示できます。
Android 10 では、完全なジェスチャー ナビゲーション モードが導入されました。このモードでは、ナビゲーション バー領域が排除され、アプリが全画面を使用して、よりリッチで没入感の高いエクスペリエンスを提供できるようになります。表示されるボタンではなく、エッジスワイプによって、おなじみの [戻る]、[ホーム]、[履歴] のナビゲーションを保持します。ジェスチャー ナビゲーションとシームレスに融合するには、エッジ ツー エッジを実装し、ナビゲーション バーの背後に描画して、没入感のあるエクスペリエンスを実現する必要があります。これを実装するには、アプリで setSystemUiVisibility() API を使用して全画面表示でレイアウトし、WindowInsets を適切に処理して、UI の重要な部分が隠れないようにする必要があります。今すぐアプリの最適化を開始しましょう。詳しくは、ブログ投稿シリーズをご覧ください。
設定パネル
新しい設定パネル API を使用して、アプリのコンテキストに直接、主要なシステム設定を表示できるようになりました。設定パネルは、インターネット接続、NFC、音量など、ユーザーが必要とする設定を表示するために呼び出すフローティング UI です。たとえば、ブラウザで、機内モード、Wi-Fi(近くのネットワークを含む)、モバイルデータなどの接続設定を含むパネルを表示できます。設定パネルを表示するには、新しい Settings.Panel アクションのいずれかを使用してインテントを起動します。
ショートカット共有
共有ショートカットを使用すると、共有がより迅速かつ簡単になり、ユーザーは別のアプリに直接移動してコンテンツを共有できます。デベロッパーは、コンテンツを添付してアプリ内の特定のアクティビティを起動する共有ターゲットを公開できます。これらは共有 UI でユーザーに表示されます。事前に公開されているため、起動時に共有 UI がすぐに読み込まれます。共有ショートカットはアプリ ショートカットに似ており、同じ ShortcutInfo API を使用します。この API は、ShareTarget AndroidX ライブラリでもサポートされています。詳しくは、サンプルアプリをご覧ください。
共有ショートカットを使用すると、ユーザーはコンテンツが添付されたアプリ内の特定のアクティビティに直接ジャンプできます。
ユーザーのプライバシー
Android 10 では、プラットフォームの保護強化からプライバシーを考慮した新機能まで、プライバシーが中心的な焦点となっています。Android 10 には、これまでのリリースをベースに、プライバシーを保護し、ユーザーがより細かく管理できるようにするための広範な変更が加えられています。システム UI が改善され、権限がより厳格になり、アプリが使用できるデータが制限されています。アプリでこれらをサポートする方法について詳しくは、プライバシーの変更をご覧ください。
ユーザーは、アプリがフォアグラウンドにあるときに位置情報へのアクセスを許可できるようになりました。
位置情報に対するユーザーの管理を強化 - 新しい権限オプションにより、ユーザーは位置情報をより細かく管理できるようになりました。アプリが実際に使用されている(フォアグラウンドで実行されている)間のみ、アプリに位置情報へのアクセスを許可できるようになりました。ほとんどのアプリでは、この方法で十分なレベルのアクセス権を付与できます。また、ユーザーにとっては、透明性と管理性が大幅に向上します。位置情報の変更について詳しくは、デベロッパー ガイドまたはブログ投稿をご覧ください。
ネットワーク スキャンでの位置情報の保護 - ネットワークをスキャンする API のほとんどは、すでにおおよその位置情報の利用許可を必要としています。Android 10 では、詳細な位置情報の利用許可を必須にすることで、これらの API の保護を強化しています。
デバイス トラッキングの防止 - アプリは、デバイスの IMEI、シリアル番号、同様の識別子など、トラッキングに使用される可能性のあるリセット不可能なデバイス識別子にアクセスできなくなりました。デフォルトでは、Wi-Fi ネットワークに接続されている場合、デバイスの MAC アドレスもランダム化されます。ユースケースに適した識別子を選択するうえで役立つベスト プラクティスと、こちらの詳細をご覧ください。
外部ストレージ内のユーザーデータの保護 - Android 10 では、外部ストレージ内のファイルと、その中のアプリデータをユーザーがより細かく管理できるように、いくつかの変更が導入されています。アプリは独自のファイルを非公開のサンドボックスに保存できますが、共有メディア ファイルにアクセスするには MediaStore を使用し、新しいダウンロード コレクション内の共有ファイルにアクセスするにはシステム ファイル選択ツールを使用する必要があります。詳しくはこちらをご覧ください。
不要な割り込みのブロック - Android 10 では、バックグラウンドからアプリが起動して予期せずフォアグラウンドに移動し、別のアプリからフォーカスを奪うことが防止されます。詳しくは、こちらをご覧ください。
セキュリティ
Android 10 では、暗号化、プラットフォームの強化、認証の進歩により、ユーザーのセキュリティを強化する多数の機能が導入されています。Android 10 のセキュリティ アップデートについて詳しくは、こちらをご覧ください。
ストレージの暗号化 - Android 10 を搭載するすべての対応デバイスは、ユーザーデータを暗号化する必要があります。これをより効率的に行うため、Android 10 には新しい暗号化モードである Adiantum が含まれています。
TLS 1.3 をデフォルトで有効化 - Android 10 では、TLS 1.3 もデフォルトで有効になっています。TLS 1.3 は TLS 標準のメジャー リビジョンであり、パフォーマンスの向上とセキュリティの強化が図られています。
プラットフォームの強化 - Android 10 では、プラットフォームのセキュリティ上重要な複数の領域が強化されています。
生体認証の改善 - Android 10 では、BiometricPrompt フレームワークが拡張され、顔などのパッシブ認証方法がサポートされるとともに、暗黙的および明示的な認証フローが追加されています。明示的なフローでは、ユーザーは認証中に TEE でトランザクションを明示的に確認する必要があります。暗黙的フローは、パッシブ認証を使用したトランザクションの軽量な代替手段として設計されています。Android 10 では、必要に応じてデバイス認証情報のフォールバックも改善されています。詳しくはこちらをご覧ください。
カメラとメディア
写真用の Dynamic Depth
アプリは、Dynamic Depth 画像をリクエストできるようになりました。この画像は、JPEG、奥行き関連の要素に関連する XMP メタデータ、同じファイルに埋め込まれた奥行きと信頼度のマップで構成されます。これにより、アプリで特殊なぼかしやボケのオプションを提供できます。ダイナミック デプスはエコシステム向けのオープン フォーマットであり、Google はパートナーと協力して、Android 10 以降を搭載したデバイスにこのフォーマットを導入しています。
Dynamic Depth 画像を使用すると、アプリで特殊なぼかしやボケのオプションを提供できます。
音声再生キャプチャ
音声を再生するアプリは、新しい音声再生キャプチャ API を使用して、他のアプリが音声ストリームをキャプチャできるようにすることができます。この API を使用すると、字幕やサブタイトルを有効にできるだけでなく、ゲームのライブ配信などの一般的なユースケースをサポートできます。この新機能は、プライバシーと著作権の保護を念頭に置いて構築されています。そのため、アプリが別のアプリの音声をキャプチャする機能は制限されており、アプリは音声ストリームをキャプチャできるかどうかを完全に制御できます。詳しくは、こちらのブログ投稿をご覧ください。
新しいオーディオ コーデックと動画コーデック
Android 10 では、オープンソースの動画コーデック AV1 のサポートが追加されています。これにより、メディア プロバイダは、より少ない帯域幅で高品質の動画コンテンツを Android デバイスにストリーミングできます。さらに、Android 10 は、Opus(音声と音楽のストリーミング用に最適化された、オープンでロイヤリティ フリーのコーデック)を使用した音声エンコードと、HDR10+(ハイ ダイナミック レンジ動画に対応したデバイス用)をサポートしています。MediaCodecInfo API では、Android デバイスの動画レンダリング機能を簡単に確認できます。任意のコーデックについて、サポートされているサイズとフレームレートのリストを取得できます。
Native MIDI API
C++ でオーディオ処理を行うアプリ向けに、Android 10 では、NDK を介して MIDI デバイスと通信するためのネイティブ MIDI API が導入されています。この API を使用すると、非ブロッキング読み取りを使用してオーディオ コールバック内で MIDI データを取得できるため、MIDI メッセージの低レイテンシ処理が可能になります。こちらのサンプルアプリとソースコードでお試しください。
指向性ズームマイク
Android 10 では、新しい MicrophoneDirection API を使用して、オーディオ キャプチャをより細かく制御できます。この API を使用すると、音声録音時にマイクの優先方向を指定できます。たとえば、ユーザーが「自撮り」動画を撮影している場合、音声録音用に前面マイクをリクエストできます(存在する場合)。さらに、この API では、ズーム可能なマイクを制御する標準化された方法が導入されており、アプリで録音フィールドのサイズを制御できます。
Vulkan Everywhere
Android 10 では、高パフォーマンスの 3D グラフィックを実現する低オーバーヘッドのクロス プラットフォーム API の実装により、Vulkan の影響が拡大しています。Vulkan 1.1 は、Android 10 以降を搭載したすべての 64 ビットデバイスで必須となり、すべての 32 ビットデバイスで推奨されるようになりました。エコシステムにおける Vulkan のサポートはすでに大きな勢いを見せており、Android N 以降を搭載したデバイスの 53% が Vulkan 1.0.3 以降をサポートしています。Android 10 の新しい要件により、来年はさらに普及が進むと予想されます。
接続
ピアツーピア接続とインターネット接続の向上
Wi-Fi スタックをリファクタリングして、プライバシーとパフォーマンスを改善しました。また、IoT デバイスの管理やインターネット接続の提案など、一般的なユースケースを改善しました。位置情報の利用許可は必要ありません。ネットワーク接続 API を使用すると、ローカル Wi-Fi 経由で IoT デバイスを簡単に管理できます。これは、構成、ダウンロード、印刷などのピアツーピア機能に役立ちます。ネットワーク提案 API を使用すると、アプリはインターネット接続に推奨される Wi-Fi ネットワークをユーザーに表示できます。
Wi-Fi パフォーマンス モード
アプリは、高パフォーマンス モードと低レイテンシ モードを有効にすることで、アダプティブ Wi-Fi をリクエストできるようになりました。これは、リアルタイム ゲーム、アクティブな音声通話、同様のユースケースなど、低レイテンシがユーザー エクスペリエンスにとって重要な場合に大きなメリットとなります。プラットフォームはデバイスのファームウェアと連携して、最小の消費電力で要件を満たします。新しいパフォーマンス モードを使用するには、WIFI_MODE_FULL_LOW_LATENCY または WIFI_MODE_FULL_HIGH_PERF を指定して WifiManager.WifiLock.createWifiLock() を呼び出します。これらのモードでは、プラットフォームはデバイス ファームウェアと連携して、最小の消費電力で要件を満たします。
Android の基盤強化
ART の最適化
ART ランタイムの改善により、アプリの起動が高速化し、メモリ消費量が削減され、動作がスムーズになります。デベロッパー側での作業は必要ありません。Google Play から提供される ART プロファイルを使用すると、アプリの実行前に ART でアプリの一部をプリコンパイルできます。実行時に、Android 10 は ART の同時コピー(CC)ガベージ コレクタに世代別ガベージ コレクションを追加します。これにより、時間と CPU の観点からガベージ コレクションの効率が向上し、ジャンクが減少し、ローエンド デバイスでのアプリの動作が改善されます。
このグラフは、Play プロファイルを使用してテストした特定のアプリの起動時間の改善率を示しています。
Neural Networks API 1.2
ARGMAX、ARGMIN、量子化 LSTM など、60 個の新しい演算が追加され、さまざまなパフォーマンスの最適化が行われました。これにより、オブジェクト検出や画像セグメンテーションなど、より幅広いモデルを高速化するための基盤が構築されます。Google は、ハードウェア ベンダーや TensorFlow などの一般的な機械学習フレームワークと協力して、NNAPI 1.2 のサポートの最適化と展開に取り組んでいます。
Thermal API
デバイスが熱くなりすぎると、CPU や GPU がスロットルされることがあり、アプリやゲームに予期しない影響を及ぼす可能性があります。Android 10 では、アプリやゲームは Thermal API を使用してデバイスの変化をモニタリングし、温度を正常に戻すためのアクションを実行できます。たとえば、ストリーミング アプリは解像度/ビットレートまたはネットワーク トラフィックを削減し、カメラアプリはフラッシュまたは集中的な画像拡張を無効にし、ゲームはフレームレートまたはポリゴン テッセレーションを削減できます。詳しくは、こちらをご覧ください。
公開 API による互換性
Android 10 では、非 SDK インターフェースに対する制限がさらに拡大され、アプリは徐々に公開 API のみを使用する方向に移行しています。現在使用しているインターフェースが制限されている場合は、代わりにそのインターフェース用の新しい公開 API をリクエストできます。移行を容易にし、アプリが動作しなくなるのを防ぐため、この制限はアプリが Android 10(API 29)をターゲットとしている場合にのみ有効になります。制限事項の詳細については、デベロッパー ガイドをご覧ください。
迅速な更新、最新のコード
Android 10 は、Project Treble を通じてより迅速にアップデートできるように構築されています。Project Treble は、Android と、デバイス メーカーやシリコン メーカーが提供する基盤となるデバイスコードとの間に、一貫性のあるテスト可能なインターフェースを提供します。Treble を利用することで、デバイス メーカーは Treble 準拠のデバイスに Android 10 をより迅速かつ低コストで導入できます。
Android 10 は、プロジェクト Mainline(正式名称は Google Play システム アップデート)をサポートする最初のリリースでもあります。これは、Android ユーザーを保護し、重要なコード変更を Google Play から直接配信してデバイスを最新の状態に保つための新しいテクノロジーです。Google Play システム アップデートにより、Android 10 以降を搭載したすべてのデバイスで、デバイス メーカーによる完全なシステム アップデートを必要とせずに、特定の内部コンポーネントをアップデートできます。
デベロッパーにとって、Android 10 のこれらのアップデートは、デバイス全体でプラットフォーム実装の一貫性を高めるのに役立ち、時間の経過とともに均一性が高まり、開発とテストのコストを削減できると期待されます。
始める
Android 10 のデベロッパー向けリソースについては、developer.android.com/10 をご覧ください。
