ターゲットのOSバージョン
VegaデバイスはVegaデバイスオペレーティングシステム(OS)を実行します。アプリでは、サポートする1つまたは複数のOSバージョンを宣言し、ユーザーのデバイスに正しくインストールして実行できるようにします。このガイドでは、OSバージョン互換性モデルとそれを管理するコマンド、新しいOSバージョンで導入されたライブラリAPIをガードする方法について説明します。
Vega用の新しいReact Nativeアプリを構築する場合は、このページを最初から最後まで読んでください。既に動作しているアプリがあり、そのアプリに[os.version]セクションを追加する必要がある場合は、既存のアプリのアップグレードから始めてください。アプリがさまざまなOSバージョンをサポートしている場合は、isPresentOnOSによる新しいAPIのガードを参照して、新しいAPIを安全に採用する方法を確認してください。
特定のOSバージョンが提供するAPIを確認するには、Vega APIリファレンスを参照してください。サポートされているサードパーティのライブラリのバージョンについては、サポート対象のサードパーティのライブラリとサービスを参照してください。
OSバージョンとSDKバージョンの比較
次の表に示すように、OSバージョンとSDKバージョンは異なる2つの概念です。
| OSバージョン | SDKバージョン | |
|---|---|---|
| 説明 | アプリを実行するデバイスOSのバージョン(1.2など)。 |
ビルドに使用するVega SDKツールチェーンのバージョン。 |
| 設定場所 | manifest.tomlの[os.version]セクション。 |
vega-sdk-requirements.jsonファイル。詳細については、SDKバージョンの管理を参照してください。 |
| 対象とするもの | アプリでサポートする必要がある、実際のフィールドで使用されているデバイス。 | ローカルビルド環境。 |
このページの残りの部分では、OSバージョンについて説明します。
OSバージョンとReact Nativeランタイム
各OSバージョンには1つ以上のReact Nativeランタイムが付属しており、アプリはそのうちの1つでのみ実行されます。ランタイムを明示的に設定することはありません。Vega CLIは、package.jsonの@amazon-devices/react-native-*依存関係バージョンからこの情報を読み取るため、プロジェクトが既に依存しているものによってランタイムが決まります。
CLIは、解決したランタイムを出力に反映します。たとえば、📦 Installed packages for OS Version 1.2 + RN 0.72のように出力します。別のランタイムをプレビューするには、vega project installに--rn-versionを渡しますが、通常の方法はCLIにpackage.jsonを読み取らせることです。
OS 1.2には、次の表で説明されているように2つのReact Nativeランタイムが用意されています。
| React Nativeランタイム | 提供状況 | 説明 |
|---|---|---|
| RN 0.72 | OS 1.2 | 確立されたランタイム。 |
| RN 0.83 | OS 1.2 | OS 1.2で導入された新しいランタイム。 |
RN 0.83はOS 1.2でリリースされたため、0.83ランタイムでビルドされたアプリではminを1.2未満に設定できません。以前のOSバージョンには0.83ランタイムは搭載されていません。minがランタイムに必要なOSバージョンよりも低い場合、vega project doctorとビルドで、minを上げるように指示するエラーが出力されます。どちらもこの値を自動的に変更することはありません。
アプリは1つのReact Nativeランタイムに対してビルドされ、常にそのランタイムで実行されるため、実行時にランタイムを判別するガード処理は必要ありません。ビルドツールはこの一貫性を保ち、プロジェクトのランタイムと互換性のない@amazon-devices/*パッケージバージョンに依存することはできません。isPresentOnOSによるランタイムガードは、ランタイムの違いではなく、minバージョンよりも新しいOSバージョンで追加されたライブラリAPIに適用されます。
[os.version]マニフェストセクション
アプリがサポートするOSバージョンの範囲を宣言するには、manifest.tomlに[os.version]セクションを追加します。
[os.version]
target = "1.2"
min = "1.2"
-
min- アプリがサポートする最も古いOSバージョン。アプリはこのバージョン以降のどのデバイスにもインストールでき、minで利用可能なAPIを自由に使用できます。 -
target- アプリがビルド対象としている最新のOSバージョン。このバージョンまでに提供されているAPIは使用できますが、minで指定したOSバージョン以降に追加されたAPIを利用する場合は、古いデバイスでもアプリが動作するよう適切なガード処理を行う必要があります。
SDK 0.24以降では、ビルド時に[os.version]セクションが必須となっています。このセクションが見つからない場合、npx react-native build-vegaを使用したビルドは失敗します。手動で追加するか、vega project update-manifest --os-min 1.2 --os-version 1.2を実行してツールで自動的に追加させてください。3つの作成方法とそれぞれに必要なフラグについては、マニフェストの[os.version]セクションを参照してください。
このツールは、アプリが利用するOS提供モジュールを、minで利用可能な場合はneedsとして、minとtargetの間で追加された場合はwantsとしてマニフェストに記録します。これらのエントリを手動で記述する必要はありません。ビルドのたびに自動生成されます。完全なマニフェストの例については、マニフェストの[os.version]セクションを参照してください。エントリ自体の詳細については、マニフェストの[needs]セクションとマニフェストの[wants]セクションを参照してください。
アプリの互換性の設定
OSバージョンの互換性を設定するには、プロジェクトのルートから次のコマンドを実行します。
vega project install --fix
npm install
vega project doctor
npx react-native build-vega
-
vega project install --fixは、@amazon-devices/*依存関係のうちOSバージョンと互換性のあるバージョンを解決し、package.jsonに反映します。 -
npm installは、解決されたバージョンをインストールします。プロジェクトで既に使用されているパッケージマネージャーを使用してください。 -
vega project doctorは、ビルドの前にプロジェクトを検証します。 -
npx react-native build-vegaはアプリをビルドし、vpkgを生成します。package.jsonで定義されているビルドスクリプトを使用することもできます。
vega projectコマンドでは、npm、yarn、pnpmは実行されないため、package.jsonを変更するコマンドを実行した後は、独自のパッケージマネージャーを実行してください。
doctorは、指定したOSバージョンが有効であり、minがtarget以下であることを確認します。また、パッケージのバージョンが一致していること、必須モジュールがminでも利用可能であること、コードで新しいAPIのガード処理が行われていることも確認します。失敗すると0以外の終了コードで終了するため、CIパイプラインで使用できます。完全なオプションの一覧については、vega project doctorを参照してください。
このセットアップチェーンに続く残りのvega projectコマンドは、より限定的なタスクを処理します。単一の新しい@amazon-devices/*パッケージを追加するには、vega project install <パッケージ>を実行し、パッケージマネージャーを使用してインストールします。適用前に別のOSターゲットへの変更をプレビューするには、vega project update --os-version <v> --dry-runを実行します。すべてのコマンドとオプションについては、Vega SDK CLIリファレンスを参照してください。
既存のアプリの更新
動作中のアプリにOSバージョンの互換性を追加するために、何も書き直す必要はありません。
-
manifest.tomlに[os.version]セクションを追加します。手動で追加することも、vega project update-manifest --os-min 1.2 --os-version 1.2を実行して自動生成することもできます。 -
vega project install --fixを実行して、@amazon-devices/*の依存関係をOSターゲットに合わせて調整します。 -
npm installを実行した後、vega project doctorを実行して、プロジェクトに互換性があることを確認します。 -
通常どおりアプリをビルドします。
1つのコマンドでセクションを作成して依存関係を再調整するには、vega project install --fix --os-min 1.2 --os-version 1.2を実行します。この形式では両方のフラグが必要です。--os-versionがない場合、[os.version]セクションがないプロジェクトのターゲットを解決できず、コマンドは何も書き込まずに失敗します。
既存のコードは引き続き機能します。複数のOSバージョンをサポートする場合は、採用する新しいAPIに対してのみガード処理を追加すれば十分です。
isPresentOnOSによる新しいAPIのガード処理
アプリが複数のOSバージョンをサポートする場合、つまりminがtargetよりも前のバージョンである場合、新しいAPIを導入したライブラリバージョンが古いデバイスには存在しない可能性があります。そのようなAPIへの呼び出しをガード処理していない場合、それらのデバイスでクラッシュが発生します。
この呼び出しをガード処理するには、isPresentOnOSを使用します。これは、実行中のデバイスのOSに特定のバージョン以降のライブラリが存在するかどうかを報告します。
import { isPresentOnOS } from '@amazon-devices/kepler-compatibility';
import * as GestureHandler from '@amazon-devices/react-native-gesture-handler';
// この機能は@amazon-devices/react-native-gesture-handler 2.2.0で導入されました。
// そのバージョンがデバイスに存在する場合にのみ使用してください。
function DraggableItem() {
if (isPresentOnOS('@amazon-devices/react-native-gesture-handler', '2.2.0')) {
return <GestureHandler.NewFeature />; // 新しいパス
}
return <GestureHandler.LegacyFeature />; // 旧デバイス用のフォールバック
}
isPresentOnOS(libraryName, version)は、以下の引数を受け取ります。
-
libraryName- npmライブラリ名(例:'@amazon-devices/react-native-gesture-handler')。 -
version- semver形式のバージョン文字列(例:'2.2.0')。この関数は、実行中のデバイスのOSが指定されたバージョン以降のライブラリを提供する場合、trueを返します。
isPresentOnOSは@amazon-devices/kepler-compatibilityによって提供されます。チェックを繰り返さないようにするには、レンダリングのたびに呼び出すのではなく、結果をuseMemoフックにキャッシュしてください。互換性ライブラリの詳細については、下位互換性の有効化を参照してください。
@amazon-devices/スコープからVegaパッケージをインポートしてください。コードサンプルまたは検索結果に、同じパッケージ名で異なるスコープが表示される場合は、@amazon-devices/形式のものを使用します。vega project doctorとVega ESLintプラグインはどちらも、ガードなしで使用される新しいAPIにフラグを立てます。特定のimportに対するチェックを抑制するには、前の行に// @os-version-okコメントを追加します。
// @os-version-ok
import { openCamera } from '@amazon-devices/kepler-camera';
@os-version-okは、そのimport全体に対するガードチェックを抑制し、旧デバイスでクラッシュする可能性のあるメンバーを含めて、すべてのチェックを無効化します。そのimportが[os.version].minで安全であることを別の方法で確認した場合にのみ、この方法を使用してください。たとえば、ライブラリがバージョンチェックを内部で処理する場合や、呼び出しサイトが既にisPresentOnOSガード内にある場合です。OSバージョン間でのテスト
アプリを申請する前に、minとtargetの両方のOSバージョンでデバイスシミュレーターをインストールし、それぞれでアプリがインストールでき、正常に動作することを確認してください。ガード処理されたコードパスとそのフォールバックに注意してください。
関連トピック
- パッケージと依存関係の管理(英語のみ)
- マニフェストの[os.version]セクション
- Vega SDK CLIリファレンス
- Vega Studioでアプリのマニフェストを検証する方法
- Vega SDKリリースノート
Last updated: 2026年8月21日

