Skip to content

言語別テンプレート ​

骨組みを一から作らずに始めたい場合は、6 言語分のテンプレートリポジトリにマニフェスト・入口・ ホスト SDK・パッケージ用スクリプトが揃っています。clone して id を変えればすぐ書けます。 各リポジトリには README-CN.md(中文)と README.md(英語)があります。

言語テンプレート出力必要なもの
Javatemplate-tml-extension-javacom.tywstudio.example.java.jarJDK(javac / jar)
Pythontemplate-tml-extension-python*.tmlextPython 3
Node.jstemplate-tml-extension-node*.tmlextNode.js 18 以降
Ctemplate-tml-extension-c*.tmlext(ネイティブ実行ファイル入り)C コンパイラ(gcc / clang / MSVC cl)+ Python 3
Rusttemplate-tml-extension-rust*.tmlext(ネイティブ実行ファイル入り)Rust ツールチェーン(Cargo)+ Python 3
Gotemplate-tml-extension-go*.tmlext(ネイティブ実行ファイル入り)Go 1.21 以降 + Python 3

Zig のテンプレートは未用意

C か Go の構成をそのまま真似してください。runtime は zig、entry は zig build-exe の出力、 それ以外(マニフェストの項目・stdio プロトコル・zip 化)は同じです。

始め方 3 通り ​

1. GitHub テンプレート(おすすめ) ​

6 つのリポジトリはすべて template repository です。リポジトリを開いて右上の Use this template → Create a new repository を押すと、自分のリポジトリとして作られます (親子関係なし、テンプレートの更新も自動では入りません)。

2. git clone ​

bash
git clone https://github.com/TYWStudio/template-tml-extension-go.git my-ext
cd my-ext

最新のコードだけ欲しいときは --depth 1 を付けます。

bash
git clone --depth 1 https://github.com/TYWStudio/template-tml-extension-go.git my-ext

3. zip を落とす ​

git が無い環境では、リポジトリページの Code → Download ZIP を展開すればそのまま作業できます。

最初に変える 3 か所 ​

  1. id — manifest.json(Java は META-INF/tml-extension.json)。インストール後は変更できないので yourname.feature のような名前に。name / version / author も一緒に変えます。
  2. 入口の処理 — src/main.* / main.py / main.js。テンプレートはログ 1 行と host.info 呼び出しだけなので、 自分の処理に置き換えます。
  3. permissions — 使う能力だけ宣言します。余分に宣言すると導入時に見えるので敬遠されます。

言語ごとの手順 ​

Java ​

JDK が必要です(java -version が通ること)。ホストは java -cp "<jar>" com.tywstudio.example.Main で起動するので、入口クラス名をマニフェストと合わせます。

bash
git clone https://github.com/TYWStudio/template-tml-extension-java.git my-ext
cd my-ext
bash build.sh          # Windows: build.bat
# 出力: com.tywstudio.example.java.jar

Java 版は .jar を直接出力します(.tmlext ではありません)。インポートでは jar を選んでください。

Python ​

Python 3 だけで動きます。外部パッケージ不要。

bash
git clone https://github.com/TYWStudio/template-tml-extension-python.git my-ext
cd my-ext
python3 build.py       # Windows: python build.py
# 出力: com.tywstudio.example.python.tmlext

python3 main.py を単体で実行すると握手待ちで止まりますが正常です(起動はランチャーが行います)。

Node.js ​

bash
git clone https://github.com/TYWStudio/template-tml-extension-node.git my-ext
cd my-ext
node build.js          # または npm run pack
# 出力: com.tywstudio.example.node.tmlext

package.json に実行時依存はないので npm install は不要です。

C ​

任意の C コンパイラ(gcc / clang / MSVC cl)と、パッケージ用の Python 3 が必要です。

bash
git clone https://github.com/TYWStudio/template-tml-extension-c.git my-ext
cd my-ext
./build.sh             # Windows: build.bat
# 出力: template-tml-extension-c.tmlext

build.sh がコンパイル、build.py がマニフェスト・ソース・実行ファイルを .tmlext にまとめます。

Rust ​

SDK は git 依存(tml-ext、tag sdk-rust-v1.0.0)なので、初回ビルド時に TML リポジトリを一度 clone します。 以降は Cargo キャッシュから取得します。SDK の lib.rs をコピーしないでください。

bash
git clone https://github.com/TYWStudio/template-tml-extension-rust.git my-ext
cd my-ext
./build.sh             # Windows: build.bat
# 出力: template-tml-extension-rust.tmlext

内部では cargo build --release → bin/tml_ext にコピー → build.py で梱包、という流れです。

Go ​

SDK は TML リポジトリの extensions/sdk/go にあり、build.sh が最初に go mod tidy で取得します (初回のみネットワークが必要)。

bash
git clone https://github.com/TYWStudio/template-tml-extension-go.git my-ext
cd my-ext
./build.sh             # Windows: build.bat
# 出力: template-tml-extension-go.tmlext

実行されるコマンドは CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o bin/tml_ext ./src です。 CGO_ENABLED=0 で静的リンクになり、クロスコンパイルも簡単になります。

bash
GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o bin/tml_ext.exe ./src
GOOS=linux   GOARCH=arm64 CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o bin/tml_ext ./src
GOOS=darwin  GOARCH=arm64 CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o bin/tml_ext ./src

ビルド後の導入 ​

  1. 上のスクリプトを実行して .jar か .tmlext を得る。
  2. ランチャー → 設定 → 拡張機能 → インポート で選ぶか、ウィンドウに直接ドロップ(複数可)。
  3. 権限一覧を確認して有効化。一度確認したパッケージは記憶され、再有効化時の確認は出ません(別のパッケージでは再確認)。
  4. コードを変えたら再ビルドして再インポート。ファイルを差し替えただけなら「更新」でも可。

「詳細 / 有効化 / アンインストール」や状態表示は インポートと管理 を参照してください。

初回読み込み時にパッケージの SHA-256 が extensions/trusted.json に記録され、内容が変わると 「拡張機能が変更されています」と表示されます。該当項目を消して再承認してください。

つまずきやすい点 ​

症状原因
インポートしても一覧に出ないマニフェストの JSON 構文エラー、または id の重複
「ランタイムが利用できません」インタプリタが PATH に無い(Java/Python/Node)、アーキテクチャ違い、実行権限なし
起動直後に終了する入口が stdin を読んでいない、または {"ready": true} を返していない
Rust / Go の初回ビルドが止まって見えるGitHub の TML リポジトリから SDK を取得中。以降はキャッシュ
別の PC で動かないネイティブ(C / Rust / Go)はビルド時のプラットフォーム依存。対象ごとに再ビルド
macOS で開けない同梱バイナリに署名が必要。ローカルは xattr -cr、配布は署名

関連 ​