Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>TsuzuriNew to Visual Studio Code? Get it now.
Tsuzuri

Tsuzuri

tmidorikawa

|
6 installs
| (0) | Free
Tsuzuri IDE
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Tsuzuri for Visual Studio Code

Tsuzuri は、関数型の式と所有権モデルを備え、LLVM でネイティブコードと WebAssembly を生成するプログラミング言語です。 この拡張機能をインストールするだけで、VS Code で Tsuzuri のコーディング / 実行 / テスト / デバッグ ができます。

ブレークポイントで停止し、ローカル変数と呼び出し履歴を表示している画面

特長

  • 追加のインストールが不要: コンパイラ、LLVM、リンカー、C ランタイム、デバッガーを同梱していますので、追加のランタイム インストールなどは不要です。
  • 書きながら確認: 保存前からエラーと警告を表示し、ホバーで型とドキュメントを確認できます。
  • ボタンひとつで実行: エディター右上のボタンでビルド、実行、デバッグができます。tasks.json や launch.json は不要です。
  • テスト: test 宣言を Test Explorer に表示し、まとめて、または 1 件ずつ実行できます。
  • デバッグ: ブレークポイント、ステップ実行、呼び出し履歴、ローカル変数を利用できます。
  • オフラインのドキュメント: 日本語の言語ハンドブックを同梱しています。

はじめに

1. インストール

拡張機能ビュー(Windows / Linux は Ctrl+Shift+X、macOS は Cmd+Shift+X)で Tsuzuri を検索し、Install を選びます。 OS と CPU に合ったパッケージが自動で選ばれます。対応している OS と CPU は、後述の「対応環境」を参照してください。

2. プロジェクトを作る

  1. コマンドパレット(Windows / Linux は Ctrl+Shift+P、macOS は Cmd+Shift+P)で Tsuzuri: New Project を実行します。
  2. 空のフォルダーを選びます。
  3. プロジェクトの名前空間(例: Acme::MyApp)を入力します。入れ子の名前空間は :: でつなぎます。既定値はフォルダー名を PascalCase にしたものです。次のファイルが作られ、そのフォルダーが新しいウィンドウで開きます。
ファイル 内容
Main.tz 名前空間の宣言、プログラムの入口、テストの例
Tsuzuri.toml パッケージ名、バージョン、言語版(edition)、既定の名前空間(namespace)
.gitignore ビルド結果を置く .tsuzuri/ と、知識グラフを置く target/ を Git の管理から除外
AGENTS.md・llms.txt AI エージェント向けの指示と索引(英語)。AI に作業させる前に、tsuzuri guide を読むよう案内します

ファイルは同梱のコンパイラの tsuzuri new が作ります。

フォルダーを信頼するかどうか確認されたら、信頼を選びます。信頼していないフォルダーでは、コンパイラやプログラムを起動しません。 既存のフォルダーでも、Main.tz か Tsuzuri.toml があれば Tsuzuri のプロジェクトとして扱います。

3. Hello, World を表示する

Main.tz を開き、次の内容にします。

namespace MyApp

def main :: unit -> i32 = \() ->
    do! IO.writeln "Hello, World!"
    0

test "adds numbers" = assert (1 + 2 == 3)
  • namespace MyApp は、このファイル(モジュール)が属する名前空間です。ファイルの最初に書きます。作成した Main.tz には、入力した名前空間が入っています。
  • def main :: unit -> i32 はプログラムの入口です。\() -> の後に字下げした行が main の本体で、最後の 0 がプロセスの終了コード(0 は成功)です。 コマンドライン引数を受け取るには def main :: Array<string> -> i32 = \args -> と書きます(スニペット mainargs)。
  • do! IO.writeln "..." は、文字列と改行を標準出力へ書き込みます。
  • test "名前" = assert (条件) はテストです。通常のビルドには含まれません。

エディター右上の ▷(Run Project)を押します。ファイルを保存してビルドし、ターミナルに Hello, World! を表示します。

Run Project でビルドし、ターミナルに Hello, World! を表示した画面

使い方

