※本記事は、Nick Butcher氏、Ash Nohe氏、Daniel Galpin氏による動画「What's New in Android」の内容を基に作成されています。動画の詳細情報は https://www.youtube.com/watch?v=8PxuWdjESfg でご覧いただけます。本記事では、動画の内容を要約しております。なお、本記事の内容は登壇者の見解を正確に反映するよう努めていますが、要約や解釈による誤りがある可能性もありますので、正確な情報や文脈については、オリジナルの動画をご視聴いただくことをお勧めいたします。
本動画は、Android開発における最新動向を紹介するセッションです。Jetpack Composeによる新しいUIの進化や開発者生産性の向上、さまざまなフォームファクターへの対応方法をはじめ、Android 17のパフォーマンス改善、メディア・カメラアプリ向けの新機能、デスクトップおよび大画面アプリ向けの新機能、そしてエージェンティックな自動化によってユーザーがより多くのことをより速く達成できるようにする取り組みについて解説しています。
1. イントロダクション
1.1 番組概要とテーマ
Daniel Galpin: 皆さん、ようこそ「What's New in Android」へ。私たちのAndroid開発における最新かつ最良の変化をご案内するツアーへようこそ、という気持ちでお話しします。今回は、皆さんが心地よく、パフォーマンスが高く、そしてインテリジェントなアプリを構築できるようにするための取り組みをいくつかご紹介したいと思います。特に強調したいのは、Androidがオペレーティングシステムからインテリジェントシステムへと進化しているという点です。この変化を活用することで、皆さんのアプリはより先回りして助けてくれる、状況を理解した体験を提供できるようになります。
Ash Nohe: それはまさに必要としていたものですね。私からはパフォーマンスの話に踏み込んでいきます。もはや周知の事実ですが、デバイスのメモリの重要性がこれまで以上に高まってきています。Android 17ではメモリ最適化において大きく前進しただけでなく、今年後半に予定されているより厳しいメモリ要件に備えていただけるよう、ツールとAPIのサポートも提供していきます。あわせて、メディア、カメラ、GPU機能の改善についても取り上げますし、XRからカー、プレミアムラップトップに至るまで拡大しているエコシステムに向けて、アダプティブなアプリを構築する方法もカバーします。
Nick Butcher: ただ、まずは私たちが推奨しているネイティブスタック、つまりKotlin、Jetpack、そして私のお気に入りであるJetpack Composeの最新アップデートからお話しさせてください。このスタックは、最もパフォーマンスが高く、デバイスに最適化された体験を皆さんに届けてくれるものです。Android Studioで開発する場合でも、Android CLIを通じて開発する場合でも、新しいプラットフォームAPIのような最新のアップデートに直接アクセスでき、それを優れたツールでサポートしています。ですから、このスタックを使えば、新しいフォームファクターや新しいプラットフォームAPIといった新たな機会にもきちんと備えることができるのです。
2. ネイティブ開発スタックとCompose First
2.1 Compose First宣言とViewの位置づけ
Nick Butcher: ここ5年間、私たちはJetpack Composeの開発に力を注いできました。皆さんが多様なAndroidデバイス上で動作する美しいUIを構築するために必要な機能、パフォーマンス、そしてツールをすべて提供するためです。そして皆さんからは、Composeで作業する方がはるかに生産性が高いという声をいただいています。Composeはもはや、Android UIを構築するための標準へと成熟したと言えます。
Nick Butcher: 私たちは、これからのAndroid UIはすべてJetpack Composeで構築されるべきだと考えています。これを私たちは「Compose First」と呼んでいます。つまり今後、すべてのAPI、ライブラリ、ツール、そしてガイダンスをComposeで提供していくということです。そして、Composeが置き換えていくView系のコンポーネントについては、今後メンテナンスモードに入ると考えています。ただ、ご安心ください。View系コンポーネントを非推奨にしたり削除したりする計画は今のところありません。ただし、新機能が追加されることはなく、今後は重大なバグ修正のみが提供されることになります。これはFragment、RecyclerView、Material View Componentsといった、View系のライブラリについても同様です。私たちはこれらをすでに完成されたものと捉えており、重大なバグ修正のみを行いながら、開発努力のすべてをJetpack Composeに注いでいきます。
Nick Butcher: 私たちは、Android UIはすべてComposeで構築されるべきだと考えていますし、既存のUIについても、触れる機会があるたびにComposeへ変換していくことをおすすめします。それによってComposeの多くの恩恵を受けることができるからです。
2.2 XML→Compose変換ツール
Nick Butcher: 変換作業を支援するために、私たちはすでにXMLをComposeへ変換するためのスキルをリリースしていますが、それに加えて、Android Studio向けの新しいツールにも取り組んでいます。これらのツールは、皆さんのAndroidプロジェクトに関する知識を活用してエージェントを拡張し、UIの変換を支援するものです。具体的には、レイアウトが参照しているスタイルやリソースを決定論的に理解したり、変換前後を比較して良好な変換ができているかを確認するためのスクリーンショットテストを作成したりといったことができます。これらのツールは近いうちにAndroid Studioに搭載される予定です。詳しくは、この後に予定されている「What's New in DevTools」のセッションをご覧ください。
2.3 Compose 1.10/1.11とStyles API
Nick Butcher: 最近リリースされたCompose 1.10と1.11では、実に多くの新機能が追加されました。retain APIや、より決定論的なテスト用API、共有要素トランジションの改善、そして新しいテキストフィールド機能などです。中でも私が特に気に入っている大きな変更の一つが、Compose 1.11で実験的機能として追加された新しいStyles APIです。皆さんから、コンポーネントについてもっとカスタマイズしたいという声をいただいていました。Styles APIは、スタイル可能な属性の標準化されたセットを定義するもので、Composeの振る舞いと見た目を分離するのに役立ちます。
Nick Butcher: これによって、コンポーネントのカスタマイズがこれまでよりずっと簡単になると考えています。Stylesは異なる状態を標準でサポートしており、状態変化をアニメーションさせることさえできるため、より応答性の高いコンポーネントを構築できます。そして、初めから高いパフォーマンスを発揮するように設計されており、再コンポーズを自動的に最小化してくれます。現在、私たちはStylesの開発を進めているところであり、今後さらに作り込んでいく上で皆さんからのフィードバックをぜひいただきたいと思っています。また、将来的なリリースでMaterial ComponentsにもStylesのサポートを追加する計画です。より詳しく知りたい方は、Style systemに関するセッションをぜひご覧ください。
2.4 性能ベンチマークとTikTok事例
Nick Butcher: Composeは、皆さんのアプリをよりスタイリッシュにするだけでなく、パフォーマンスの向上にも貢献します。最新リリースであるCompose 1.11では、スクロールのジャンクや起動速度、さらにはViewとComposeを混在させたハイブリッドUIといった主要なCUJ(クリティカルユーザージャーニー)において、これまで以上に良好なパフォーマンスが確認されています。これを裏付けるために、私たちはViewとComposeの実際のアプリパフォーマンスを比較する新しいベンチマーク一式を公開します。これらはオープンソースですので、皆さん自身で確認し、結果を検証していただくことができます。そして何より嬉しいのは、Composeのバージョンをアップグレードするだけで、これらの恩恵の多くを得られるという点です。ですから、必ず最新のリリースを使用するようにしてください。
Nick Butcher: これはベンチマークだけの話ではなく、実際のプロダクションでも確認されています。実際、TikTokからは、エクスプレッシブなCompose APIのおかげで多くの画面をComposeで書き直すことができたという報告を受けています。そしてこれにより、コードの保守性が向上しただけでなく、パフォーマンスの改善も見られたとのことです。具体的には、ページロード時間が最大20%から30%削減され、あるケースでは実に78%もの高速化が確認されたとのことでした。
3. アプリ最適化とメモリ管理
3.1 R8強化と導入事例
Nick Butcher: パフォーマンスの話を続けますが、R8はアプリを効率化する上で欠かせないツールです。未使用のコードやリソースを取り除き、起動時やランタイムのパフォーマンスを最適化するようコードを書き換えてくれます。ただ、皆さんからは、R8を使ってどれだけの効果を得られているのかが分かりにくいという声をいただいていました。例えばGrabは、900万行規模のコードベースにR8を有効化したことで大きな効果を得ました。その結果、ANRが25%削減され、APKサイズも16%削減されました。さらに、ベースラインプロファイルとスタートアッププロファイルの見直しと組み合わせることで、起動時間も27%削減できたということです。
Nick Butcher: このようにR8は非常に優れたツールですが、その効果を最大限に引き出せているかが分かりにくいという課題がありました。そこで私たちは、最適化の機会を見つけやすくするために、Play Consoleに新しいR8インサイトを導入します。これらは本日から順次展開を開始し、今年後半にはより広く展開される予定です。そして、こうしたインサイトをもとにアクションを起こしていただけるよう、R8設定アナライザーもリリースしました。これはレポートを実行し、最適化・難読化・リソース縮小の効果をスコアとして示してくれるツールで、アプリをさらに縮小できる機会を見つける手助けをしてくれます。例えば、R8の最適化を妨げている可能性のある、過度に広範なkeepルールを見つけるのに役立ちます。
Nick Butcher: 実際、Tinderはすでにこれまでも投資してR8を活用し、多くの恩恵を受けていましたが、設定アナライザーを使うことで、問題のあるkeepルールを一つ見つけることができました。このたった一つのkeepルールを削除しただけで、APKサイズが28%削減され、さらにANRやコールドスタート率も改善されたということです。また、私たちはAIエージェントがR8を扱えるよう支援する新しいスキルも公開しています。このスキルは設定アナライザーと連携して動作し、R8を最大限に活用できるよう手助けしてくれます。ただ、R8はあくまで出発点にすぎません。ハードウェアコストの上昇やRAM供給の制約といった現状が、デバイスエコシステム全体においてメモリ管理の重要性を高める方向へと変化を迫っているのです。
3.2 メモリ制約の背景とAndroid 17の制限
Nick Butcher: アプリのメモリフットプリントを最適化することは、あらゆるフォームファクターにわたって最良のパフォーマンスを実現するために欠かせません。
Daniel Galpin: そして、次世代のデバイスがAndroidユーザーの期待するプレミアムな体験を提供し続けられるように、私たちは皆さんと協力しながらAndroidのメモリ管理方法を最適化していきます。
Nick Butcher: 今後1年間で、メモリ効率の良いアプリをより簡単に構築できるよう、新しいツールを展開していきます。Play Consoleでは実用的なメモリテレメトリを、Android Studioではよりスマートなデバッグツールを確認できるようになる予定です。これらのアップデートは、今年後半に予定されているより厳格なメモリ管理へのプラットフォームの変化に、皆さんが先んじて備えられるよう助けるものです。
Daniel Galpin: 不正な挙動をするアプリがユーザー体験を著しく損なうことを防ぐという目的のもと、Android 17ではメモリ制限が導入されます。これらの制限は、主にメモリリークのような暴走するリソース問題を抱えたアプリに影響を与えるよう設計されています。もし皆さんのアプリのセッションがこのアプリメモリ制限の影響を実際に受けた場合、ApplicationExitInfoに「memory limiter」という文字列が含まれる説明が記録されます。
3.3 デバッグ・プロファイリング強化
Nick Butcher: 過剰なメモリ使用のデバッグを支援するために、Android 17ではProfilingManager APIにanomalyまたはout of memoryタイプのプロファイリングトリガーが追加されました。これを使うことで、アプリ固有のヒープダンプを取得し、メモリの問題を診断・修正する手助けになります。Android 17ではさらに、cold startおよびexcessive CPUタイプの新しいプロファイリングトリガーも導入されています。そして、LeakCanaryがAndroid Studio Profilerに統合されたことで、メモリリークの追跡がより速くなり、Geminiにリークの説明や修正案を求めることもできるようになりました。以上が、皆さんのアプリのメモリ管理を最適化するための取り組みの概要です。詳細については、こちらのセッションをぜひご覧ください。
3.4 プラットフォーム側の性能改善
Daniel Galpin: プラットフォーム自体もメモリ使用量の削減に向けて取り組んでいます。例えばAndroid 17では、カスタムビューを使った通知内の画像サイズを制限し、一定のしきい値を超える場合には画像を取り除くようになりました。ここで少し、私自身のこだわりの話をさせてください。ガベージコレクションについては、それだけで一つのセッションができるくらい語れるのですが、ARTでは、より頻度が高く、リソース消費の少ないヤング世代のガベージコレクションが導入されます。これにより、メモリ管理とパフォーマンスの両方が改善されます。そして何より嬉しいのは、これがAndroid 17に限らず、Google Play system updatesを通じて10億台を超える既存のデバイスにも展開されるという点です。
Daniel Galpin: 正直なところ、私自身、Androidでリフレクションを使ってstatic finalフィールドを変更できるということすら知りませんでした。そして今後、Android 17をターゲットにすると、これができなくなります。これは一見すると制約のように感じられるかもしれませんが、実はこれによってARTがより積極的にパフォーマンス最適化を適用できるようになるため、望ましい変化なのです。もし皆さんのアプリやその依存関係がこの挙動に依存している場合は、必ずテストを行うようにしてください。
Daniel Galpin: そしてもう一つ、信じられないかもしれませんが、私が本当に興奮しているのが、Android 17で導入される新しいAndroid MessageQueueのロックフリー実装です。これは本当にすごい機能です。UIのジャンクを削減しつつ、高競合のシナリオを大幅に高速化します。この裏には興味深いコンピュータサイエンス的な工夫があり、特に競合の激しいケースでは最大5000倍もの高速化が実現されています。こうした数字を聞いて興奮しない人がいるでしょうか。
4. GPU・グラフィックス性能
4.1 VulkanとANGLE移行
Daniel Galpin: GPUパフォーマンスとシステムの電力効率の向上を目指し、AndroidはネイティブGPU APIとしてVulkanをサポートしています。Vulkanは、最大限の制御を求める高性能なミドルウェアやゲームエンジンによってすでに直接利用されています。そして、OpenGLやWebGPUといった他のAPIは、このVulkanの上にレイヤーとして構築されています。Android 17では、より多くのデバイスがVulkanを利用してすべてのグラフィックスコマンドを処理することで、その恩恵を受けられるようになります。もし皆さんのアプリやゲームがまだOpenGLを使用している場合は、ANGLEがOpenGLをVulkanへ変換してくれます。Vulkanへの移行に備えて、今のうちにANGLE上でのテストを行っておくことをお勧めします。
Daniel Galpin: 私たちはまた、Vulkanへのアクセス手段も増やしています。アプリがGPUパフォーマンスを活用できるように、ART やWebといったマネージドコード環境向けに設計された最新のGPU APIであるWebGPU向けに、イディオマティックなKotlin APIを構築しました。これは従来の標準よりも高機能で、可搬性が高く、簡潔です。利用を始めるには、JetpackのWebGPU依存関係をプロジェクトに追加するだけです。例えば、近日公開予定のAdobe Premiereアプリは、WebGPUとJetpack Media3 Transformerを組み合わせて、YouTube Shorts向けのクールなテンプレートやエフェクトを使った動画の作成・投稿に活用しています。
4.2 Performance Analyzerと導入事例
Nick Butcher: GPU、CPU、メモリ、バッテリーなどを最大限に活用していただくために、新しいAndroid Performance Analyzerは、システム全体のインサイトを一つの統合されたツールチェーンにまとめました。これによりパフォーマンスのデバッグ作業を大幅に簡素化できます。このアナライザーは高速化を意識して設計されており、従来のGPU Inspectorと比較してトレースの読み込みとレンダリングが最大26倍高速でありながら、幅広いGPU互換性も維持しています。スタンドアロンのユーティリティとしても、Studio Profiler内でも動作します。
Nick Butcher: そして、私たちのパートナーの中にも、この新しいPerformance Analyzerを使って大きな成果を上げている企業があります。Netmarbleは「The Seven Deadly Sins: Origin」において、GPU使用率を最大90%削減しました。また、The Forgeは主要なVulkan API使用時のフレームあたりのCPU使用量を最大50%削減しています。
5. AIによるインテリジェントシステム
5.1 プロアクティブAI機能
Daniel Galpin: パフォーマンスは、皆さんのAndroidユーザーを喜ばせるための一つの方法にすぎません。私たちは、ユーザーのニーズを実際に先回りして満たすような、新しくヘルプフルなAI駆動の体験を提供するプラットフォームを構築しています。これは皆さんにとって、単により多くの深いアプリエンゲージメントを生む新しい発見サーフェスが増えるということだけでなく、ユーザーがより良く、より安全なアプリ体験を得られるようになるということでもあります。そして私たちは、これをスタックのあらゆる層で行っています。これこそが、Androidがオペレーティングシステムからインテリジェントシステムへと進化しているという意味なのです。
Daniel Galpin: 皆さんのアプリは、さまざまな形でこの変化の中心に位置することになります。まず、KotlinとComposeで構築されたネイティブUIに対するプラットフォームの深い理解を活用し、プロアクティブなヘルプによってユーザーとアプリの関わり方をどのように高められるかについてお話しします。その一例が、私たちの次世代オートフィルです。これは、皆さんが現在すでに提供しているヒントをそのまま使いながら、アプリのフォーム完了率を高めるように機能します。また、Pixel上では、人気のメッセージングアプリからの通知に含まれる詐欺のパターンをAIで識別し、ユーザーが潜在的な脅威に反応する前に警告することで、ユーザーを保護する手助けもできるようになっています。
Daniel Galpin: 昨年Pixel 10で導入されたMagic Cueは、アプリ内で役立つ情報やアクションを表示する機能ですが、これはユーザーがアプリのコンテンツに関わり、発見するための新しい場所となっています。ご覧の通り、この機能はSnapchatのような、より多くのアプリへと展開が進んでいます。アプリをプロアクティブなAI機能で改善することは素晴らしいことですが、私たちはさらにエージェンティックな時代に突入しつつあります。エージェントやアシスタントがユーザーに代わってタスクを完了する時代であり、皆さんのアプリもそこに参加することができます。
5.2 AppFunctionsとエージェント連携
Daniel Galpin: そもそもAndroidは、写真付きのメールを作成するといった作業のために、複数のアプリが連携してタスクを共有できるよう常に設計されてきました。しかし今では、Geminiのようなエージェントが複数のアプリをまたいだオーケストレーターとして機能できるようになっています。Geminiはアプリの画面を解析し、タスクを進めながらナビゲートすることができ、取引のような機微な場面ではユーザーに確認を求めるために立ち止まります。そして、ほとんどの場合、皆さんの側でコードを書く必要は一切ありません。ユーザーは、ほかのタスクをこなしている間に、Androidがバックグラウンドの仮想ディスプレイ上でアプリを実行してくれます。この体験は今後さらに広く展開していく予定です。
Daniel Galpin: ただし、皆さんのアプリが公開する機能については、新しいAPIであるAppFunctionsを組み込むことで、皆さん自身がコントロールすることができます。AppFunctionsは、AndroidプラットフォームAPIであると同時にJetpackライブラリでもあり、Android MCP連携の構築を簡素化してくれます。これにより、皆さんのアプリはオンデバイスのMCPサーバーのように振る舞い、Geminiのようなクライアントエージェントやアシスタントが利用できるツールとして機能を提供できるようになります。GeminiとのAppFunctions連携は、現在信頼されたテスターによるプライベートプレビューの段階にありますが、今から皆さんのアプリをAppFunctionsを使って準備しておくことができます。もし皆さんが、データ層とプレゼンテーション層を明確に分離するという私たちの推奨に沿ってアプリを構築しているのであれば、AppFunctionsの追加は非常にシンプルに行えます。それでは、実際にどのようなものか見ていきましょう。
Daniel Galpin: ここにあるのは、私たちが自動的にプロジェクトへAppFunctionsを追加できるスキルです。アプリがしっかりと設計されていればいるほどよく機能しますが、ほとんどのケースでうまく動作します。今回はNow in Androidというニュースアグリゲーションアプリを使ってお見せします。このアプリはComposeで構築されており、Compose Firstを体現したものになっています。ここでエージェントに与えたのは非常にシンプルなプロンプトで、「トピックとニュース記事へのアクセスを提供し、ユーザーがフォローできるようにするAppFunctionsを作成してください」という内容です。このプロンプトによってスキルが起動し、プロジェクトに組み込まれ、多くの作業が自動的に行われます。SDKの更新、依存関係の追加、メタデータの作成が行われ、最終的にはトピック一覧の取得、ニュース記事一覧の取得、トピックのフォロー、記事のブックマークという4つの有用なAppFunctionsが実装されました。これは実際に生成されたコードであり、プロジェクトに手を加えることなく、Android Studio上でそのまま動作しています。しかも、これは最初の一回でうまく動作したものであり、それは常にありがたいことです。生成されたコードは、コンテキストを伴って動作する通常のsuspend関数にAppFunctionsのアノテーションを付けただけの、非常に自然な形になっています。返却されるデータモデルも合理的なものになっており、KDocを使ってドキュメント化されているため、人間にとって理解しやすいのと同じように、これを利用するエージェントにとっても理解しやすいものになります。
Daniel Galpin: では、これをどのようにテストするのかという点についてですが、私たちはそのためのエージェントもすでに作成しています。実行中のデバイスに切り替え、テストエージェントを使ってNow in Androidが公開している関数を確認してみます。トピック一覧を取得する関数を実行すると、きれいなJSONが返ってきて、その中のID番号3がComposeであることが分かります。これをニュース記事一覧の取得に利用します。パラメータをテストエージェント上で直接追加して実行することもでき、これはすべて実際にその場で動作しているものであり、あらかじめ用意された演出ではありません。次に、クラウド上で稼働している通常のGeminiインスタンスと連携させ、「Compose UI Firstに関する記事を見せて」と依頼してみます。Now in Androidアプリに接続し、Geminiは適切な検索APIが用意されていなかったにもかかわらず、トピックとすべての記事を取得した上で、該当する記事を提示するという作業を自ら行ってくれます。さらに、「そのCompose UI First の記事をNick Butcherに送って」と依頼すると、AppFunctionsを利用したチャットアプリと連携し、Nickが誰であるかを特定した上で、記事を送信するところまでを実演することができました。これは、AppFunctionsを利用した2つの異なるアプリがエージェントと連携して動作する様子を示すものです。皆さんも、こうしたツールを今日から試すことができますし、AppFunctionsを最初に本番環境へ展開するアプリの一つになるためのアーリーアクセスプログラムにも参加いただけます。
5.3 オンデバイス/クラウドAI活用
Daniel Galpin: プロアクティブな機能や自動化は良いスタート地点ですが、私たちはAIの力をAndroid体験のあらゆる部分に取り込みたいと考えています。それは、オンデバイスとサーバーサイドの両方の実装を通じて、皆さんのアプリが直接AIを活用できるよう支援するということです。Gemini Nanoのようなオンデバイスモデルを使用すれば、機微なユーザーデータをローカルに保持でき、接続がない状態でも動作し、取引ごとのコストも発生しません。Nanoは現在1億4000万台を超えるデバイスで利用可能になっており、オープンなGemmaモデルをベースにしています。今年後半には、Apacheライセンスで提供されるGemma 4をベースにしたNano 4がフラッグシップデバイス向けに登場する予定です。多言語対応の改善やバッテリー効率の向上、新しい高度な機能も特徴となっています。皆さんは、AI Core Developer Previewを使ってこうした新機能を今すぐ試すことができ、ML Kitのprompt APIを使って開発を始めることもできます。
Daniel Galpin: すでに人気のアプリの中には、既存のNanoモデルでprompt APIを活用しているものもあります。例えばWebexは、短いチャットメッセージの翻訳にこれを利用しています。また、Photoshopでは、インポートやエクスポートを利用してレイヤーや画像の名前を自動的にリネームする機能をテストしており、これは私自身がずっと欲しかった機能なので、とても嬉しく思っています。もちろん、クラウドベースのソリューションを活用したい場面もあります。ABCmouseは、Google CloudとGeminiを組み合わせて、子どもが助けを必要としていることを検知した際にパーソナライズされたサポートを提供するクローズドループ機能を構築しました。クラウド上に実装されているため、エントリーレベルの子ども向けタブレットでも動作します。
Daniel Galpin: Geminiのクラウドモデルは高度な機能を備えており、Firebase AI Logicを通じて本番環境のAndroidアプリで直接利用することができます。もしクラウドベースのエージェントを構築したい場合には、A2UIプロトコルを使うことで、クライアント側にUIを表示させることが可能になります。そしてAndroid上では、A2UIを表示するための新しいJetpack Composeレンダラーが近日中に登場する予定です。
6. アクセシビリティとプライバシー・セキュリティ
6.1 アクセシビリティ強化
Ash Nohe: こうした体験はすべてのユーザーを対象とするべきものです。皆さんのアプリがより多くのユーザーに届くように、アプリをアクセシブルにするための3つのポイントをご紹介します。まず一つ目は、Composeにおけるジェスチャーを使ったコンテンツのスケーリングに関する新しいガイダンスを公開したことです。
Daniel Galpin: 私のような年老いた目を持つ人間としては、これをぜひ皆さんのアプリ全体に実装していただけることに、あらかじめ感謝を伝えておきたいと思います。
Ash Nohe: 二つ目は、Talkbackが画像のcomposableに対して自動的に画像の説明を生成できるようになったことです。とはいえ、ベストプラクティスとしては、引き続き皆さん自身でコンテンツの説明を定義することをお勧めします。この機能は、ユーザー生成コンテンツのように、皆さん自身で説明を定義できない場合に特に役立ちます。
Daniel Galpin: アクセシビリティの分野でAIがこうした良い成果を生み出しているのを見るのは、素晴らしいことですね。
Ash Nohe: その通りです。そして三つ目は、新しいAccessibility Scannerです。これまで以上に、コントラストの低さやタップ領域の小ささといった、アプリによくある問題を検出する性能が向上しています。
Daniel Galpin: ぜひ皆さん、使ってみてください。お願いします。
Ash Nohe: 同感です。ありがとうございます、Dan。詳しくは、こちらのセッションをご覧ください。
6.2 プライバシー・セキュリティ強化
Daniel Galpin: プライバシーとセキュリティは、優れたAndroid体験を支える不可欠な基盤であり、ユーザーが最も個人的なデータを預けるために必要な信頼を醸成する役割を果たしています。そのため、Android 17では、皆さんのアプリが対応しておくべき数多くの新しいプライバシー・セキュリティ機能が追加されています。例えば、アプリがネイティブライブラリを動的に読み込む際には、それらが読み取り専用になるようにする対応や、SMSのワンタイムパスワード、いわゆるOTPを保護する機能が挙げられます。この機能では、ほとんどのアプリがOTPを含むメッセージへアクセスできる時間を3時間に制限します。ただし、ここが面白いところですが、Credential Managerが確認済みのメールアドレスや電話番号の検証機能を提供するようになったことで、そもそもOTPの利用自体を避けられる可能性があります。また、Credential Managerの従来からのクリエーション機能により、アプリは既存のパスワードユーザーに対して自動的にパスキーを作成できるようになります。パスキーは、ユーザーが opt-in した場合に限り、ユーザーの認証情報プロバイダーに保存されます。
Daniel Galpin: Health Connectは、ユーザーが自身のプライベートな健康データをコントロールできるようにする仕組みですが、今年からは、アプリが別のアプリから役立つデータを同期するようユーザーにリクエストし、アプリ間のセットアップを簡素化できるようになりました。CompanionDeviceManagerは、デバイスの関連付けや近距離の権限リクエストに対して、統一されたダイアログを提供し、複数回のポップアップ表示をなくします。ここには、医療機器やフィットネストラッカー向けの新しいプロファイルも含まれており、効率的な権限リクエストを支援します。私たちは全体として、セキュリティのユーザー体験を簡素化しながら、実際にはすべてをより安全にすることを目指しています。その一例として、Android 17をターゲットとするアプリは、スマートホームデバイスやキャスト受信機のようなローカルエリアネットワーク上のデバイスを検出・接続するために、ACCESS_LOCAL_NETWORK権限を新たに要求する必要があります。
Ash Nohe: ただ、少量のデータへアクセスしたいだけなのに、広範な機微情報の権限をリクエストしたくない場合はどうすればよいのでしょうか。
Daniel Galpin: ご安心ください、プログラマーの皆さん。プライバシー保護ピッカーを利用することができます。
Ash Nohe: 例えば、Google Castに対応したアプリは、ACCESS_LOCAL_NETWORK権限をリクエストする代わりに、Output Switcherを使って特定のストリーミングデバイスへのアクセスを得ることができます。新しいEyeDropper APIを使えば、カラーピッカーを備えたアプリは、広範な画面キャプチャ権限をリクエストすることなく、画面上の任意のピクセルの色を取得できます。そして、Contacts Pickerを使用すれば、連絡先リスト全体へのアクセスを許可する広範なREAD_CONTACTS権限をリクエストすることなく、特定のフィールドや特定の連絡先へアクセスできます。最後に、Photo Pickerは以前から広範なメディアアクセスを削減するために存在していましたが、縦長のグリッドビューに対応したことで、より多くの場面で活用できるようになりました。
7. コアUX・カメラ・メディア機能
7.1 コアUX強化
Ash Nohe: こうしたピッカーはコア体験を改善するための一つの方法ですが、ここではさらに統合を進めているもう一つの方法をご紹介します。昨年、私たちは一部の限られたスタイル向けにLive Update通知を発表しました。今年は、健康・フィットネスアプリ、タイマー、旅行アプリ向けに、メトリックスタイルのテンプレートを追加しました。また、セマンティックカラーAPIを使うことで、Live Update内で状態を色として伝えることができるようになります。私たちはまた、WhatsAppやMeetのようなアプリからの通話ログを、標準の電話アプリに集約する、より統一された通話履歴の提供にも取り組んでいます。そして今年後半には、私たちのかわいらしいけれどもフラットな絵文字数千種類を、より豊かなものへとアップデートします。皆さんのアプリでこれを利用するために必要なことは、システムの絵文字を使うことだけです。最後に、Picture in Pictureには、動画再生、通話、ナビゲーション向けの新しいJetpackライブラリが用意されました。CameraXと組み合わせて使用すれば、ユーザーはソーシャルメディア用のコンテンツを録画しながら、台本を読むといった使い方ができるようになります。
7.2 カメラAI強化とデモ
Ash Nohe: カメラについてお話しすると、私たちはAIを活用したエフェクトのためのオンデバイスAPIを構築しました。これにより、皆さんはユーザーに対して、伝えたいストーリーを語るための高度なツールを提供できるようになります。例えば、Instagramの Editsアプリは、オンデバイスの画像・動画強化ライブラリを使って動画の品質を改善しています。このライブラリがサンプルアプリの中で、実際の画像に対してどのように動作するかをデモでご覧いただきましょう。
Daniel Galpin: それでは、よろしくお願いします。
Ash Nohe: 私は、母が反抗期だった頃に撮られたこの写真がとても気に入っています。ただ、古い写真であるため、粒子が粗く、ぼやけてしまっています。そこでAI Enhanceを押してみると、オンデバイスのライブラリが、目元のようなディテールがより鮮明になった、よりくっきりとした画像を返してくれます。大まかな流れとしては、まずAPIに対してアップスケーリングのようなエフェクトを使うよう指示します。ほかにも、DeblurとDenoise、トーンマッピングを選択することもできましたし、モードとしてはEnhancement Mode Bitmapを使用しています。あるいはSurfaceViewを渡すという選択肢もありました。そして、ユーザーが選択を終えた後、processBitmapAsyncを呼び出すことで、指定したビットマップ、今回で言えば母の写真に対して、それらのエフェクトを実際に適用します。
Ash Nohe: 続けて、今度はカラーの別の画像を選んでみましょう。すべてオンデバイスで実行されるため、サーバーコストは一切かかりませんし、機内モードの状態でも利用できます、ご覧のとおりです。この画像から分かるように、トーンマッピングによって画像がより明るくなり、アップスケーリングによってここにある文字「PB」もよりシャープになっています。
7.3 音声・映像基盤の改善
Daniel Galpin: おっと、待って待って待って。予期しないバックグラウンド音声ですね。私はこれが好きではありませんし、ユーザーも好きではありません。Android 17におけるいくつかの改善の一つとして、オーディオAPIの利用をフォアグラウンドアプリと、while-in-use権限を持つフォアグラウンドサービスに制限することで、こうした気まずい音声の瞬間を減らすことができます。バックグラウンドでの音声再生を管理するためにMediaSessionServiceを使用することで、この影響を軽減する助けになります。そして、皆さんからご要望いただいていた通り、exact alarmはこの制限から除外されています。
Daniel Galpin: そのほかのAndroid 17のメディア関連の改善としては、新しいプロ向けの画像・動画フォーマットへの対応、HE-AACによる音声ストリーミングと音声品質の改善、そしてベンダー定義の拡張機能を含むカメラの機能強化が挙げられます。次世代のEclipsa Videoが正式にAndroid 17でローンチされ、予測できない光量環境やレンダリングの問題に対応する高品質なHDR再生を実現します。そして、ExoPlayerがこれをすぐに使える形でサポートします。こうした改善やその他の多くの機能をJetpack、Media3、CameraXのAPIを通じてどのように活用できるかについては、こちらのセッションをぜひご覧ください。
8. マルチデバイス・アダプティブエコシステム
8.1 大画面・適応型UI
Nick Butcher: ありがとうございます。Androidはマルチデバイスのエコシステムです。ユーザーはスマートフォン、フォルダブル、タブレット、ウォッチ、ヘッドセット、カー、そしてテレビの間を行き来しており、自分たちのアプリがそれについてきてくれることを期待しています。そして皆さんのアプリも、それに応えるべきです。現在、大画面ユーザーは5億8000万人を超えており、彼らはアプリにより多くの時間を費やし、より深く関わっています。彼らはまた、画面の向きやアスペクト比に関わらず、画面全体を活用できることも期待しています。そのため、Android 17では、大画面デバイス上でこうした属性を無視するようになり、皆さんはこれをオプトアウトできなくなります。ですので、Navigation 3やComposeのアダプティブライブラリを使って、リッチでアダプティブなアプリを構築してください。
Nick Butcher: これらのライブラリは面倒な処理を代わりに引き受けてくれ、よくあるシナリオを標準で網羅しています。例えば、Navigation 3ライブラリのバージョン1.1では最近、シーンデコレーターが追加されました。これにより、ナビゲーションレールやバーといったUI要素を、NavEntryのレベルではなくシーンのレベルで追加できるようになり、グローバルなナビゲーションUIの表示・非表示のようなものをコントロールする際に非常に役立ちます。また、Navigation 3について皆さんからいただいていたディープリンクへの対応についても、バージョン1.2のアルファ版でちょうど実現できたことをお伝えできて嬉しく思います。私たちはさらに、アダプティブなアプリ構築を支援するための3つの新しいCompose APIにも取り組んでいます。まず一つ目は、画面サイズやポインターの精度、キーボードの有無といったデバイスの機能を簡単にクエリできるようにするMediaQueryです。これにより、こうしたシグナルを利用してUIを適応させることができます。次に、利用可能なサイズに応じて要素を伸縮・折り返しさせるための、非常に柔軟なレイアウトである新しいFlexBox実装をリリースします。これも、さまざまなデバイスに合わせてサイズを変えられるコンポーネントを構築する助けになります。そして最後に、コンテンツを規則的なグリッド構造へ分割・配置するための新しいレイアウトであるGridがあります。これは特に、画面サイズに応じてコンテンツを再配置したい場合のルートレベルのレイアウトとして、非常に役立ちます。FlexBox、MediaQuery、GridはいずれもCompose 1.11における実験的なAPIですので、ぜひ試していただき、フィードバックをお寄せください。
8.2 TVとマルチデバイス連携
Nick Butcher: そして大画面と言えば、家の中で最も大きな画面であるテレビのことも忘れないでください。ポインターリモートがGoogle TVに登場し、インターフェース内をすばやくナビゲートできるようになります。ドキュメントを確認し、最新のTVライブラリを使用して、皆さんのアプリがこの変化に備えられるようにしてください。
Ash Nohe: マルチデバイスのエコシステムにおいて、ユーザーは自分たちのデバイスを行き来しながら、目の前のタスクに最適なものを選んでいます。Continue Onは、ユーザーが一つのデバイスでタスクを開始し、それを別のデバイスへ引き継ぐことを可能にします。
Nick Butcher: Bubblesですか。Android 11からありましたよね。
Ash Nohe: ええ、そうです。ただ、今ではさらに多くのBubblesが使えるようになりました。あらゆるアプリがバブル化できるようになり、もはやチャットアプリだけのものではありません。そして大画面デバイスでは、バブルを管理するための新しいBubble barが利用できます。ウィジェットも、ユーザーがマルチタスクを行うためのもう一つの方法であり、ユーザーの目に触れる機会が多いことから、ユーザーロイヤルティの向上に役立つ可能性があります。例えばGratitudeは、ウィジェットを利用しているユーザーの間で25%高い継続率を確認しました。そして、ウィジェットはもはや小さなスマートフォンのホーム画面だけのものではありません。フォルダブル、タブレットなどにも表示されるようになっており、特に今年からは、数百万台に及ぶ対応車両にもウィジェットを届けられるよう準備を進めています。そしてTilesは、Jetpack Glanceの下でWear Widgetsへと進化していきます。ですので、開発者としての重要なポイントは、Jetpack Glanceを使ってアダプティブなエコシステム向けのウィジェットを構築することです。Glanceで構築する際には、直接的にも間接的にも、Remote Composeという新しいライブラリに出会うことになるかもしれません。このライブラリは、ここでご覧いただいているスナップスクロールのような、表現力豊かなウィジェットアニメーションを可能にします。詳しくは、アダプティブなウィジェットやアプリの構築に関するこれらのセッションをご覧ください。
8.3 Wear OS
Ash Nohe: それでは、Wearについてもう少しお話ししましょう。今年、私たちはWear OS 7をリリースします。プラットフォームの改善のおかげで、バッテリー寿命が最大10%向上することが期待でき、ユーザーは皆さんのアプリでより多くのことができるようになります。まず、スマートフォンからウォッチへ自動的に拡張される機能から見ていきましょう。ユーザーが皆さんのアプリでスマートフォン上のメディアセッションを開始すると、システムの再生コントロールをウォッチ上に表示させることを自動的に選択できます。そして、ウォッチはペアリングされたスマートフォンのメディア出力をコントロールすることもでき、例えばスピーカーからヘッドフォンへ切り替えるといったことが可能です。ウォッチメーカーは、スマートフォンからウォッチへライブ通知をブリッジすることもできます。これも皆さんの側で何か作業をする必要は一切ありません。ただし、もしWear OSアプリをお持ちであれば、ローカルのライブ通知を作成することも選択でき、これはユーザーがスマートフォンを持たずに歩き回っている場合に役立ちます。そして最後に、皆さんの側で一切の労力をかけることなく、モバイルUIオートメーションが、DoorDashからの注文のような複雑なタスクをハンズフリーで処理してくれます。
Ash Nohe: もしWear OSアプリをお持ちであれば、Geminiのようなエージェントと連携してAppFunctionsを作成し、Samsung Healthでワークアウトを開始するといったアプリ内フローを呼び出すこともできます。ここで、Wear OSアプリをお持ちの方向けに、さらに3つの機能をご紹介します。ウィジェットについてはすでに触れましたが、私たちはWear Workout Trackerも今年後半にGoogle Play servicesの中でリリースする予定です。これにより、Runkeeperのようなアプリが、メトリクスやメディアコントロールのためにこれを利用できるようになります。Compose for Wear OS 1.6はNavigation 3に対応しており、新しいローカルアンビエントモードマネージャーは、デバイスが省電力状態にある間のコンテンツ管理を助けてくれます。Wear OS 7のCanaryエミュレーターはすでにAndroid Studioで利用可能ですので、これらの新機能を実際に試していただけます。詳しくは、私たちのブログとドキュメントをご覧ください。
8.4 Android XR
Ash Nohe: それでは、もう一つのウェアラブルのフォームファクターについてお話ししましょう。もし皆さんがすでにAndroid向けにアダプティブな開発を行っているのであれば、すでにXRヘッドセット向けの開発も行っていることになりますし、皆さんの既存のアプリはワイヤードXRグラスへとそのまま拡張されます。こうしたデバイスでは、ユーザーを仮想世界へ連れて行くような没入型の体験を作り出すことができます。一方で、日常的なインタラクションのデザインを好む場合には、オーディオグラスやディスプレイグラスを使った拡張型の体験を作ることもできます。この場合、ユーザーの意識は現実世界に留まったまま、視覚的・聴覚的なオーバーレイによって体験が強化されます。私たちはAndroid XR SDKを通じて、没入型・拡張型どちらの体験についても改善を加えてきました。そして、基盤となるJetpack XR SDKのライブラリは、近くベータ版になる予定です。
Ash Nohe: それでは、4つの新しい改善点を見ていきましょう。まず一つ目は、大きな3Dモデルをアプリのバイナリに含めて配布するのではなく、ジオメトリをリアルタイムに生成することで、アプリサイズを小さく保ちながら没入型のワールドを構築できるようになることです。二つ目は、迷子になっていませんか、というものです。もう迷うことはありません。私たちはワイヤードXRグラス向けに、Geospatial APIを使ったナビゲーションを導入するからです。三つ目は、GodotとUnreal Engineへの対応を拡大したことです。シーン理解、ライト推定、フェイストラッキングなど、Android XRのベンダー拡張機能をサポートしています。四つ目は、ディスプレイグラス向けの視覚的・インタラクション上の制約に合わせてデザインするためのcomposableであるJetpack Compose Glimmerを改善したことです。垂直方向のリストやスタックといった新しいインタラクティブコンポーネントを追加しており、Glimmerをアプリに簡単に追加できる新しいスキルも用意しています。私たちがご紹介できたのは、まだ表面的な部分にすぎませんので、詳しくはこれらのセッションをご覧いただき、ワイヤードXRグラスやディスプレイグラス向けにハードウェアやリソース、助成金を得られるXR Developer Catalystプログラムにもぜひ応募してください。
8.5 車載アプリ開発
Ash Nohe: それでは、皆さんが身につけるグラスの話から、皆さんをそこへ連れて行ってくれる車の話へと切り替えていきましょう。私たちは、Android Autoとcars with Google built-inという2つのシステム間の親和性を高めることで、車載アプリの構築を簡素化してきました。ここでは、両方のプラットフォームに向けて同時に開発する方法をご紹介します。まず一つ目は、運転に最適化されたUIのために、最新のCar App Libraryテンプレートを使用することです。今年からは、Android Auto上でメディアアプリテンプレートを使用できるだけでなく、cars with Google built-in上でもGoogle Maps SDKをMaps with Content Templateとともに使用できるようになります。Car App Library 1.9では、両プラットフォーム向けに10種類の新しい柔軟なコンポーネントとレイアウトを追加します。拡張されたチップ、展開可能なヘッダー、プログレスバーなどをご覧いただけます。こうしたコンポーネントを使うことで、Amazon MusicやSpotifyのようなアプリは、自分たちのブランドを表現しつつ、他のフォームファクターの機能を車の中に取り入れることができます。多くのメディアアプリ開発者がすでにCar App Library 1.9を使って開発しており、皆さんもアーリーアクセスに登録することで参加できます。最後に、Android showの中でお伝えした通り、私たちはパーク中から運転中への遷移を両システムでサポートする新しいCar App Library APIをリリースする計画であり、両プラットフォームで同等の動画体験を構築する方法もお示しする予定です。例えば、ユーザーはパーク中にHD動画を視聴できるようになります。詳しくはドキュメントをご覧ください。
8.6 デスクトップ体験
Nick Butcher: それでは、いよいよ終わりに近づいてきました。最後に一つ、皆さんにお伝えしたいことがあります。Androidスタックの一部を使って構築された次世代のChromeOSが登場します。その名は「Googlebook」で、これまで以上に優れた形で皆さんのAndroidアプリを動作させてくれます。ですから、皆さんのアダプティブなアプリにおいて、デスクトップ体験のサポートについても検討してみてください。例えば、Bandlab、PowerDirector、Notabilityといったアプリは、アダプティブなレイアウトにキーボードショートカット、ドラッグ&ドロップ、カスタムポインターといった要素を追加し、デスクトップ体験を向上させています。アダプティブな開発の方法や、デスクトップクラスのアプリを作る方法については、これらのセッションをご覧ください。
9. まとめ
9.1 クロージング
Daniel Galpin: これで、皆さんが素晴らしいアプリを構築するための、さまざまな方法をご紹介してきました。まずお話ししたのは、Androidがオペレーティングシステムからインテリジェントシステムへと進化しており、皆さんのアプリがこの変革の中心にあるということです。私たちはまた、Android 17を通じて未来にも備えています。最新のメディアやGPUの標準への対応、そしてメモリ最適化とシステム全体のパフォーマンスへの注力によって、あらゆるデバイス上でアプリが高速かつ応答性の高いものになるようにしています。
Ash Nohe: 私たちは、SMSワンタイムパスワード保護やプライバシー保護ピッカーといった機能を通じて、ユーザーの信頼を育む手助けをしています。そして、ユーザーがマルチデバイスのエコシステムを行き来する中で、皆さんのアプリはアダプティブなAPIとNavigation 3によって、ユーザーがいる場所でユーザーと出会うことができます。
Nick Butcher: そして最後に、私たちは正式に「Compose First」となりました。私たちはすべての新しいAPI、ライブラリ、ツール、そしてガイダンスを、最も生産性の高いツールキットであるComposeに集中させています。これにより、皆さんは素晴らしいアプリを、より速く、より簡単に構築できるようになります。こうして私たちが協力することで、アプリエコシステム全体が、Androidユーザーに高品質な体験を届けられるようにしていきたいと考えています。ぜひ、それぞれのトピックについて詳しく知るために、ディープダイブセッションをご覧ください。
Nick Butcher: そして、本日ご参加いただき、ありがとうございました。