Skip to content

ランタイムとパッケージ ​

対応ランタイム ​

runtimeエントリ備考
java.jarJava 8 以上が必要
python.pyPATH に python3 / python
node.jsPATH に 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

処理内容:

  1. manifest.json の検証。
  2. ネイティブの自動ビルド(go build -ldflags "-s -w" / cargo build --release)。
  3. zip 内の権限を 0644 に統一(展開時にホストがエントリへ 0755 を付与)。
  4. サイズ上限チェック。
  5. zip 出力。

サンプルと SDK ​

パスランタイム内容
extensions/examples/hello-javajava最小構成
extensions/examples/hello-gogoネイティブ + API
extensions/examples/hello-rustrust依存なし JSON
言語SDK
Goextensions/sdk/go(package tmlext、標準ライブラリのみ)
Rustextensions/sdk/rust(tml-ext、依存なし)

SDK とテンプレートリポジトリ ​

プロトコルの唯一の出どころは本リポジトリの extensions/schema です。SDK は 2 通りあり、 Go / Rust は本リポジトリの extensions/sdk を依存として参照します(コピーしません)。 Java / Python / Node / C のテンプレートは依存なしの実装を同梱しているので、それをそのまま使います。

言語テンプレートSDK の取得方法
Javahttps://github.com/TYWStudio/template-tml-extension-java同梱の Json.java(外部依存なし)
Pythonhttps://github.com/TYWStudio/template-tml-extension-python同梱の tml.py
Node.jshttps://github.com/TYWStudio/template-tml-extension-node同梱の tml.js
Chttps://github.com/TYWStudio/template-tml-extension-c同梱の依存なし実装
Rusthttps://github.com/TYWStudio/template-tml-extension-rusttml-ext = { git = "https://github.com/TYWStudio/TML", tag = "sdk-rust-v1.0.0" }
Gohttps://github.com/TYWStudio/template-tml-extension-gorequire 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 を読んでいない、または例外で終了