コードを書く

  • 構文の色分け、括弧の補完、コメントの切り替え、折りたたみ。
  • 入力中の構文・型・所有権のエラーと警告。保存していない変更も検査します。
  • 型とドキュメントコメント(///)のホバー表示、定義への移動、アウトライン、パンくずリスト。
  • Format Document(Windows / Linux は Shift+Alt+F、macOS は Shift+Option+F)による公式フォーマッターでの整形。
  • キーワード、型、標準ライブラリの関数の補完。言語サーバーによるローカル変数・レコードのフィールド・モジュールのメンバー(. の後)・名前空間のモジュール(Sample:: の後)の補完。namespace と using も考慮します。
  • 参照の検索と強調表示、名前の変更(F2。意味が変わる変更は拒否)、ワークスペースのシンボル検索、シグネチャヘルプ、意味に基づく色分け。
  • 診断の修正案のクイックフィックス(未使用のローカル変数に _ を付けるもの、網羅していない match に足りない腕を足すもの、よくある誤りの字句を置き換えるものなど。適用するとその診断のコードの件数が減り、どのコードのエラーも増えないことを言語サーバーが確かめたものだけ。ほかのエラーは残っていてもかまいません)。
  • 文書の確かな(certain)修正案をまとめて適用する「Fix all auto-fixable problems」(source.fixAll.tsuzuri)。保存のたびに適用するには、設定に "editor.codeActionsOnSave": {"source.fixAll.tsuzuri": "explicit"} を足します。
  • エラーの位置のホバーに、その診断の種類(kind)と、説明を読む tsuzuri explain <kind> を表示します。
  • エラーに関連する位置(ムーブした場所、借用した場所、最初の定義など)を、問題パネルとホバーの関連情報に表示します。
  • def、main、mainargs、namespace、using、test、record、union、match、try、class、doc などのスニペット。

関数にカーソルを合わせ、型とドキュメントコメントを表示した画面

エラーは波線と問題パネルに表示します。

保存前の型エラーを波線と問題パネルに表示した画面

IO. のようにモジュール名に続けて入力すると、標準ライブラリの関数を補完します。

IO. に続けて標準ライブラリの関数を補完している画面

実行とビルド

エディター右上のボタン、コマンドパレット、ステータスバー左下の Tsuzuri から操作します。 実行前には未保存のファイルを保存します。

操作 方法 結果
実行 ▷ ボタン、Tsuzuri: Run Project ビルドしてターミナルで実行。IO.read_line による入力も可能
ビルド Tsuzuri: Build Project、Tasks: Run Build Task .tsuzuri/bin/Main(Windows は Main.exe)を作成
検査 Tsuzuri: Check Project 実行ファイルを作らずにエラーだけを確認
WebAssembly Tsuzuri: Build WebAssembly .tsuzuri/bin/Main.wasm を作成

ビルドと実行は既定で -O3 の最適化を行います。設定の tsuzuri.optimization で変更できます。 WebAssembly を動かすブラウザーや Node.js などのホストは、別に用意してください。

コマンドパレットに Tsuzuri のコマンドを表示した画面

テスト

テストは test "名前" = assert (条件) と書きます。次の例では、main が小計 360 を表示します。

record Order { price: i64, quantity: i64 }

/// 注文の小計を計算します。
def subtotal :: Order -> i64 = \order ->
    let amount = order.price * order.quantity
    amount

def main :: unit -> i32 = \() ->
    let order = Order { price: 120, quantity: 3 }
    do! IO.writeln (subtotal order)
    0

test "subtotal multiplies price by quantity" =
    assert (subtotal (Order { price: 120, quantity: 3 }) == 360)

test "empty order costs nothing" =
    assert (subtotal (Order { price: 120, quantity: 0 }) == 0)

アクティビティバーの Testing ビューに、プロジェクト内のテストが自動で表示されます。 すべてのテストをまとめて実行するほか、行番号の横の ▷ から 1 件ずつ実行できます。 結果には成否と所要時間が表示され、失敗したテストはその位置にメッセージを表示します。 既定では -O0 でビルドします。Testing ビューの実行ボタンの横にあるメニューで Native (O3) のプロファイルを選ぶと、最適化したコードでテストできます。 テストを 1 件選んで Debug(行番号の横の ▷ を右クリックして Debug Test)を押すと、そのテストだけをデバッグ情報付きでビルドしてデバッガーで実行します。テストの本体に置いたブレークポイントで止まり、終了すると成否が Testing ビューに表示されます。

Testing ビューと行番号の横にテスト結果を表示した画面

デバッグ

  1. 行番号の左をクリックして、ブレークポイントを置きます。
  2. F5 を押すか、エディター右上のデバッグボタン(Debug Project)を押します。

デバッグ情報付きでビルドし、ブレークポイントで停止します。変数、ウォッチ式、呼び出し履歴、ステップ実行を利用できます。 変数には文字列、配列、リスト、union(Maybe・Result を含む)、Map、Set、関数値を Tsuzuri の値として表示します("héllo"、Some(40)、length=3 と要素)。この表示のための LLDB の formatter は、デバッグの開始時に自動で読み込みます。 呼び出し履歴には Main.show のような Tsuzuri の関数名が出ます。ステップ実行は、ランタイムとコンパイラーが生成した補助関数に入りません。 冒頭の画面は、上の例で subtotal の中に止め、引数 order とローカル変数 amount を表示したものです。

初回のデバッグでは、同梱しているデバッガー拡張機能 CodeLLDB を自動でインストールします。インターネット接続は不要です。 既に CodeLLDB をインストールしている場合は、それを使います。

通常は launch.json を作る必要はありません。プログラムに引数や環境変数を渡す場合は、次のように指定します。

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "tsuzuri",
            "request": "launch",
            "name": "Debug Tsuzuri",
            "args": ["input.txt"],
            "env": { "LOG_LEVEL": "debug" }
        }
    ]
}

