mcpField
R
react-native-tv-best-practices

react-native-tv-best-practices

github.com/callstackincubator開発1.7k2.3k 回インストール3 週間前に更新
リポジトリ

react-native-tv-best-practices について

テレビ向け React Native アプリのレビューガイドです。対象の TV スタックに応じて、リモコン操作、フォーカス、レイアウト、性能、再生、アクセシビリティ、セットアップ、テスト、リリースを確認できます。

主な機能

  1. 01セットアップ助言の前に TV スタックを特定
  2. 02フォーカス移動と D-pad 操作の確認
  3. 03TV レイアウトと 10 フィート視認性の評価
  4. 04性能、再生、DRM の問題確認
  5. 05アクセシビリティ、テスト、リリースの確認

活用シーン

  1. 01フォーカス消失や戻る操作の不具合調査
  2. 02TV 画面の可読性とセーフエリアの確認
  3. 03再生または DRM の障害調査
  4. 04TV 専用テストとリリース確認の計画

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/callstackincubator/agent-skills --skill react-native-tv-best-practices

インストール後、Claude Code で/react-native-tv-best-practicesを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

agents/
openai.yaml
references/
a11y-checklist.md
a11y-implementation.md
a11y-overview.md
design-10foot.md
design-color.md
design-layout.md
design-typography.md
focus-management.md
focus-performance.md
nav-directional.md
nav-keyboard.md
nav-patterns.md
perf-animations.md
perf-lists.md
perf-memory.md
perf-network.md
perf-overview.md
release-cicd.md
setup-architecture.md
setup-cross-platform.md
setup-getting-started.md
test-e2e.md
test-javascript.md
test-strategy.md
video-debugging.md
video-players.md
video-streaming.md

詳細

React Native TV のベストプラクティス

概要

Apple TV、Android TV、Fire TV、Amazon Vega/Kepler、Tizen や webOS などの Web ベースの TV ターゲットで動作する、React Native ベースのアプリ向けの TV 固有のレビューガイダンスです。

このスキルは TV 固有の差分に限って使用してください。対象は、リモート入力、フォーカスエンジン、10 フィート UI、プラットフォームのパッケージング、再生/DRM、低メモリの TV ハードウェア、TV のアクセシビリティです。一般的な React Native のパフォーマンスやアーキテクチャの問題については、react-native-best-practices を使用してください。

スキルの形式

参照ファイルは、トピック別のプレフィックスでグループ化されています。

  • focus-*:フォーカスエンジン、フォーカスガイド、フォーカスイベントのパフォーマンス
  • nav-*:D-pad ナビゲーション、戻る/メニューの動作、キーボード/検索入力
  • design-*:10 フィート向けのタイポグラフィ、レイアウト、色、フォーカスの視認性
  • perf-*:TV ハードウェア上の起動、メモリ、リスト、アニメーション、ネットワークの制約
  • video-*:再生アーキテクチャ、DRM/プロトコルの選択、デバッグ
  • a11y-*:TV のアクセシビリティ実装と監査チェック
  • setup-*:スタックの検出、セットアップ、アーキテクチャ、クロスプラットフォームの動作
  • test-* および release-*:テストカバレッジ、E2E、CI/リリースのワークフロー

適用する場面

アプリが TV プラットフォームを対象とし、次の作業を行う場合にこのスキルを適用してください。

  • フォーカス移動、フォーカスの視認性、フォーカスの復元、リモート/D-pad 入力
  • TV レイアウトの読みやすさ、オーバースキャン/セーフエリア、10 フィート UI の情報密度
  • TV プレーヤーのコントロール、マニフェスト、DRM、デコーダーのサポート、再生エラー
  • 低メモリの TV ハードウェアでのパフォーマンス。特に、動画や大きなカルーセルがある場合
  • スクリーンリーダー、字幕、フォーカス順序、リモコンのみでの操作に関する TV アクセシビリティ
  • react-native-tvos、Expo TV、Amazon Vega/Kepler、Tizen、webOS のプラットフォームセットアップ

