ユーザーも開発者も悩ませない TV アプリ開発 - Compose の内部実装から学ぶフォーカス制御

Android TV アプリの UX において重要なのが、リモコン操作による「直感的なフォーカス移動」と「それに伴う適切なスクロール」です。これらは視認性や操作感に直結し、アプリの UX に大きく影響します。従来の Leanback ライブラリはこの点を自動でカバーしていましたが、命令的な UI 描画による状態管理の複雑さや、独自の実装パターンによる学習コストが課題でした。 2024 年に stable となった Compose for TV の登場により、これらの課題は解決可能となり、宣言的な UI 描画の恩恵を TV アプリでも享受できるようになりました。 一方で、Compose for TV では Leanback ほど「ユーザーの期待に沿ったフォーカス・スクロール制御」を暗黙的には提供していません。加えて、その仕組みを理解しないまま制御をしようとすると、適切な API を使っても意図通りに動作しないこともあります。このため、直感的な UX を実現するには Compose 内部で作用しているフォーカスやスクロールの仕組みを理解し、適切に制御する必要があります。 ここで特徴的なのは、モバイル向けと同様の Composable を用いて開発できる一方で、その内部では TV 向けの専用ロジックが動作しているという点です。例えば、フォーカス移動に伴う自動スクロールはモバイルと同様に Modifier.verticalScroll を使って実現できますが、LazyColumn の userScrollEnabled パラメーターとは連動されません。さらに、Modifier.verticalScroll はスクロール機能にとどまらず、フォーカス制御の挙動にも副次的ながら重要な影響を与えています。 こうした Compose for TV 特有の挙動を踏まえつつ、本セッションでは以下の内容を扱います: ・Compose for TV のフォーカス移動やスクロールに関する内部ロジック ・挙動をカスタマイズするために必要な概念や仕組み ・自然な UX を実現するための挙動制御に関する具体的な実装例 これにより、開発者が迷うことなく Compose for TV を用いた TV アプリ開発に取り組めるようにし、開発時のデバッグ時間も大幅に削減できる状態を目指します。

  • taked137 Android Developer at AbemaTV, Inc


概要

  • 日時 2025.09.11 / 14:20 ~ 15:00 (40min)
  • 場所 Jellyfish
  • 言語 日本語

対象者

- Jetpack Compose を用いて Mobile アプリを開発した経験があり、Compose for TV との違いを知りたい方 - Jetpack Compose の基礎知識があり、Leanback から Compose for TV への移行を検討している方 - Compose for TV を利用した開発中に、フォーカス制御処理でつまづいている方

Android is a trademark of Google LLC. The Android robot is reproduced or modified from work created and shared by Google and used according to terms described in the Creative Commons 3.0 Attribution License. Android、Google Play、Google Play ロゴは、Google Inc. の商標です。
これまでのDroidKaigi

© 2014- DroidKaigi Committee