Vega SDKリリースノート
Vega SDKの評価をお聞かせください。
Vega SDKバージョン0.22.3
Vega SDKバージョン0.22.3は、KeplerMediaDescriptorTMを対象としたセキュリティパッチです。また、VDA接続モードを切り替える機能も追加されています。
今回のリリースでは、Vega Fire TV StickにOS 1.1(1401010009820)が必要です。これはVega SDK v0.22.3と互換性があります。デバイスのソフトウェアのバージョンは、[My Fire TV] > [バージョン情報] に移動することで確認できます。
機能改善
VDA接続モードの切り替え
USBモードとネットワークモードの切り替えおよびVDAのリスニングポートの構成を、デバイスから直接行えるようになりました。この改善により、TCP/IPモードでロックアウトされても、工場出荷時の設定にリセットする必要がなくなります。
解決済みの問題
バージョン0.22.3では、KeplerMediaDescriptorからreact-native-tscodegen-typesの依存関係が削除され、logkitty@0.6.1のセキュリティ脆弱性が排除されています。
この修正を適用するには、KeplerMediaDescriptorTMのnpmパッケージをバージョン1.1.15にアップデートしてください。コードを変更する必要はありません。
パッケージのアップデート
バージョン0.22.3には、以下のnpmパッケージのアップデートが含まれています。
KeplerMediaDescriptorTM- セキュリティ脆弱性の修正(1.1.15にはnpmのバージョンアップが含まれます)
Vega SDKバージョン0.22.2
Vega SDKバージョン0.22.2には、新しいW3C Media v2モジュール(IW3cmedia_2)によるメディア再生の機能改善が含まれています。
今回のリリースでは、Vega Fire TV StickにOS 1.1(1001010012520)が必要です。これはVega SDK v0.22.2と互換性があります。デバイスのソフトウェアのバージョンは、[My Fire TV] > [バージョン情報] に移動することで確認できます。
機能改善
W3C Media v2による再生機能の改善
OS 1.1(1001010012520)以降で動作するアプリで、新しいW3C Media APIモジュール(IW3cmedia_2)を利用できるようになりました。@amzn/react-native-w3cmedia v2.2.11パッケージには、以下の更新が含まれています。
onCaptionViewCreatedコールバックの冗長な呼び出しによって再生パフォーマンスが低下することがなくなりました。- 垂直方向と水平方向のアンカーポイントによるキャプションの配置が復元されました。
TrackEventAPI(TextTrack、VideoTrack、AudioTrack)がW3C仕様と一致するようになり、標準的な動作に依存するアプリとの相互運用性が向上しました。- MPEG-2ビデオの再生がコーデックに追加され、再生エラーを引き起こしていたギャップが解消されました。
- 新しい
pitchMultiplier機能により、HTTPライブストリーミング(HLS)ビデオの再生中にリアルタイムでオーディオのピッチを調整できるようになりました。この機能は、カラオケ機能や、ピッチのゆがみのない再生速度の調整機能を実装するために使用できます。
@amzn/react-native-w3cmedia v2.2.11を使用するアプリは、OS 1.1(1001010012520)以降で実行する必要があります。
MCPサーバー機能の拡張
Amazon Devices Builder Tools MCPサーバー(以前の@amazon-devices/vega-devtools-mcp、現在は@amazon-devices/amazon-devices-buildertools-mcp)が更新され、追加機能が組み込まれました。Vega開発者ツールの正式な仕様の定義がナレッジベースドキュメントに追加され、AI支援診断の精度と関連性が向上しました。CLIの仕様検出が強化され、より適切なチームコンテキストをAI支援診断に提供するために、指標とKIAテレメトリの統合が追加されました。
機能改善を有効にするには、npmパッケージをアップデートしてください。
解決済みの問題
カルーセルコンポーネントの互換性の復元
@amazon-devices/vega-carousel v0.1.3またはv0.1.4を使用するアプリでは、すべてのカルーセルカードに「Unimplemented Error」というメッセージが表示されていました。これは、com.amazon.keplerscript.carousel.soネイティブライブラリが、LNSの強制によってブロックされるライブラリをリンクしていたことが原因です。カルーセルコンポーネントの最新パッケージである@amazon-devices/vega-carousel v0.1.5では、LNS準拠の問題が修正されています。
修正を適用するには、npmパッケージをアップデートしてください。最新のパッケージにアップデートできない場合は、暫定的な回避策があります。一時的な手段として、LNSの許可リストエントリを使用できます。ただし、これは根本原因の修正ではなく、LNS強制を一時回避するものです。長期的な互換性を確保するために、できるだけ早くv0.1.5に移行してください。
メディアパッケージからのセキュリティ脆弱性の排除
@amzn/react-native-w3cmediaから、logkitty@0.6.1のセキュリティ脆弱性が除去されました。
この修正により、@amzn/react-native-w3cmediaからreact-native-tscodegen-typesの依存関係が削除され、脆弱な依存関係チェーンが排除されます。修正を適用するには、最新バージョンのパッケージにアップデートしてください。
パッケージのアップデート
バージョン0.22.2には、以下のnpmパッケージのアップデートが含まれています。
@amazon-devices/amazon-devices-buildertools-mcp→ 0.1.24 - MCPサーバーの強化@amazon-devices/vega-carousel→ 0.1.5以降(release-3.0ブランチでは0.1.8)- LNS準拠の修正@amzn/react-native-w3cmedia→ 2.2.21 - W3C Media v2とセキュリティ修正(注:まだ@amzn/スコープのままで、@amazon-devices/には変更されていません)@amzn/keplermediadescriptor→ 1.1.15 - メディア記述子の更新(注:まだ@amzn/スコープのままです)
Vega SDKバージョン0.22.1
Vega SDKバージョン0.22.1には、強化された暗号化機能を提供するKeplerCryptoTMバージョン2.1.2が含まれています。
今回のリリースでは、Vega Fire TV StickにOS 1.1(1001010012520)が必要です。これはVega SDK v0.22.1と互換性があります。デバイスのソフトウェアのバージョンは、[My Fire TV] > [バージョン情報] に移動することで確認できます。
機能改善
AI支援開発ツールの導入
このパッチには、v0.22の初期リリースに含まれていなかったAmazon Devices Builder Tools MCPサーバーが追加されています。このツールは、AI支援によるパフォーマンス診断を提供し、パフォーマンスの問題をよりすばやく特定して解決するために役立ちます。サーバーには、最初のフレームまでの時間と描画完了までの時間の指標を分析する機能、Vega固有のデバッグシナリオ向けに選定されたプロンプトライブラリ、コンテキスト対応のCLIの仕様検出が含まれています。
MCPサーバーはnpmでインストールできます。npm install @amazon-devices/amazon-devices-buildertools-mcpを実行してください。MCPサーバーを使用するためにOSをアップデートする必要はありません。
OSと互換性のある暗号化ライブラリの復元
KeplerCryptoTMバージョン2.1.2がv0.22の初期リリースから戻され、SDKに復元されました。
この復元には互換性にかかわる重要な変更は含まれていないため、アプリで既に以前のバージョンのKeplerCryptoTMを使用している場合、コードを変更する必要はありません。ただし、このバージョンのライブラリを使用するには、アプリをOS 1.1(1001010012520)以降で実行する必要があります。
解決済みの問題
開発環境の安定性の向上
このリリースでは、ESLintプラグインのインストールエラーが解消されています。開発者は、このエラーのために新しいプロジェクトにコード品質ツールをセットアップすることができませんでした。問題の原因はwebpackの構成にありました。古い依存関係の参照が削除され、@amazon-devices/eslint-plugin-keplerをインストールできるようになりました。
このリリースでは、開発中のUSBデバイスの接続性が向上しています。以前には、特にCharles Proxyを使用したり、アプリのデプロイを繰り返し実行したり、Metroデバッグモードで作業したりしているときに、USBで接続された物理デバイスが応答しなくなることがありました。
ユーザーがBluetoothのゲームコントローラーをペアリングしようとすると、一部のアプリがクラッシュしていました。これは、AccClientライブラリが、LNSの強制によってブロックされるlibstdc++.so.6をリンクしていたためです。ライブラリはLNS準拠のsysroot依存関係を使用するようになり、クラッシュは解消されました。
既知の問題
@amazon-devices/vega-carousel v0.1.3またはv0.1.4を使用するアプリでは、すべてのカルーセルカードに「Unimplemented Error」というメッセージが表示されます。これは、com.amazon.keplerscript.carousel.soネイティブライブラリが、LNSの強制によってブロックされるライブラリをリンクしていることが原因です。暫定的な回避策として、LNSの許可リストエントリを使用できます。ただし、これは根本原因の修正ではなく、LNS強制を一時回避するものです。
パッケージのアップデート
バージョン0.22.1には、以下のnpmパッケージのアップデートが含まれています。
@amazon-devices/eslint-plugin-kepler→ 0.1.13 - ESLintプラグインのインストールの修正@amazon-devices/amazon-devices-buildertools-mcp- 新しいMCPサーバーパッケージ(最初のリリース)
Vega SDKバージョン0.22
0.22リリースの提供が開始されました。このリリースでは、AI支援によるパフォーマンス診断のためのMCPサーバーとプロンプトライブラリが導入されたほか、メディアリソース管理のためのプラットフォームの改良が行われています。メディアの再生とストリーミング、UIレンダリング、パフォーマンスが更新され、60件ほどのバグが修正されました。また、「Project Kepler」の名称が正式にVegaになりました。
- コマンドラインを使用してプロジェクトのSDKバージョンを管理できます。
- パフォーマンスのためのVega MCPサーバーとプロンプトライブラリが提供されます。
- 新しいマイクロKPIにより、アプリの起動に関する指標が細分化されます。
- ワンクリックでシンボリケーションを行い、クラッシュを迅速にデバッグできます。
お知らせ
KeplerからVegaへの変更
すべてのプラットフォームで、コードネームKeplerがVegaに変更されました。keplerのエイリアスはv0.23で廃止される予定です。
必要な対応: v0.23へのアップグレード前に、すべてのスクリプトとワークフローを更新して、keplerコマンドではなくvegaコマンドを使用するように変更してください。
Vega SDK Manager
新しいSDK Managerにより、Vega SDKバージョンのアップデートと保守が簡単になります。これに伴い、KEPLER_SDK_PATHパスの使用は廃止され、SDK Managerがこの環境変数からの移行を支援することになりました。下位互換性を保つために、このリリースでは、Vega SDK Managerによってkeplerエイリアスが作成されます。
必要な対応: すべてのSDKツールの呼び出しについて、環境変数を参照する代わりに、メインインストールディレクトリのバイナリパスからvegaを使用するようにしてください。このリリースでは下位互換サポートが提供されますが、v0.23で廃止される予定です。
新機能
SDK Managerによるバージョンアップグレードの簡易化
Vega SDK Managerでは、コマンドラインを使用してプロジェクトのSDKバージョンを管理します。コマンドには、Node.jsのnvmやPythonのpyenvと同様の機能があります。これにより、複数のSDKバージョンの管理、プロジェクト固有の構成、CI/CDパイプラインとの統合を行うことができます。詳細については、Vega SDK Managerを参照してください。
パフォーマンス診断とクラッシュ診断の効率化
Vega固有のコンテキスト用のMCPサーバー
新しいモデルコンテキストプロトコル(MCP)サーバーは、Vegaコンテキストと、パフォーマンスの問題 (最初のフレームまでの時間と描画完了までの時間)を診断するための厳選されたプロンプトをAIコーディングアシスタントに提供します。詳細については、Vega DevTools MCPサーバーのセットアップを参照してください。
パフォーマンス分析
開発者は、Time-to-first-frame(TTFVF)を細分化するマイクロKPIを測定して、「再生の押下からプレーヤーの開始までの時間」と「プレーヤーの開始から最初のフレームまでの時間」を取得できるようになりました。これは、メディアプレーヤーの実装を最適化するために役立ちます。AI搭載のパフォーマンス診断により、開発者は、自然言語プロンプトを使用してパフォーマンスの問題を特定して解決できます。詳細については、アプリのKPIの測定を参照してください。
ワンクリックでのクラッシュのデバッグ
Vega Studioで、集約クラッシュレポート(ACR)の概要が自動的に表示されるようになりました。このレポートには、ACRファイルからのシンボリケートされたスタックトレースと主要なデバッグ情報が含まれます。詳細については、アプリのクラッシュレポートをシンボリケートする方法を参照してください。
Vega Studioでのデバイスログ
デバイスログが改善され、[Device Files] ビューでのログへのアクセスと、ソースレベルのログフィルタリングが可能になりました。また、ログ形式がより簡潔になりました。デバイスの自動検出も改良されています。trackDevicesでVega仮想デバイスがシミュレーターにマッピングされ、クリック時にシミュレーターノードがloadingに更新されるようになりました。
Chrome DevToolsとの再接続
Vegaアプリの再起動後に、Chrome DevToolsが自動的に再接続されるようになりました。手動で操作や構成を行わなくても、3秒以内にシームレスに再接続できます。Vega TVアプリのデバッグが簡単になるため、開発者は5~10分程度で構成とデバッグを行うことができます。
メモリリークの検出の改善
Vegaアプリのメモリリークの検出に関するドキュメントが改善され、デバッグ中のアプリ応答なし(ANR)クラッシュを防ぎ、正確なメモリ分析のためにガベージコレクションをトリガーする手順が新しく追加されました。詳細については、メモリリークの検出を参照してください。
機能改善
開発者モードの検出の有効化
Vega仮想デバイスでは、開発者モードがデフォルトで有効になり、開発ワークフローが合理化されています。
デバイス上で開発者モードがアクティブになっていない場合、CLIとVega Studioはその状態を検出し、汎用的なエラーではなく明確なエラーメッセージとガイダンスを提供します。inputd-cliによる入力インジェクションで開発者モードがサポートされ、Appiumを使用せずに簡易的な自動テストを行うことができます。また、開発者モードではアラートダイアログなどでUIが強化されます。
マイクロKPIによる滑らかなアプリの実現
新しいパフォーマンスKPIにより、滑らかさの測定方法がさらに細かく定義され、認定に合格したアプリが、ユーザーにとっての体感的な応答性と滑らかさを正確に反映していることが保証されます。このアップデートには、再生シナリオでの入力キー遅延時間が含まれています。これを使用して、開始/停止時の低速な動作などの問題を検出して修正できます。Activity Monitorのパフォーマンスアルゴリズムで、トレースファイルを並行して実行することでタイムアウトを回避できるようになりました。障害が発生した場合は、わかりやすいエラーメッセージを含む進行状況インジケーターが表示されます。
詳細については、開発者フォーラムの Vega App Performance Series(英語のみ)を参照してください。
- Part 1 - Understanding Fluidity and Responsiveness Metrics
- Part 2 - Investigate Performance Issues
- Part 3 - Optimizing for Fluidity and Responsiveness
ビルドとCI/CDインフラストラクチャ
UIの自動化には、システム内テストのためのAppiumとイメージ比較ライブラリが含まれます。
メディアとオーディオ
リソース管理による再生エラーの防止
メディアリソース管理で、リソースに制約のあるデバイスのメモリに対処できるようになりました。メディアサーバーがビデオセッション情報をライフサイクル管理に提供するため、バックグラウンドアプリはメディアリソースをクリーンアップできます。これにより、セキュアなビデオデコーダーを必要とするアプリを切り替えるときの再生エラーを防ぐことができます。
Vega向けReact Nativeとサードパーティライブラリ
React Nativeコアコンポーネントのサポート
TextInputに、autoFocus、multiline、selection、onChangeTextなどの重要なプロパティが追加されました。Textコンポーネントに、aria-label、selectable、adjustsFontSizeToFitが追加されました。ScrollViewに、maintainVisibleContentPosition、スクロールインジケーター、contentOffsetなどの要望の多かった機能が追加されました。Imageコンポーネントに、progressiveRenderingEnabledと、レンダリングの制御を強化するresizeMethodが追加されました。
React Native APIおよびライブラリ
- アプリでは、ユーザーの同意があれば、カメラやBluetoothなどの機密性の高い機能へのアクセスをリクエストできます。
ToastKeplerAPIにより、ネイティブのトースト通知が追加されました。- 低速なURLポリフィルがターボモジュールに置き換わり、
URL操作とURLSearchParams操作のパフォーマンスが大幅に向上しました。 - 新しいVegaシステム情報APIを使用して、開発者はシステムの稼働時間、OSの詳細、ビルド情報、ハードウェア特性に関するクエリを実行できます。詳細については、@amazon-devices/kepler-system-infoを参照してください。
解決済みの問題
メディアの再生とストリーミング
- ビデオの開始時間に影響する問題が修正されました。
startTimeが設定されている場合に再生を開始できず、MP3が完全にダウンロードされるまで再生されませんでした。 - 大きいファイルのプログレッシブオーディオ再生に関する問題が修正されました。 コンテンツを10秒以上程度ストリーミングすると、プレイヤーがフリーズしていました。
- 一時停止中のキャプションのレンダリングに関する問題が修正されました。 ビデオを一時停止したときにクローズドキャプションが非表示になっていました。
- ネットワークスロットリングの動作が修正され、帯域幅の制限時にオーディオとビデオのストリームが正しく同期されるようになりました。 ネットワークスロットリングの適用中、ビデオを停止してもオーディオが停止されず、スロットリングが解除されたときにビデオが早送りで再生されていました。
- 広告遷移中のHLS AES-128の処理が改善されました。
- DASH DRMマルチピリオドマニフェストの解析が改善されました。 DASH DRMライブストリームでクローズドキャプションが表示されず、DASH DRMマルチピリオドの解放時にアプリがクラッシュしていました。
- 字幕のタイミング同期が改善されました。 30秒ほど再生すると字幕のタイミングがずれていました。
- 暗号化されたHLSストリームのオーディオ処理が改善されました。 AESで暗号化されたHLSコンテンツの音質が悪く、
nativeParseFromStringでライブTVを再生するとアプリがクラッシュしていました。
アプリケーションフレームワークとパフォーマンス
- コンテンツ再生に影響するFetch APIの処理の不一致が修正されました。 コンテンツを10秒以上程度ストリーミングすると、プレイヤーがフリーズしていました。
- React Navigationライブラリの使用時に、ナビゲーション中にフォーカスが失われる問題が修正されました。 アプリのナビゲーション中にフォーカスが失われていました。
MaskViewコンポーネントによるアニメーションのレンダリングが修正されました。MaskViewの使用時にReanimatedアニメーションが適用されませんでした。- テンキー入力の
TextInputの表示が改善されました。 テンキー入力のTextInputに余分なドットが表示されていました。 - React-Navigation/Drawerの再レンダリング動作が最適化され、スクロールのパフォーマンスが向上しました。 React-Navigation/Drawerが原因で、再レンダリングの負荷が必要以上に高くなっていました。
- Sentryのシンボルマッピングのサポートが改善され、デバッグを行いやすくなりました。
- 開発モードでのANRのタイムアウトが緩和されました。 デバッグビルドでスプラッシュ画面がすぐに閉じられていました。
ユーザーインターフェイス(UI)とレンダリング
- Lottieアニメーションのクリーンアップの問題が修正され、メモリリークが発生しなくなりました。 Lottieアニメーションをリピート再生した場合、マウント解除後にガベージが残っていました。
- 広告再生に影響するビデオレイヤーの合成の問題が修正されました。これは、v-syncの遅延を適切に管理するようにコンポジターの処理を修正することで達成されました。 WebViewで再生しているメインビデオがずっと点滅したり、アニメーションをモーダルで使用したときに不透明度の問題が発生したりしていました。
- シミュレーターでのテキストレンダリングが修正され、Mac OSでのシェーダーコードの実行が改善されました。 異なるレンダリングで、テキストが非表示になったり再表示されたりすることがありました。
- Fast Imageコンポーネントを使用したときのサムネイルの画質が向上しました。 Fast Imageを使用すると、サムネイルの画質が低下していました。
- Charles Proxyが強化され、画像リクエストのトラフィックが可視化されるようになりました。 Charles Proxyで画像トラフィックを確認できませんでした。
プラットフォームサービス
- 同じプロセス内でコンポーネントが急速に起動、停止、再起動されたときの競合状態が修正され、コンテンツランチャーのディープリンクの信頼性が向上しました。 コンテンツランチャーのディープリンクが機能せず、コンテンツランチャーのログインステータスが反映されませんでした。
- アカウントログイン統合ガイドが修正され、実装の詳細が訂正されました。 アカウントログイン統合ガイドの訂正が求められていました。
- Login with Amazonのレスポンス構造の整合性が改善されました。
identity-lwa-libからのレスポンスの構造が不自然でした。 - ビルドの失敗を防ぐために、モジュールIDの大文字と小文字の区別に関するマニフェストの検証要件を明確にしました。 オファーモジュールが原因でマニフェストの検証が失敗していました。
開発者ツール
- スクリーンショット機能が修正され、正しい画像形式で提供されるようになりました。 スクリーンショットの形式が不適切で、黒い画面になっていました。
- 二要素認証を使用する開発者向けのデバイス登録フローが改善され、ドキュメントのガイダンスも更新されました。 2FAで仮想デバイスの登録が失敗していました。
- わかりやすくするために、アプリ起動コマンドを更新し、非推奨通知を改善しました。
vmsgrの代わりにvlcmを使用してアプリケーションを起動します。また、わかりやすくするために2つのエラーのテキストを更新しました。Error: Command failed: vda -s emulator-5554やFailed to install .vpkg on device Simulatorのようなメッセージが返されます。
既知の問題
MediaSourceオブジェクトがVideoPlayerオブジェクトからデタッチされた場合、sourcecloseイベントが発行されず、イベントを待機しているプレーヤーがフリーズします。- 既知の回避策はありません。
- Amazon移植版のdash.jsで、Amazon Referenceを使用してDash.jsプレーヤーから取得した字幕が表示されません。解決するにはdash.jsプレーヤーのアップデートが必要です。
- 回避策: ShakaPlayerの移植版を使用すると、vttファイルを受け取ってクローズドキャプションを表示できます。
- レスポンスを待たずに早送り操作を複数回実行すると、デッドロック状態が発生します。約2~3分間、可能な限りすばやく早送りを押していると、
seekwithRateAPIの実行にかかる時間が極端に長くなり、ANRが引き起こされます。- 既知の回避策はありません。
- 同じビデオをリプレイしたときに、「Error: Cannot create URL for blob!」というエラーが発生します。根本的な原因は、
react-native-url-polyfillがcreateObjectURLをサポートしていないため、現在使用できないことにあります。- 既知の回避策はありません。
- ドミニカ共和国などの地域では、データ量の大きい1日分のAPIレスポンスに10~15秒かかります。この間、読み込み中の画面を表示し続けるのは優れたUXとは言えません。
- 既知の回避策はありません。
- SVG画像にdisplay: 'none'を設定しても非表示になりません。RN72ではサポートされません。
- 回避策: 表示する必要のないコンポーネントは削除してください。
- フォーカス可能な特性が
uccに見つかりません。Appiumセレクターで取得するには、同じ階層に存在するか、何らかの方法でリンクされている必要があります。- 既知の回避策はありません。
- 100個の画像が読み込まれるスプラッシュ画面は、読み込みに5~6秒かかります。
- 回避策:スプラッシュ画面に使用する画像を8個未満にします。
lazy()を使用してLazilyComponentを作成すると、TargetComponentがラップされますが、遅延コンポーネント自体にスタイルが設定されません。lazy()関数は新しいコンポーネントを一時停止状態で作成します。その解決時に、元のコンポーネントのスタイル設定が正しく維持されないことが根本的な原因です。LazilyComponentはTargetComponentの遅延ラップされたバージョンですが、遅延ラッパーがスタイル設定を適切に維持していない可能性があります。これはAndroidでは問題なく機能しますが、Vega向けReact Nativeでは回避策が必要です。- 回避策:遅延読み込みコンポーネントにスタイルを複製すれば、スタイル設定の問題は解決されます。ただし、遅延読み込みコンポーネントごとにスタイルを複製する必要があります。
- メタデータイベントは特定のID3 EmsgのPTSで発生するように設計されています。このため、ID3 Emsgイベントは無視することができ、メタデータをリッスンするだけで済みます。ただし、4.14.1より前のバージョンのShakaには不具合があり、これらが誤ったタイミングで発生します(メタデータの実際のPTSではなく、メタデータが見つかったセグメントの開始時間が使用されます)。さらに、メタデータのTextTrack(
video.textTracksからkind=metadataのトラックを取得)に手動でメタデータキューを追加しようとすると、例外が断続的にスローされます。- 回避策: ID3は使用しないでください。これは完璧ではなく、誤ったビーコンを送信することがあります。
- ナビゲーション時に、以前にフォーカスのあった要素が再び読み上げられ、続いて新しい要素が読み上げられます。根本的な原因として、 ウェブページの読み込み時にどの要素にも明示的にフォーカスが設定されない場合は、デフォルトで
rootWebAreaがフォーカスを受け取ります。このシナリオでは、その後でいずれかのコンポーネントに(ボタンや入力フィールドなど)にフォーカスが移ると、フォーカス状態が予期せず二重になります。つまり、rootWebAreaと、新しくフォーカスを受け取ったコンポネントが同時にフォーカスを持つ状態になります。このバグはVoiceViewエクスペリエンスにも影響します。rootWebArea要素のフォーカスが解除されないと、フォーカスがボタンにあっても、VoiceViewでウェブページのコンテンツ全体が読み上げられることになります。- 回避策: セクションタイトルを読み上げる目的で一時的にノードを拡張しないでください。
mediaElement.autoplayをtrueに設定しても、再生が自動的に開始されません。- 回避策:
mediaElement.autoplayがtrueの場合、mediaElement.play()を使用して再生を開始します。
- 回避策:
- ビデオ再生が3秒ほど経過したところで、エンドユーザーに赤いスピナーが表示されたままになることがあります。低レベルのWebplay(MSE/EME)は、「pipeline error decode」というエラーで再生を停止します。 この問題は、最初にSDR用に構成されたデコーダーを、再生中にHDR用に再構成しようとした場合にのみ発生します。
- 回避策: 実行時にプロファイルをSDRからHDRに変更しないでください。
- 正常なビデオでは、パイプラインでオーディオとビデオの両方がバッファリングされますが、正常に動作しないビデオでは、パイプラインでビデオだけがバッファリングされ、オーディオはバッファリングされません。一部のコンテンツでは、ビデオのメタデータの問題が原因でMP4が再生されません。動作しないビデオの場合、ビデオキューは100%になりますが、オーディオキューが100%に達することはありません。
- 回避策: 正常に動作しないビデオのメタデータを修正し、開始時間を0に設定します。
- Shaka Playerを使用している場合、一部のHLSストリームで、Shakaの
variantTrackにoriginalVideoIdが含まれないことがあります。これは外部のShaka 4.13.2リリースで解消されましたが、VegaフォークのShaka Playerは4.8.5です。- 回避策: アップデートがリリースされるまで、アプリでローカルパッチを適用することをお勧めします。
- オーディオトラックを切り替えるとき、遷移中にアプリでビデオの一時停止/途切れが発生します。Vegaで
MediaSourceバッファーのフラッシュが行われていない可能性があります。- 既知の回避策はありません。
numColumnsを使用するFlatListでは、onEndReachedを通じて新しいデータが追加されると、グリッドレイアウト全体が再計算されます。この結果、コンポーネントのマウント解除と再マウントが発生し、フォーカスが失われます。- 回避策: この問題に対処するには、
numColumnsを使用するアプローチの代わりに、入れ子になった2つのFlatListを利用するソリューションを実装します。このアーキテクチャでは、外側のFlatListが垂直スクロールとページ分割を管理し、内側のFlatListが水平行のレイアウトを処理します。新しいデータが追加されても、既存の行は同じ参照を維持するため、既存の行コンポーネントが保持され、フォーカスは現在フォーカスのある行に残ります。
- 回避策: この問題に対処するには、
- ヘッドレスJS再生をShaka Playerと組み合わせて実装すると、ログに
ERROR Required Lookup Map not populated!というエラーが表示されることがあります。 根本的な原因として、互換性チェックがヘッドレスサービスで機能していない可能性があり、マップが適切に作成されていません。- 回避策: このエラーが報告されても、再生は問題なく動作します。
- アプリで複数の別々のナビゲーション画面を使用していて、各画面に独自のモーダルが含まれている場合、前の画面に「透明なモーダル」があると、その画面に戻ったときにフォーカスが復元されません。根本的な原因を分析した結果、
navigation.goBack()はExitScreenからLeftNavScreenに正しく移動しますが、フォーカスはフォアグラウンドの透明なモーダルウィンドウに復元されるのではなく、下位のLeftNavScreenコンポーネントに復元されていることがわかりました。- 回避策: Native Stack Navigatorを使用し、detachInactiveScreensをfalseに設定してください。
- 新しい画面に遷移した後ですばやくナビゲーションを行うと、画面上の複数のボタンにフォーカスが設定された状態になります。JSコードではコンポーネントのフォーカスが適切に解除/設定され、スタイルの更新も正しく設定されていますが、コンポーネントを再描画するためのネイティブPMIの変更が発生しません。
- 回避策:
enableFreeze()の呼び出しをコメントアウトすると、バグが発生しなくなります。
- 回避策:
getLocales()から返されるロケールが、ユーザー設定順ではなくアルファベット順になります。- 回避策: JavaScriptの
IntlAPIを使用すると、ロケールの順序を検出して修正を試みることができます。
- 回避策: JavaScriptの
Last updated: 2026年3月6日

