as

Settings
Sign out
Notifications
Alexa
Amazonアプリストア
AWS
ドキュメント
Support
Contact Us
My Cases
開発
設計と開発
公開
リファレンス
サポート

Vega SDKリリースノート

Vega SDKリリースノート

Vega SDKの評価をお聞かせください

Vega SDKバージョン0.22

0.22リリースの提供が開始されました。このリリースでは、AI支援によるパフォーマンス診断のためのMCPサーバーとプロンプトライブラリが導入されたほか、メディアリソース管理のためのプラットフォームの改良が行われています。メディアの再生とストリーミング、UIレンダリング、パフォーマンスが更新され、60件ほどのバグが修正されました。また、「Project Kepler」の名称が正式にVegaになりました。

お知らせ

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を使用してアプリのクラッシュをデバッグする方法を参照してください。

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(英語のみ)を参照してください。

ビルドとCI/CDインフラストラクチャ

UIの自動化には、システム内テストのためのAppiumとイメージ比較ライブラリが含まれます。

メディアとオーディオ

リソース管理による再生エラーの防止

メディアリソース管理で、リソースに制約のあるデバイスのメモリに対処できるようになりました。メディアサーバーがビデオセッション情報をライフサイクル管理に提供するため、バックグラウンドアプリはメディアリソースをクリーンアップできます。これにより、セキュアなビデオデコーダーを必要とするアプリを切り替えるときの再生エラーを防ぐことができます。

Vega向けReact Nativeとサードパーティライブラリ

React Nativeコアコンポーネントのサポート

  • TextInputに、autoFocusmultilineselectiononChangeTextなどの重要なプロパティが追加されました。
  • Textコンポーネントに、aria-labelselectableadjustsFontSizeToFitが追加されました。
  • ScrollViewに、maintainVisibleContentPosition、スクロールインジケーター、contentOffsetなどの要望の多かった機能が追加されました。
  • Imageコンポーネントに、progressiveRenderingEnabledと、レンダリングの制御を強化するresizeMethodが追加されました。

React Native APIおよびライブラリ

  • アプリでは、ユーザーの同意があれば、カメラやBluetoothなどの機密性の高い機能へのアクセスをリクエストできます。
  • ToastKepler APIにより、ネイティブのトースト通知が追加されました。
  • 低速な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-5554Failed to install .vpkg on device Simulatorのようなメッセージが返されます。

既知の問題

  • MediaSourceオブジェクトがVideoPlayerオブジェクトからデタッチされた場合、sourcecloseイベントが発行されず、イベントを待機しているプレーヤーがフリーズします。
    • 既知の回避策はありません。
  • Amazon移植版のdash.jsで、Amazon Referenceを使用してDash.jsプレーヤーから取得した字幕が表示されません。解決するにはdash.jsプレーヤーのアップデートが必要です。
    • 回避策: ShakaPlayerの移植版を使用すると、vttファイルを受け取ってクローズドキャプションを表示できます。
  • レスポンスを待たずに早送り操作を複数回実行すると、デッドロック状態が発生します。約2~3分間、可能な限りすばやく早送りを押していると、seekwithRate APIの実行にかかる時間が極端に長くなり、ANRが引き起こされます。
    • 既知の回避策はありません。
  • 同じビデオをリプレイしたときに、「Error: Cannot create URL for blob!」というエラーが発生します。根本的な原因は、react-native-url-polyfillcreateObjectURLをサポートしていないため、現在使用できないことにあります。
    • 既知の回避策はありません。
  • ドミニカ共和国などの地域では、データ量の大きい1日分のAPIレスポンスに10~15秒かかります。この間、読み込み中の画面を表示し続けるのは優れたUXとは言えません。
    • 既知の回避策はありません。
  • SVG画像にdisplay: 'none'を設定しても非表示になりません。RN72ではサポートされません。
    • 回避策: 表示する必要のないコンポーネントは削除してください。
  • フォーカス可能な特性がuccに見つかりません。Appiumセレクターで取得するには、同じ階層に存在するか、何らかの方法でリンクされている必要があります。
    • 既知の回避策はありません。
  • 100個の画像が読み込まれるスプラッシュ画面は、読み込みに5~6秒かかります。
    • 回避策:スプラッシュ画面に使用する画像を8個未満にします。
  • lazy()を使用してLazilyComponentを作成すると、TargetComponentがラップされますが、遅延コンポーネント自体にスタイルが設定されません。lazy()関数は新しいコンポーネントを一時停止状態で作成します。その解決時に、元のコンポーネントのスタイル設定が正しく維持されないことが根本的な原因です。LazilyComponentTargetComponentの遅延ラップされたバージョンですが、遅延ラッパーがスタイル設定を適切に維持していない可能性があります。これは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.autoplaytrueの場合、mediaElement.play()を使用して再生を開始します。
  • ビデオ再生が3秒ほど経過したところで、エンドユーザーに赤いスピナーが表示されたままになることがあります。低レベルのWebplay(MSE/EME)は、「pipeline error decode」というエラーで再生を停止します。 この問題は、最初にSDR用に構成されたデコーダーを、再生中にHDR用に再構成しようとした場合にのみ発生します。
    • 回避策: 実行時にプロファイルをSDRからHDRに変更しないでください。
  • 正常なビデオでは、パイプラインでオーディオとビデオの両方がバッファリングされますが、正常に動作しないビデオでは、パイプラインでビデオだけがバッファリングされ、オーディオはバッファリングされません。一部のコンテンツでは、ビデオのメタデータの問題が原因でMP4が再生されません。動作しないビデオの場合、ビデオキューは100%になりますが、オーディオキューが100%に達することはありません。
    • 回避策: 正常に動作しないビデオのメタデータを修正し、開始時間を0に設定します。
  • Shaka Playerを使用している場合、一部のHLSストリームで、ShakaのvariantTrackoriginalVideoIdが含まれないことがあります。これは外部の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のIntl APIを使用すると、ロケールの順序を検出して修正を試みることができます。

Last updated: 2026年1月9日