Vize

Vue ツールの中での Vize の位置づけ

Vize が何を目指しているかは、既存のツールと機能が重なるため、伝わりにくいことがあります。ただし、重なる機能があっても、同じ層を担っているとは限りません。

公式ツールもあれば、フレームワークに依存しないツールもあります。エディターを中心に据えるもの、コンパイラを中心に据えるもの、型チェックに集中するもの、ツールチェーン全体を目指すものもあります。

それぞれを理解するには、何の問題を解決しようとしているかを整理することが役立ちます。以下は、この記事を公開した 2026 年 3 月時点の位置づけです。

役割をひと目で比べる

まず、それぞれの中心的な役割を表にまとめます。

プロジェクト 中心的な役割 担っていない役割
Vize Rust による独立した Vue ツールチェーン全体 Vue 公式のエディター基盤ではない
Vue Language Tools Vue 公式のエディター支援と型チェック コンパイラ、リンター、フォーマッター全体をまとめたツールチェーンではない
Golar typescript-go を使う埋め込み言語の型チェック基盤 Vue 専用のツールチェーン全体ではない
Verter 独立した Vue コンパイラ、LSP、ビルドツールを含むツールチェーン Vue 公式のツールチェーンではない
Vite+ ランタイム、パッケージ管理、開発、ビルド、チェック、テストをまとめる Web 開発の入口 Vue 専用のコンパイラやリンターではない
Oxlint 高速な JavaScript / TypeScript リンター 単体で Vue テンプレート全体を理解するリンターではない

この違いを押さえると、各ツールの関係を整理しやすくなります。

Vize

Vize は、Rust で作る、独立した Vue ツールチェーン全体を目指しています。

対象は幅広く、次の機能を含みます。

  • Vue SFC のコンパイル
  • Vue 固有のパターンの lint
  • Vue ファイルのフォーマット
  • Vue テンプレートとスクリプトのバインディングの型チェック
  • LSP によるエディター支援
  • コンポーネントギャラリー
  • Vue を理解するツールの AI ワークフローへの提供

この広さが、比較対象の多くのプロジェクトと異なる点です。エディター拡張、型チェッカー、バンドラーのプラグインをそれぞれ作るだけでなく、共通のアーキテクチャを持つ Vue 専用のツールチェーンとしてまとめようとしています。

型チェックも、vue-tsc を高速化するだけが目標ではありません。この記事で紹介するのは、corsa-bind によるネイティブのプロジェクトセッションを利用し、Vue 用の仮想ファイル生成、診断の位置対応、エディター向けの型情報を vize_canon が担う設計です。

Vize における tsgo の活用

corsa-bind: The Idea of Language Processor Orchestration では、実行を速くすることに加え、「コンパイラそのものではなく、仕事の組み立て方を変える」という考え方を紹介しています。

Vize が tsgo を活用する考え方にも、通じるものがあります。

Vize は tsgo だけで製品全体を構成しようとしていません。また、tsgo を機能のたびに最初から起動する CLI として使う方向でもありません。Vue ツールチェーンの中で再利用できる、ネイティブの TypeScript 処理サービスとして扱う方向です。

  • vize check は Vue 用の仮想 TypeScript プロジェクトを生成し、Corsa のプロジェクトセッションを開いて、まとめて診断を要求します。
  • vize_maestro はネイティブ型チェックが有効な場合、ホバー、補完、定義への移動、参照、名前変更のために Corsa ブリッジを保持できます。
  • vize_patina は型情報を使う lint ルールのために、必要になった時点でネイティブの Corsa セッションを作ります。JavaScript 側の処理系をすべて組み直すのではなく、必要な型情報だけを問い合わせます。
  • Vue 固有の仮想ファイル生成とソースマッピングは vize_canon が担い、TypeScript 側の処理は corsa-bind と tsgo が担います。

Vize での tsgo の活用は、vue-tsc を速いバイナリに置き換えるだけにとどまりません。常駐する TypeScript 処理系の周りに Vue 用の制御層を置き、CLI の一括チェック、エディター機能、型情報を使う lint で共有する考え方です。

Vize と Vue Language Tools

公式の Vue Language Tools は、Vue のエディター支援と型チェックを本番利用できる形で提供する基盤です。次のツールを含みます。

  • VS Code 拡張 Vue (Official)
  • vue-tsc
  • @vue/language-server
  • @vue/language-core

中心にあるのは言語ツールです。エディター支援、型チェック、仮想コード生成などを通じて、IDE で Vue を扱いやすくします。

Vize も型チェッカーと LSP を持つため、この領域と重なります。加えて、次の範囲にも取り組んでいます。

  • 独自のコンパイラ
  • lint とフォーマット
  • Musea や MCP ツールなどの機能
  • TypeScript よりも Rust を中心に据えたアーキテクチャ

役割を分けると、次のようになります。

  • Vue Language Tools は、Vue 公式のエディター支援と型チェックの基盤
  • Vize は、Vue ツールチェーンのより広い範囲を、1 つの Rust アーキテクチャにまとめる独立した試み

この記事の時点で、本番利用できるエディター支援を優先するなら、公式の Vue ツールが基準になります。より広い範囲を扱う、実験的な Rust 製の Vue ツールチェーンに関心があるなら、Vize が候補になります。

Vize と Golar

Golar は、Vize と同じ範囲を担う Vue ツールチェーンではありません。

Golar は typescript-go を基盤とする埋め込み言語フレームワークです。Vue では公式の @vue/language-core を再利用し、.vue、.astro、.svelte などのファイルを tsgo で扱うことに注力しています。

中心的な役割は、次のとおりです。

  • CLI での型チェック
  • 型宣言の出力
  • 埋め込み言語と tsgo の統合
  • 仮想コード生成のためのプラグイン基盤

