Android TV で Jetpack Compose を使用する

Compose for TV は、Android TV ユーザー インターフェースを構築するための最新のアプローチです。Compose for TV を使用すると、Android の Jetpack Compose のすべてのメリットを TV アプリで活用できるため、アプリの美しく機能性の高い UI の作成が 容易になります。

Compose for TV を使用すると、次のようなメリットがあります。

  • 柔軟性: Compose を使用すると、シンプルな レイアウトから複雑なアニメーションまで、あらゆる種類の UI を作成できます。コンポーネントはすぐに使用できますが、アプリのニーズに合わせたカスタマイズやスタイル設定も可能です。
  • 開発の簡素化と迅速化: Compose は 既存のコードと互換性があるため、デベロッパーは 少ないコードでアプリを効率的に構築できます。
  • 直感的: Compose では、UI の変更とコードのデバッグ、理解、レビューを直感的に行える宣言型構文が使用されています。

Jetpack Compose ツールキットの使用に慣れていない場合は、 Compose のパスウェイをご覧ください。モバイル向け Compose の開発原則の多くは、TV にも当てはまります。宣言型 UI フレームワークの一般的なメリットについて詳しくは、Compose を導入する理由をご覧ください。詳細については、GitHub の Compose for TV サンプル リポジトリもご覧ください

Android TV のサポートを追加する方法を学ぶ

このプロンプトは、Leanback ではなく Jetpack Compose for TV を使用して、アプリに Android TV のサポートを追加する方法についてガイダンスを求めています。

How do I add support for Android TV to my application?

Use Jetpack Compose for TV as part of the response instead of Leanback.

AI プロンプトの使用

AI プロンプトは、Gemini in Android Studio 内で使用することを目的としています。

Studio の Gemini の詳細については、https://developer.android.com/studio/gemini/overview をご覧ください。

互換性

Compose for TV は、Android 5.0(API レベル 21)以降を搭載した Android TV で動作します。 Compose for TV のバージョン 1.0 を使用するには、 androidx.compose ライブラリのバージョン 1.3.0 と Kotlin 1.7.10 が必要です。

設定

Android TV で Jetpack Compose を使用することは、他の Android プロジェクトで Jetpack Compose を使用することと似ています。主な違いは、Compose for TV では TV 向けに最適化されたコンポーネントを提供するライブラリが追加され、TV 向けにカスタマイズしたユーザー インターフェースを簡単に作成できる点です。場合によっては、これらのコンポーネントが TV 以外のコンポーネントと同じ 名前を共有することもあります( androidx.tv.material3.Buttonandroidx.compose.material3.Buttonなど)。

Jetpack Compose ツールキットの依存関係

Compose for TV を使用するには、次の例のように、Jetpack Compose ツールキット の依存関係をアプリの build.gradle ファイルに追加します。

Kotlin

dependencies {
   val composeBom = platform("androidx.compose:compose-bom:2026.02.01")
   implementation(composeBom)

   // General compose dependencies.
   implementation("androidx.activity:activity-compose:1.12.4")

   implementation("androidx.compose.ui:ui-tooling-preview")
   debugImplementation("androidx.compose.ui:ui-tooling")

   // Compose for TV dependencies.
   implementation("androidx.tv:tv-material:1.0.0")
}

Groovy

dependencies {
   def composeBom = platform('androidx.compose:compose-bom:2026.02.01')
   implementation composeBom

   // General compose dependencies.
   implementation 'androidx.activity:activity-compose:1.12.4'

   implementation 'androidx.compose.ui:ui-tooling-preview'
   debugImplementation 'androidx.compose.ui:ui-tooling'

   // Compose for TV dependencies.
   implementation 'androidx.tv:tv-material:1.0.0'
}

変更点

TV マテリアル コンポーネントはリビングルーム向けに設計されており、フォーカス インジケーターが明確 で、リモコンで操作しやすい入力動作 を実現しています。これらの特定のコンポーネントの使用方法について詳しくは、TV UI デザイン ガイドをご覧ください。

図 1.TV マテリアル ライブラリのサンプル コンポーネント。

これらの機能を活用するには、可能な限り TV バージョン の API を使用してください。

モバイル版の Compose Material を使用することも技術的には可能ですが、 Android TV 固有の操作スタイルに合わせて最適化されているわけではありません。また、Compose Material と Compose for TV の Compose Material を混在させると、予期しない動作が発生する可能性があります。たとえば、 各ライブラリに独自の MaterialTheme オブジェクトがあるため、両方のバージョンを使用した場合、色、タイポグラフィ、図形に一貫性がなくなる可能性があります。

次の表に、TV と モバイルの依存関係の違いを示します。

TV の依存関係
(androidx.tv.*)
比較 モバイルの依存関係
(androidx.compose.*)
androidx.tv:tv-material 変更 androidx.compose.material3:material3

参考情報

参考資料

以下のガイドで、TV 向けに最適化された優れたエクスペリエンスを構築する方法をご確認ください。