ランタイムとパッケージ
対応ランタイム
runtime | エントリ | 備考 |
|---|---|---|
java | .jar | Java 8 以上が必要 |
python | .py | PATH に python3 / python |
node | .js | PATH に node |
c / cpp | 実行ファイル | ネイティブ |
go | 実行ファイル | go build の成果物 |
rust | 実行ファイル | cargo build --release |
zig | 実行ファイル | zig build-exe |
native | 実行ファイル | 上記の汎用指定 |
ネイティブはインタプリタ不要ですが、プラットフォームごとにビルドが必要です。
manifest.json
json
{
"id": "hello-go",
"name": "Hello Go",
"version": "1.0.0",
"runtime": "go",
"entry": "bin/hello-go.exe",
"permissions": ["ui"],
"description": "サンプル拡張"
}| フィールド | 必須 | 説明 |
|---|---|---|
id | はい | [a-z0-9-]、インストール後は変更不可 |
name | はい | 表示名 |
version | はい | セマンティックバージョン |
runtime | はい | 上表 |
entry | はい | パッケージ内の相対パス |
author / description / homepage | いいえ | |
permissions | いいえ | 配列 |
minHost | いいえ | 最低ランチャーバージョン |
args / env | いいえ | ネイティブ向け引数・環境変数 |
entry は / 区切り、.. と絶対パスは禁止。ネイティブの場合はバイナリ自身を指定します。
パッケージ
bash
python extensions/pack.py extensions/examples/hello-go -o dist/hello-go.zip処理内容:
manifest.jsonの検証。- ネイティブの自動ビルド(
go build -ldflags "-s -w"/cargo build --release)。 - zip 内の権限を
0644に統一(展開時にホストがエントリへ0755を付与)。 - サイズ上限チェック。
- zip 出力。
サンプルと SDK
| パス | ランタイム | 内容 |
|---|---|---|
extensions/examples/hello-java | java | 最小構成 |
extensions/examples/hello-go | go | ネイティブ + API |
extensions/examples/hello-rust | rust | 依存なし JSON |
| 言語 | SDK |
|---|---|
| Go | extensions/sdk/go(package tmlext、標準ライブラリのみ) |
| Rust | extensions/sdk/rust(tml-ext、依存なし) |
SDK とテンプレートリポジトリ
プロトコルの唯一の出どころは本リポジトリの extensions/schema です。SDK は 2 通りあり、 Go / Rust は本リポジトリの extensions/sdk を依存として参照します(コピーしません)。 Java / Python / Node / C のテンプレートは依存なしの実装を同梱しているので、それをそのまま使います。
| 言語 | テンプレート | SDK の取得方法 |
|---|---|---|
| Java | https://github.com/TYWStudio/template-tml-extension-java | 同梱の Json.java(外部依存なし) |
| Python | https://github.com/TYWStudio/template-tml-extension-python | 同梱の tml.py |
| Node.js | https://github.com/TYWStudio/template-tml-extension-node | 同梱の tml.js |
| C | https://github.com/TYWStudio/template-tml-extension-c | 同梱の依存なし実装 |
| Rust | https://github.com/TYWStudio/template-tml-extension-rust | tml-ext = { git = "https://github.com/TYWStudio/TML", tag = "sdk-rust-v1.0.0" } |
| Go | https://github.com/TYWStudio/template-tml-extension-go | require github.com/TYWStudio/TML/extensions/sdk/go v1.0.0 |
言語ごとの clone / ビルド / 導入は 言語別テンプレート へ。
プロトコルを変えるときは、まず本リポジトリの extensions/sdk/* と schema/ を直し、 新しいタグを打って(Go は extensions/sdk/go/vX.Y.Z、Rust は sdk-rust-vX.Y.Z)、 最後にテンプレートの依存バージョンを上げます。逆順にすると実装が二重化します。
デバッグ
bash
cd extensions/my-ext
./bin/hello-go変更後は「設定 → 拡張機能 → 更新」。ログは logs/ext-*.log。インポートや有効化は インポートと管理 を参照してください。
| 症状 | 原因 |
|---|---|
| 一覧に出ない | JSON 構文エラー、または id の重複 |
| 「変更されています」 | 内容を変えたのに信頼記録を更新していない |
| 「ランタイムが利用できません」 | インタプリタ不足、実行権限なし、アーキテクチャ不一致 |
| すぐ終了する | stdin を読んでいない、または例外で終了 |
