Platformモジュール
Vega向けReact Nativeには、アプリが実行されているプラットフォームを検出するためのPlatformモジュールが用意されています。Vega OSでは、このモジュールを使用してVega固有のコードを実行できます。Platform.OS
Platform.OSプロパティは、現在のプラットフォームを表す文字列を返します。注:Vega OSでは、Platform.OSは'kepler'を返します。
Platform.select()
Platform.select()メソッドは、現在実行中のプラットフォームに応じた値を返します。Vega固有の値には、キーとしてkeplerを使用します。
プラットフォーム固有の拡張子
プラットフォーム固有のコードが複雑になる場合は、コードを別々のファイルに分離することをお勧めします。React Nativeは、ファイルに付けられたプラットフォーム固有の拡張子を検出し、ほかのコンポーネントから要求されたときに適切なプラットフォームファイルを読み込みます。 Vega OS用には.kepler拡張子を使用してください。
例
プロジェクト内に次のファイルがあるとします。- Vega OSの場合:
Button.kepler.tsxが読み込まれます。 - iOSの場合:
Button.ios.tsxが読み込まれます。 - Androidの場合:
Button.android.tsxが読み込まれます。
サポートされる拡張子
次のファイルタイプで.kepler拡張子を使用できます。
.kepler.tsx- JSXを使用するTypeScript.kepler.ts- TypeScript.kepler.jsx- JSXを使用するJavaScript.kepler.js- JavaScript
Tree Shakingとプラットフォーム固有のコード
Vega OSでは、プラットフォーム固有のTree Shakingが完全にサポートされています。つまり、アプリをビルドすると、バンドラーによってほかのプラットフォーム用のコードが自動的に除外され、バンドルサイズが小さくなります。動作のしくみ
.kepler.tsxなどのプラットフォーム固有のファイル拡張子を使用した場合、ビルドシステムは次のように動作します。
- ビルドプロセス中にターゲットプラットフォームを検出します。
- Vega OSバンドルに
.keplerファイルのみを取り込みます。 - 最終的なバンドルから
.iosファイルと.androidファイルを除外します。 - 使用されていないプラットフォーム固有のコードブランチを削除します。
重要な注意事項
Vega OSはプラットフォームシステムにkeplerとして登録されているため、Tree Shakingを正しく機能させるには、プラットフォーム固有のファイル名にkeplerというキーワード(vegaではなく)を使用する必要があります。
正しい例:
ベストプラクティス
- 違いが大きい場合はプラットフォーム固有のファイルを使用する:プラットフォーム間で実装が大きく異なる場合は、別のファイルに分離して
.kepler拡張子を付けます。 - 違いが小さい場合はPlatform.select()を使用する:スタイル設定や単純な条件付きロジックなどの小さい違いを実装するには、1つのファイル内で
Platform.select()またはPlatform.OSのチェックを使用します。 - 共有ロジックを共通のファイルにまとめる:プラットフォームに依存しないロジックは、プラットフォームの拡張子を付けずに共有ファイルにまとめて、できるだけコードを再利用します。
- Tree Shakingを利用する:プラットフォーム固有の拡張子を使用して、関連するコードだけをVega OSバンドルに含めるようにします。これにより、パフォーマンスを高め、バンドルサイズを小さくすることができます。

