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