始める前に — TV スタックを特定する

このスキルは複数の TV スタックを対象としています。セットアップの問題を指摘する前に、アプリがどのスタックを対象としているか検出してください。 Vega/Kepler や Web ベースの TV アプリに react-native-tvos、tvOS Podfile、Android TV マニフェストを必須とすると、誤検出につながります。

スタック検出方法セットアップの要件
react-native-tvos(Apple TV、Android TV、Fire TV)package.json 内の "react-native": "npm:react-native-tvos@…"tvOS Podfile(platform :tvos);Android TV の leanback/LEANBACK_LAUNCHER マニフェストエントリー;TV エミュレーター/シミュレーター
Expo + react-native-tvos上記に加えて、app.json に @react-native-tvos/config-tvEXPO_TV=1 での prebuild;react-native-tvos のバージョンは Expo SDK と一致している必要があります;TV では利用できない Expo の機能/ライブラリもあります
Amazon Vega/KeplerVega/Kepler SDK とツール(@amazon-devices/* の依存関係、Kepler マニフェスト);react-native-tvos はなしAmazon の Vega/Kepler ツールチェーン。react-native-tvos、tvOS Podfile、Android TV マニフェストは適用されません
Web ベースの TV(Tizen、webOS)Web バンドラー(Rsbuild/webpack)とプラットフォームパッケージング;空間ナビゲーションライブラリプラットフォーム SDK によるパッケージング;フォーカス制御には @noriginmedia/norigin-spatial-navigation を使用

フォーカス、10 フィート向けデザイン、パフォーマンス、アクセシビリティ、プレーヤーに関するガイダンスは、これらすべてに適用されます。スタックごとに異なるのは、セットアップ/ビルドの要件だけです。

レビュールール

  • セットアップに関するアドバイスの前に、対象のスタックを特定します。
  • 命令的なフォーカス呼び出しや広範な nextFocus* マップよりも、自然なフォーカス順序とフォーカスガイドを優先します。
  • フォーカスの喪失、フォーカスが見えない状態、戻る/メニュー操作の不具合は、ナビゲーションのバグとして扱います。
  • 視覚的な細部を調整する前に、テレビから離れた距離での読みやすさ、安全領域、フォーカス状態を確認します。
  • パフォーマンス改善の完了を報告する前に、サポート対象の中で最も性能の低いテレビデバイスでプロファイリングします。
  • 再生の失敗は、マニフェスト要求、DRMライセンス交換、デコーダーの機能、プレーヤーの状態、React UI コントロールの各レイヤーに分けて調査します。

優先度順のガイドライン

優先度カテゴリー影響度プレフィックス
1フォーカスとDパッドナビゲーションCRITICALfocus-*, nav-*
2リスト、アニメーション、入力のパフォーマンスCRITICALperf-*
3再生とDRMの失敗HIGHvideo-*
4画面から離れた距離での読みやすさとレイアウトHIGHdesign-*
5テレビのアクセシビリティHIGHa11y-*
6スタックのセットアップ、テスト、リリースMEDIUMsetup-*, test-*, release-*

クイックリファレンス

  1. パッケージファイル、マニフェスト、ネイティブフォルダー、プラットフォームツールからテレビのスタックを特定します。
  2. マウスやタッチ操作を前提とせず、リモコンまたはDパッドでの操作経路を使ってナビゲーションを再現します。
  3. フォーカスされた要素が常に表示され、到達可能であり、モーダルやルートの切り替え後に復元されることを確認します。
  4. React コントロールを変更する前に、ネットワーク/DRMレイヤーから上位に向かって再生の失敗を確認します。
  5. サポート対象の中で最も性能の低いテレビを使って、リスト、アニメーション、メモリー、起動時の処理を測定します。

参考資料

フォーカスとナビゲーション
ファイル影響度説明
focus-management.mdCRITICALフォーカスエンジン、フォーカスガイド、nextFocus*、フォーカスの復元
focus-performance.mdCRITICALフォーカスイベント処理によるフレーム落ちの回避
nav-directional.mdCRITICALテレビプラットフォーム全般における方向ナビゲーションのルール
nav-patterns.mdCRITICALグローバル/ローカルナビゲーション、モーダル、タブ、戻る操作
nav-keyboard.mdMEDIUMリモコンでの検索とテキスト入力
デザイン
ファイル影響度説明
design-10foot.mdHIGH画面から離れた距離でのレビューのヒューリスティクス
design-typography.mdHIGHテレビ向けの文字サイズと読みやすさ
design-layout.mdHIGH安全領域、間隔、カルーセル、フォーカス用の余白
design-color.mdMEDIUMコントラストとテレビディスプレイの色に関する制約
パフォーマンス
ファイル影響度説明
perf-overview.mdHIGHテレビのパフォーマンス目標とプロファイリングの順序
perf-lists.mdCRITICAL仮想化された行とポスター画像の多いリスト
perf-animations.mdCRITICALフォーカスとトランジションのアニメーション性能
perf-memory.mdHIGHメモリーの少ないテレビでのクラッシュと画像/動画による負荷
perf-network.mdHIGHリモート入力、リクエストの停止、ネットワークの耐障害性
動画、アクセシビリティ、セットアップ、テスト
ファイル影響度説明
video-streaming.mdHIGHTV プラットフォームのプロトコル/DRM の選択
video-players.mdHIGHプレーヤーの選択肢とカスタムコントロール
video-debugging.mdHIGHマニフェスト、DRM、コーデック、再生のデバッグ
a11y-overview.mdMEDIUMTV 固有のアクセシビリティの違い
a11y-implementation.mdHIGHアクセシブルなラベル、ロール、ライブリージョン、フォーカス
a11y-checklist.mdMEDIUMリリース前のアクセシビリティ監査チェックリスト
setup-getting-started.mdMEDIUMreact-native-tvos と Expo TV のセットアップ
setup-cross-platform.mdMEDIUMプラットフォームの検出とクロスプラットフォームでの注意点
setup-architecture.mdMEDIUMコード共有とプロジェクト構成
test-strategy.mdMEDIUMTV テストの範囲とカバレッジの分担
test-javascript.mdMEDIUMJS レベルのリモート/フォーカステストヘルパー
test-e2e.mdMEDIUMAppium と TV の E2E カバレッジ
release-cicd.mdMEDIUMCI、ビルドフィンガープリント、リリースチェック

問題 → スキルの対応表

症状まず確認する場所
"フォーカスが誤った要素に移動する"focus-management.md → デバッグセクション
"リストをスクロールするとアプリがフリーズする"perf-lists.md → 仮想化
"Fire TV でアニメーションがカクつく"perf-animations.md → ネイティブドライバー
"TV で文字が小さすぎる"design-typography.md → 最小サイズ
"動画を再生できない/DRM エラーが発生する"video-streaming.md → DRM セクション
"スクリーンリーダーが要素を読み飛ばす"a11y-implementation.md → ロールとラベル
"戻るボタンが正しく動作しない"nav-patterns.md → 戻るナビゲーション
"キーボードがコンテンツに重なる"nav-keyboard.md → 組み込みとカスタム
"アプリの起動に時間がかかりすぎる"perf-overview.md → 起動時間
"画像が原因でメモリクラッシュが発生する"perf-memory.md → 画像の最適化
"CI パイプラインに何時間もかかる"release-cicd.md → フィンガープリント
"プラットフォーム間でコードを共有する方法"setup-architecture.md → コード共有

セキュリティ(TV 固有)

一般的な依存関係/入力の衛生管理は、他の RN アプリと同様に適用されます。TV 固有の違いとして、特に注意すべき点は次のとおりです。

  • FairPlay/Widevine/PlayReady のキーをクライアントコードに埋め込まないでください。ライセンスサーバーを信頼境界として扱い、DRM トークンはサーバーから発行してください。

コメント