@amazon-devices/kepler-system-info
Vegaシステム情報APIは、実行中のオペレーティングシステムインスタンスに関するシステムレベルの基本的な情報を照会できる機能を提供します。これにより、システムの稼働時間、オペレーティングシステムの詳細、ビルド情報、Vega上で動作するアプリ向けに特別に設計されたハードウェア特性を取得できます。
このAPIは、次のような主な機能を提供します。
- システムの稼働時間のモニタリング: システムの稼働時間をナノ秒の精度で正確に取得します。
- オペレーティングシステム情報: OSの表示名、バージョン、コードネームへのアクセスを提供します。
- ビルド情報: 詳細なビルドメタデータとフィンガープリントを取得します。
- エミュレーターの検出: アプリがVega仮想デバイス(VVD)で実行されているかどうかを特定します。
- TypeScriptのサポート: このAPIはTypeScript定義を完全にサポートします。
- エラー処理: try-catchパターンによる包括的なエラー処理をサポートします。
注釈
このAPIのコアインターフェイスは次のとおりです。
| インターフェイス | 説明 |
|---|---|
ISystemInfo |
メインのシステム情報インターフェイス |
IOperatingSystemInfo |
オペレーティングシステムの詳細 |
IBuildInfo |
ビルドおよびバージョン情報 |
主要な型定義は次のとおりです。
| 型 | 説明 |
|---|---|
MonotonicDuration |
システムの稼働時間 |
RealTimeInstant |
ナノ秒の精度のタイムスタンプ |
RawTimeValue |
未加工の時間値(秒+ナノ秒) |
開始の手順
セットアップ
package.jsonファイルに次のライブラリ依存関係を追加します。
{
"dependencies": {
"@amazon-devices/kepler-system-info": "^1.0.2",
"@amazon-devices/keplerscript-turbomodule-api": "^1.0.0"
}
}
依存関係をインストールするには、次のコマンドを実行します。
npm install
使用例
基本的な使用パターン
次のコード例は、このAPIの最小限の使用方法を示しています。
import { SystemInfoModule, ISystemInfo } from '@amazon-devices/kepler-system-info';
// メインのSystemInfoインターフェイスを取得します。
let systemInfo: ISystemInfo;
try {
systemInfo = SystemInfoModule.getSystemInfo();
console.log('SystemInfoが正常に初期化されました');
} catch (error) {
console.error('SystemInfoを初期化できませんでした:', error);
throw error;
}
ISystemInfoインターフェイス
システムの稼働時間
次のコード例は、ナノ秒の精度でシステムの稼働時間を取得する方法を示しています。
import { MonotonicDuration, RawTimeValue } from '@amazon-devices/kepler-system-info';
async function getSystemUptime() {
try {
const uptime: MonotonicDuration = await systemInfo.getUptime();
const timeValue: RawTimeValue = uptime.time;
console.log('システムの稼働時間:');
console.log(`秒数:${timeValue.seconds}`);
console.log(`ナノ秒数:${timeValue.nanoseconds}`);
// 人が判読できる形式に変換します。
const totalSeconds = timeValue.seconds;
const hours = Math.floor(totalSeconds / 3600);
const minutes = Math.floor((totalSeconds % 3600) / 60);
const seconds = totalSeconds % 60;
console.log(`人が判読できる形式:${hours}時間${minutes}分${seconds}秒`);
return uptime;
} catch (error) {
console.error('システムの稼働時間を取得できませんでした:', error);
throw error;
}
}
エミュレーターの検出
次のサンプルコードは、アプリがVVDで実行されているかどうかを確認する方法を示しています。
function checkEmulatorStatus() {
try {
const isEmulator = systemInfo.isEmulator();
console.log(`エミュレーターで実行されています:${isEmulator ? 'はい' : 'いいえ'}`);
if (isEmulator) {
console.log('開発・テスト環境が検出されました');
} else {
console.log('本番環境が検出されました');
}
return isEmulator;
} catch (error) {
console.error('エミュレーターのステータスを確認できませんでした:', error);
throw error;
}
}
オペレーティングシステム情報へのアクセス
次のサンプルコードは、IOperatingSystemInfoインターフェイスを使用して詳細なオペレーティングシステム情報にアクセスする方法を示しています。
import { IOperatingSystemInfo } from '@amazon-devices/kepler-system-info';
function getOperatingSystemInfo() {
try {
const osInfo: IOperatingSystemInfo =
systemInfo.getOperatingSystemInfo();
// OSの詳細を取得します。
const displayName = osInfo.getDisplayName();
const codeName = osInfo.getCodeName();
const version = osInfo.getVersion();
console.log('オペレーティングシステム情報:');
console.log(`表示名:${displayName}`);
console.log(`コードネーム:${codeName}`);
console.log(`バージョン:${version}`);
return {
displayName,
codeName,
version,
osInfo,
};
} catch (error) {
console.error('OSの情報を取得できませんでした:', error);
throw error;
}
}
ビルド情報の取得
次のサンプルコードは、IBuildInfoインターフェイスを使用して包括的なビルド情報を取得する方法を示しています。
import {
IBuildInfo,
RealTimeInstant,
RawTimeValue,
} from '@amazon-devices/kepler-system-info';
function getBuildInformation(osInfo: IOperatingSystemInfo) {
try {
const buildInfo: IBuildInfo = osInfo.getBuildInfo();
// 基本的なビルド情報
const displayName = buildInfo.getDisplayName();
const buildId = buildInfo.getId();
const variant = buildInfo.getVariant();
const fingerprint = buildInfo.getFingerprint();
// ビルドのタイムスタンプ
const timestamp: RealTimeInstant = buildInfo.getTimestamp();
const timeValue: RawTimeValue = timestamp.time;
const buildDate = new Date(timeValue.seconds * 1000);
// ビルドタグ
const tags: string[] = buildInfo.getTags();
console.log('ビルド情報:');
console.log(`表示名:${displayName}`);
console.log(`ビルドID:${buildId}`);
console.log(`バリエーション:${variant}`);
console.log(`フィンガープリント:${fingerprint}`);
console.log(`ビルド日時:${buildDate.toISOString()}`);
console.log(`タグ:${JSON.stringify(tags, null, 2)}`);
return {
displayName,
buildId,
variant,
fingerprint,
buildDate,
tags,
buildInfo,
};
} catch (error) {
console.error('ビルド情報を取得できませんでした:', error);
throw error;
}
}
例
次のサンプルコードでは、APIの主な機能をすべて使用します。
import {
SystemInfoModule,
ISystemInfo,
IOperatingSystemInfo,
IBuildInfo,
MonotonicDuration,
RealTimeInstant,
RawTimeValue,
} from '@amazon-devices/kepler-system-info';
class SystemInfoService {
private systemInfo: ISystemInfo;
constructor() {
try {
this.systemInfo = SystemInfoModule.getSystemInfo();
console.log('SystemInfoServiceが初期化されました');
} catch (error) {
console.error('SystemInfoServiceを初期化できませんでした:', error);
throw error;
}
}
async getCompleteSystemInfo() {
try {
// システムレベルの情報
const uptime = await this.systemInfo.getUptime();
const isEmulator = this.systemInfo.isEmulator();
// オペレーティングシステム情報
const osInfo = this.systemInfo.getOperatingSystemInfo();
const osDisplayName = osInfo.getDisplayName();
const osCodeName = osInfo.getCodeName();
const osVersion = osInfo.getVersion();
// ビルド情報
const buildInfo = osInfo.getBuildInfo();
const buildDisplayName = buildInfo.getDisplayName();
const buildId = buildInfo.getId();
const buildVariant = buildInfo.getVariant();
const buildFingerprint = buildInfo.getFingerprint();
const buildTimestamp = buildInfo.getTimestamp();
const buildTags = buildInfo.getTags();
return {
system: {
uptime: {
seconds: uptime.time.seconds,
nanoseconds: uptime.time.nanoseconds,
humanReadable: this.formatUptime(uptime.time.seconds),
},
isEmulator,
},
operatingSystem: {
displayName: osDisplayName,
codeName: osCodeName,
version: osVersion,
},
build: {
displayName: buildDisplayName,
id: buildId,
variant: buildVariant,
fingerprint: buildFingerprint,
timestamp: {
seconds: buildTimestamp.time.seconds,
nanoseconds: buildTimestamp.time.nanoseconds,
date: new Date(
buildTimestamp.time.seconds * 1000,
).toISOString(),
},
tags: buildTags,
},
};
} catch (error) {
console.error('完全なシステム情報を取得できませんでした:', error);
throw error;
}
}
private formatUptime(seconds: number): string {
const hours = Math.floor(seconds / 3600);
const minutes = Math.floor((seconds % 3600) / 60);
const secs = seconds % 60;
return `${hours}h ${minutes}m ${secs}s`;
}
}
// 使用方法
async function main() {
try {
const service = new SystemInfoService();
const systemInfo = await service.getCompleteSystemInfo();
console.log('完全なシステム情報:');
console.log(JSON.stringify(systemInfo, null, 2));
} catch (error) {
console.error('アプリエラー:', error);
}
}
main();
エラー処理
このAPIは、JavaScriptの標準のエラー処理を使用します。API呼び出しは常にtry-catchブロックでラップしてください。
try {
const systemInfo = SystemInfoModule.getSystemInfo();
const uptime = await systemInfo.getUptime();
// プロセスの稼働時間...
} catch (error) {
if (error instanceof Error) {
console.error(`SystemInfoエラー: ${error.message}`);
console.error(`スタックトレース:${error.stack}`);
} else {
console.error('不明なエラーが発生しました:', error);
}
// アプリに合わせて適切にエラーを処理します。
throw error; // 必要に応じて再スロー
}
モジュール
- index
- SystemInfoModule
- turbo-modules/interfaces
- turbo-modules/interfaces
- turbo-modules/interfaces
- turbo-modules/interfaces/IBuildInfo
- turbo-modules/interfaces/IBuildInfo
- turbo-modules/interfaces/IBuildInfo
- turbo-modules/interfaces/IOperatingSystemInfo
- turbo-modules/interfaces/IOperatingSystemInfo
- turbo-modules/interfaces/IOperatingSystemInfo
- turbo-modules/interfaces/ISystemInfo
- turbo-modules/interfaces/ISystemInfo
- turbo-modules/interfaces/ISystemInfo
- turbo-modules/NativeSystemInfo
- turbo-modules/NativeSystemInfo
- turbo-modules/types
- turbo-modules/types
- turbo-modules/types
- turbo-modules/types/BuildInfo
- turbo-modules/types/BuildInfo
- turbo-modules/types/BuildInfo
- turbo-modules/types/MonotonicDuration
- turbo-modules/types/MonotonicDuration
- turbo-modules/types/MonotonicDuration
- turbo-modules/types/OperatingSystemInfo
- turbo-modules/types/OperatingSystemInfo
- turbo-modules/types/OperatingSystemInfo
- turbo-modules/types/RawTimeValue
- turbo-modules/types/RawTimeValue
- turbo-modules/types/RawTimeValue
- turbo-modules/types/RealTimeInstant
- turbo-modules/types/RealTimeInstant
- turbo-modules/types/RealTimeInstant
- turbo-modules/types/SystemInfo
- turbo-modules/types/SystemInfo
- turbo-modules/types/SystemInfo
Last updated: 2025年12月15日

