as

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

@amazon-devices/kepler-system-info

@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; // 必要に応じて再スロー
}

モジュール


Last updated: 2025年12月15日