アプリのマニフェストでランタイムモジュールを設定する方法
ランタイムモジュールは、アプリのアーキテクチャにおける重要なコンポーネントの1つで、アプリのコンポーネントの実行環境を定義するものです。コードがどのように解釈されて実行されるかはランタイムモジュールによって決定され、その影響はパフォーマンス、メモリ使用量、機能に及びます。
ランタイムモジュールが不可欠な理由は、次のような役割を担っているためです。
- アプリのコンポーネントと基盤のシステムとの互換性を確保する。
- コンポーネントタイプ(対話型、タスク、サービス)に基づいてリソースの使用量を最適化する。
- 適切なプロセス管理とコンポーネントの分離を実現する。
ランタイムモジュールを定義するためのガイドライン
アプリのマニフェストでランタイムモジュールを定義するときは、以下のガイドラインに従ってください。
対話型コンポーネント
対話型コンポーネントには、次のランタイムモジュールのいずれかを使用します。
/com.amazon.kepler.keplerscript.runtime.loader_2@IKeplerScript_2_0/com.amazon.kepler.runtime.keplerscript_2@IKeplerScript(新しい規則、検証ツールで警告が表示される場合があります)
マニフェストエントリの例
[components]
[[components.interactive]]
runtime-module = "/com.amazon.kepler.keplerscript.runtime.loader_2@IKeplerScript_2_0"
タスクコンポーネントまたはサービスコンポーネント
タスクコンポーネントまたはサービスコンポーネントでは、タスクやサービスが対話型コンポーネントと同じプロセスを共有していれば、対話型コンポーネントと同じランタイムモジュールを使用できます。
マニフェストエントリの例
[[components.interactive]]
id = "<アプリパッケージ名>.main"
runtime-module = "/com.amazon.kepler.keplerscript.runtime.loader_2@IKeplerScript_2_0"
launch-type = "singleton"
[[components.service]]
id = "<アプリパッケージ名>.service"
runtime-module = "/com.amazon.kepler.keplerscript.runtime.loader_2@IKeplerScript_2_0"
launch-type = "singleton"
タスクコンポーネントまたはサービスコンポーネントが対話型コンポーネントと同じプロセスを共有していない場合は、headlessランタイムのいずれかを使用します。これらのランタイムは、より小さいメモリフットプリントで動作します。
/com.amazon.kepler.headless.runtime.loader_2@IKeplerScript_2_0
マニフェストエントリの例
[[components.service]]
id = "<アプリパッケージ名>.service"
runtime-module = "/com.amazon.kepler.headless.runtime.loader_2@IKeplerScript_2_0"
launch-type = "singleton"
プロセスグループの一貫性
同じプロセスグループ内のコンポーネントは、同じruntime-moduleを使用する必要があります。
バージョンの一貫性
マニフェスト内のすべてのランタイムモジュールには、常に同じKeplerScriptバージョンを使用する必要があります(バージョンは@記号の後の番号で示されます)。たとえば、バージョン2とバージョン1のランタイムモジュールを同じマニフェストに混在させることはできません。
検証の警告とエラー
上記のガイドラインに従っていない場合は、VPTでアプリのマニフェストを検証したときに警告メッセージまたはエラーメッセージが表示されます。
以下のメッセージは、VPTから表示される警告とエラーの例を示しています。
例1: プロセスグループ内のランタイムモジュールに一貫性がない
manifest.toml:32:5 error: [processes.group] Inconsistent runtime modules in process group.Found multiple runtime modules: '/com.amazon.kepler.keplerscript.runtime.loader_2@IKeplerScript_2_0' (com.amazon.samplepkg.component.a), '/com.amazon.kepler.headless.runtime.loader_2@IKeplerScript_2_0' (com.amazon.samplepkg.component.b, com.amazon.samplepkg.component.c)
help: All components in a process group must have the same runtime module if declared
例2: ランタイムモジュールのバージョンに一貫性がない
manifest.toml:10:6 error: [components.runtime-module] Inconsistent runtime module versions found: 'IKeplerScript_1_0' (com.amazon.samplepkg.component.main), 'IKeplerScript_2_0' (com.amazon.samplepkg.component.main2, com.amazon.samplepkg.component.main3)
help: All runtime modules declared must use the same version
Last updated: 2025年9月30日