Vize とは、主に 2 つの点が異なります。

  1. 対象範囲

Golar は、typescript-go を使う型チェックと仮想コード生成に集中しています。 Vize は、コンパイラ、リンター、フォーマッター、型チェッカー、LSP、ギャラリーなど、Vue ツールチェーンのより広い範囲を担おうとしています。

  1. Vue 固有の層を誰が担うか

Golar は、Vue のコード生成に公式ツールを意図的に再利用します。 Vize は、Vue 固有の処理を Rust で独自に構築する方向です。

実行層にも違いがあります。Golar は、埋め込み言語と typescript-go の統合を中心に据えています。この記事で紹介する Vize のネイティブ型チェックは、vize_canon と corsa-bind を組み合わせ、Vue ツールチェーンをどこまで 1 つのネイティブアーキテクチャにまとめられるかを探るものです。

Golar は tsgo で埋め込み言語を扱いやすくし、Vize は Vue ツールチェーン全体をネイティブに構築することを目指しています。

Vize と Verter

Verter は、この比較の中で Vize に最も近い設計思想を持つプロジェクトです。

Verter も、Rust と TypeScript を組み合わせた Vue コンパイラ、LSP、ビルドツール、リンターを含む幅広いツールチェーンを目指しています。既存の一部を修正するだけでなく、Vue ツールチェーン全体を考え直す点で、Vize と共通しています。

違いは、対象分野よりも、機能の組み合わせやアーキテクチャにあります。

  • Verter は、厳密な型付けを重視し、VS Code と TypeScript のプロバイダーを中心に据えています。
  • Vize は、統一 CLI、Vite 統合、Musea を備え、「1 つのパーサー、1 つの AST、1 つのツールチェーン」という設計を重視しています。

強調する点にも違いがあります。

  • Verter は、型付き TSX の生成、TSGO / tsserver などの型プロバイダー、幅広い組み込み lint ルールを重視しています。
  • Vize は、コンパイル、lint、フォーマット、型チェック、エディター支援、コンポーネントギャラリー、AI 統合を Rust 製のツールチェーンでまとめ、Vite+ や Oxlint と補完し合う位置づけです。

Verter は、名前だけが違う同じツールではありません。Vue ツールチェーンを最初から設計し直すなら、どんな形になるかという問いに対する、もう 1 つの本格的な取り組みと捉えています。

Vize と Vite+

Vite+ は、異なる層を担います。

Vite+ は、Web 開発全体の入口をまとめるツールです。ランタイムのセットアップ、パッケージ管理、開発、チェック、テスト、ビルド、パッケージ作成、モノレポのタスク実行を 1 つのワークフローで管理します。Vite、Vitest、Oxlint、Oxfmt、Rolldown、tsdown などを組み合わせています。

Vite+ の特徴は、次のとおりです。

  • フレームワークに依存しない
  • 開発ワークフローを中心に据える
  • Vue に限らず、Web 開発全体を扱う

一方、Vize はVue 専用です。

Vite+ は Web ツールチェーンの入口をまとめますが、Vue コンパイラや Vue テンプレートのリンターを目指すものではありません。 Vize は、その基盤に組み込めます。この記事のリポジトリでも、ワークスペースのタスク管理に Vite+ を使っています。

両者は補完し合う関係です。

  • Vite+ は、汎用 Web ツールチェーンの外側の基盤
  • Vize は、その中で動作できる Vue 専用の処理系

Vize と Oxlint

Oxlint も、異なる層を担います。

Oxlint は、Oxc エコシステムの高速な JavaScript / TypeScript リンターです。一般的な JS/TS ルールや型情報を使う処理に強みがありますが、単体で Vue テンプレート固有の診断すべてを置き換えるものではありません。

その Vue 固有の領域を担当するのが Vize Patina です。

Patina は、次のような lint を扱います。

  • テンプレートのディレクティブ
  • SFC の構造
  • コンポーネントの規約
  • Vue テンプレートのアクセシビリティ

役割を分けると、次のようになります。

  • Oxlint は、汎用の JS/TS lint
  • Vize / Patina は、Vue 固有の lint

oxlint-plugin-vize の alpha も、両者を連携させるためのものです。

Vize の位置づけ

Vize は複数の分野にまたがりますが、そのどれか 1 つだけでは説明しきれません。

  • Vue 公式の言語ツールよりも、広い範囲を扱う
  • Golar のような tsgo を活用するプロジェクトよりも、広い範囲を扱う
  • ツールチェーン全体を目指す点で、Verter に最も近い
  • Vite+ などの汎用ワークフローを補完する
  • Oxlint などの汎用 JS/TS リンターを補完する

1 文で表すなら、次のようになります。

Vize は、Vue ツールチェーンのより広い範囲を Rust にまとめる独立した試みです。周辺の汎用ツールと協力しながら、Vue 固有の処理を統合することを目指しています。

目的に応じた選び方

この記事での位置づけに沿って、目的を整理します。

  • Vue の公式エディター支援と、本番利用できる型チェックが必要なら、Vue Language Tools
  • 公式の言語ツールを再利用し、typescript-go で埋め込み言語を型チェックしたいなら、Golar
  • 厳密な型付けと LSP を重視する、別の包括的な Vue ツールチェーンを検討するなら、Verter
  • Web 開発の汎用ワークフローをまとめたいなら、Vite+
  • 高速な JavaScript / TypeScript lint が必要なら、Oxlint
  • コンパイラ、lint、フォーマット、型チェック、エディター支援、ギャラリー、AI 支援を 1 つの Rust 製の仕組みとしてまとめる可能性に関心があるなら、Vize

それぞれが担う役割の違いを押さえて、目的に合わせて考えられます。