project でプロジェクトのフォルダー、stopOnEntry で開始直後の停止も指定できます。

ドキュメントを読む

Tsuzuri: Open Documentation で、言語の概要、言語リファレンス、組み込み型・標準モジュール、コンパイラの使い方を含む日本語ハンドブックを VS Code の中に開きます。 同じ内容は GitHub でも読めます。

コマンド

コマンド 内容
Tsuzuri: New Project 空のフォルダーに新しいプロジェクトを作る
Tsuzuri: Run Project ビルドしてターミナルで実行する
Tsuzuri: Debug Project デバッグ用にビルドしてデバッガーを起動する
Tsuzuri: Build Project 実行ファイルを .tsuzuri/bin/ に作る
Tsuzuri: Check Project ビルドせずにエラーを検査する
Tsuzuri: Test Project プロジェクトのすべてのテストを実行する
Tsuzuri: Build WebAssembly WebAssembly を .tsuzuri/bin/ に作る
Tsuzuri: Open Documentation 同梱のハンドブックを開く
Tsuzuri: Project Actions 主な操作を一覧から選ぶ。ステータスバーの Tsuzuri と同じ
Tsuzuri: Show Toolchain 使用中のコンパイラとツールチェーンを出力パネルに表示する
Tsuzuri: Restart Language Server 言語サーバーを再起動する

設定

設定 既定値 内容
tsuzuri.optimization 3 ビルドと実行の最適化レベル(0〜3)。デバッグは常に 0
tsuzuri.denyWarnings false 警告があれば検査、ビルド、実行を失敗させる
tsuzuri.projectPath 空 プロジェクトのフォルダー。空なら、開いたファイルから最も近い Main.tz か Tsuzuri.toml を探す
tsuzuri.compilerPath 空 開発用。同梱以外のコンパイラを使う場合の絶対パス
tsuzuri.toolchainPath 空 開発用。同梱以外のツールチェーンを使う場合の絶対パス

1 つのフォルダーに複数のプロジェクトを入れる場合は、プロジェクトごとにワークスペースフォルダーを分けるか、tsuzuri.projectPath を指定してください。

対応環境

VS Code 1.103 以降が必要です。

OS CPU 編集・実行・テスト デバッグ
macOS Apple シリコン(ARM64) 対応 対応
Linux(glibc) x64、ARM64 対応 対応
Windows x64 対応 対応
Windows ARM64 対応 未対応
  • Intel Mac、32-bit x86、Alpine Linux など musl ベースの環境で動く VS Code、Web 版 VS Code は対象外です。
  • Apple Silicon 上でも、Rosetta で動く x64 版 VS Code は対象外です。arm64 版を使用してください。ツールチェーンの作成と再検証も arm64 の Clang を要求します。
  • 対象外の OS/CPU では、拡張機能は起動時に対応ホストを示すエラーで停止し、LSP・ビルド・実行・テストを開始しません。開発用コンパイラを設定しても同じです。
  • Remote - SSH、WSL、Dev Containers では、リモート側に拡張機能をインストールしてください。
  • Linux で作る実行ファイルは、同梱の musl を使います。
  • VS Code を使わない環境(CI、サーバー、ほかのエディター)では、同じツールチェーンを CLI の配布物(tsuzuri-<version>-<host>.tar.gz)として使えます。導入手順はコンパイラの使い方を参照してください。

現在の制限

  • 型に基づく補完の順位付け、推論型や借用の inlay hint(配列・リストの暗黙の複製の inlay hint だけを表示します)、W1001 と診断の修正案(現在は E1021 の足りない腕だけ)以外のクイックフィックスには未対応です。型別名・class・method・export した関数の名前の変更は拒否します。
  • ウォッチ式とデバッグコンソールの式は LLDB の C の式として評価します。Tsuzuri の式の評価には対応していません。標準ライブラリのソースはコンパイラーに埋め込まれているので、標準ライブラリの関数へステップインすると逆アセンブルを表示します。

セキュリティとプライバシー

  • 信頼していないワークスペースでは、コード、コンパイラ、設定に由来するプログラムを起動しません。
  • この拡張機能は利用状況のデータ(テレメトリ)を送信しません。

リンク

  • Tsuzuri のリポジトリ
  • 日本語ドキュメント
  • 問題の報告
  • 拡張機能の開発者向け情報

ライセンス

Apache License 2.0 です。同梱している LLVM、Zig、CodeLLDB などは、それぞれのライセンスに従います。各ライセンスはパッケージに含まれています。

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft