12
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Vite+も発表!VoidZeroについて調べてみた

Posted at

はじめに

今回は、Vue, Vite の作者である Evan You 氏らが立ち上げた新しい企業兼組織「VoidZero」について気になったので、記事にまとめてみました。
※ JavaScriptの演算子やリンク無効化の記述のお話ではありません

VoidZeroとは何か?

VoidZeroは、JavaScriptのための次世代開発ツールを構築し、Web開発者の生産性を高めることをミッションに掲げている組織です。

JavaScriptエコシステムにおいて重要なプロジェクトを開発・保守しています。
それぞれの役割は、以下です。

  • Vite
    • ウェブのために設計された次世代フロントエンドビルドツール
  • Vitest
    • Viteと親和性の高い次世代のテストランナー
  • Rolldown
    • Rust 製の高速 JavaScript バンドラー
  • Oxc
    • Rust 製の JavaScript 言語ツールチェイン(コレクション)

VoidZero は何を目指しているのか?

VoidZeroが掲げる最大の目標は、「統一された JavaScript ツールチェーン(Unified Toolchain)の実現」です。
具体的には、現在断片化してしまっているJSエコシステムを、Rust製の高速で統一されたツールチェーンによって根本から作り直そうとしています。

なぜ統一されたツールチェーンが必要なのか?

Evan You氏は、VoidZero の発表記事の中で、Vite が抱える課題として以下の点を挙げています。

The trust the community has placed in Vite made me reflect deeply on its future. While Vite has greatly improved the high-level developer experience, internally, it still relies on various dependencies, with abstractions and workarounds to smooth over inconsistencies. Performance-wise, it remains bottlenecked by duplicated parsing and serialization costs across different tools, and it can't fully leverage native tooling like esbuild due to feature constraints and limited customizability.

(翻訳)
コミュニティがViteに寄せた信頼は、その将来について深く考えさせられました。Viteは開発者体験を大幅に改善しましたが、内部的には依然として様々な依存関係に依存しており、抽象化や回避策で不整合を補っています。パフォーマンス面では、異なるツール間で重複する解析とシリアライゼーションのコストがボトルネックとなっており、機能制限やカスタマイズ性の低さからesbuildのようなネイティブツールを十分に活用できていません。

出典:Announcing VoidZero - The Next Generation Toolchain for JavaScript

つまり、Vite 内部で様々な依存関係が絡み合い、多様なツールが乱立していて相互運用性が低い状態になってしまっている。
そのため、統一された JavaScript ツールチェーンが必要だと述べています。

例えば、わかりやすい例として

【現在】
下記のように、複数のツールを組み合わせて使用している場合、プラグインや設定の互換性の問題、挙動の不一致などが発生しやすくなります。

  • eslint
    • JavaScript/TypeScriptのリンター
  • stylelint
    • CSS/SCSSのリンター
  • prettier
    • コードフォーマッター

【今後】
下記のように、統一されたツールチェーンを使用することで、設定や挙動の一貫性が保たれ、開発体験が向上します。

  • Oxc
    • Rust製の統一されたリンター(Oxlint)、フォーマッター、パーサー

Rust製ツールによる高速化と統合

ただ、もちろん「統一されたツールチェーン」を実現するだけでも素晴らしいのですが、VoidZero はそれだけに留まりません。
より高速なツールチェーンを実現するために、ネイティブコンパイル言語(Go, Rust..etc)で記述されたツールを選定、開発しています。
JavaScript 製ツールのような変換プロセスが不要となり、非常に高速に動作してくれます。

※ ネイティブコンパイル言語とは、プログラム実行前にコード全体を CPU が直接理解できる「機械語」に一括コンパイルする言語のこと

どれくらいはやいの?

公式のベンチマーク結果を見ると、JavaScript製ツールとの差は歴然ですが、同じネイティブコンパイル言語製ツール同士の比較でも非常に高速であることがわかります。

  • The fastest and most spec-compliant JavaScript parser (oxc-parser), 3x faster than SWC - benchmark
  • The fastest Node.js-compatible resolver (oxc-resolver), 28x faster than enhanced-resolve - benchmark
  • The fastest TypeScript / JSX transformer (oxc-transform), 4x faster than SWC - benchmark
  • The fastest linter (oxlint), 50–100x faster than ESLint - benchmark
  • The most feature-complete test runner for web applications (Vitest)
  • The fastest bundler (Rolldown), built on top of Oxc. Faster than esbuild and all other Rust bundlers - benchmark (currently in alpha)

(翻訳)

  • 最速かつ仕様準拠のJavaScriptパーサー(oxc-parser)、SWCより3倍高速 - ベンチマーク
  • 最速のNode.js互換リゾルバー(oxc-resolver)、enhanced-resolveより28倍高速 - ベンチマーク
  • 最速のTypeScript / JSXトランスフォーマー(oxc-transform)、SWCより4倍高速 - ベンチマーク
  • 最速のリンター(oxlint)、ESLintより50~100倍高速 - ベンチマーク
  • Webアプリケーション向けで最も機能充実したテストランナー(Vitest)
  • 最速のバンドラー(Rolldown)、Oxcを基盤に構築。esbuildおよびその他全てのRustバンドラーより高速 - ベンチマーク(現在アルファ版)

出典:Announcing VoidZero Inc.

各ツールの役割

では、VoidZero が開発・保守している各ツールについて簡単に説明します。

Vite

おなじみのフロントエンド・ビルドツールです。
一言で言うと、周辺環境を快適にしてくれるものです。

類似ツールとしては、Webpack などがありますが、開発サーバーの起動や HMR が遅い問題点がありました。
これをバンドル方法を変更(必要な分だけ)したりすることで解決してくれます。

特徴としては以下です。

  • 開発サーバーの起動が爆速
    • 開発時はファイルをバンドルしないため、起動が爆速
    • ※ 厳密には、変更の可能性が低い依存関係をまとめた node_modules は事前にバンドルされる
  • HMR(Hot Module Replacement)が爆速
    • バンドルせずに、変更されたファイルだけを処理するため、コードを保存した瞬間に画面更新がはしる
  • 設定がシンプル
    • トランスパイルするための設定などをデフォルトでやってくれる

Vite+ の発表

また、2025年10月には Vite の「ドロップイン・アップグレード(そのまま置き換え可能な上位版)」として Vite+ が発表されました。
企業向けのエンタープライズ機能を含む統合ツールとして設計されています。

一言で言うと、これ一つで開発・テスト・リント・フォーマット全てが完結する統合ツールです。

これまでバラバラにインストール・設定していたツール群を、vite コマンド一つで統一的に扱えるようになります。
内部的には、後述する Vitest や Oxc、Rolldown などの技術がフル活用されています。

例えば、下記のコマンドを実行できます。

  • vite test
    • Vitest を使用したユニットテストの実行
  • vite lint
    • Oxclint を使用したコードのリント
  • vite fmt
    • Oxcfmt を使用したコードのフォーマット
  • vite lib
    • Rolldown と tsdown を使用したバンドルライブラリ

さらに、AI Agent が Vite+ の環境を理解し、より賢く動く「Agent Mode」も計画・発表されました。

複雑な設定や互換性のための調整をせずにシームレスに連携できるようになります。
それこそ VoidZero の目標である「統一された JavaScript ツールチェーン」の実現に向けて、着実に進んでいます。

講演映像も公開されていたので、興味がある方はぜひチェックしてみてください。
※ 17:36 あたりから Vite+ のデモを見ることができます

Vitest

JavaScript/TypeScript向けのテストフレームワークです。

類似ツールとしては、Jest などがありますが、名前の通り Vite との親和性が高いです。
Vitest であれば、Vite の設定をそのまま共有できたり、Vite の開発サーバーそのものを内部で利用して動作させることもできます。

特徴としては、以下です。(Vite を使用している前提)

  • 実行が爆速
    • Vite の開発サーバーをそのまま利用するため、起動が爆速
  • 設定がシンプル
    • Vite の設定をそのまま共有できるため、各種プラグインやエイリアスなどの設定をそのままテストでも利用できる

Rolldown

Rust製の新しい JavaScript バンドラーです。

類似ツールとしては、Rollup や esbuild などがありますが、Rolldown は Rust 製であり、内部で Oxc が動作しています。
※ esbuild は Go 言語製です。

現状、Vite で導入されている Rollup と esbuild の両方を置き換えることを目指しています。

(おさらい)

  • 現在の Vite
    • 開発時
      • esbuild を使用して高速にトランスパイル
    • 本番ビルド時
      • Rollup を使用して最適化・バンドル

開発環境と本番環境で共通で使えるツールとして登場したのが、 Rolldown です。

特徴としては、以下です。

  • 動作が爆速
    • Rust 製であり、Oxc を内部で利用しているため非常に高速
    • JavaScript(Node.js) で書かれている Rollup と比較しても爆速
  • 環境における一貫性(Consistency)
    • 開発環境と本番環境で同じツールを使用できるため、環境ごとの挙動の違いを減らせる
    • 「開発環境では動くのに本番でバグる」といった esbuild と Rollup の挙動不一致を解消できる

Oxc

Rust製の JavaScript 言語ツールチェイン(コレクション)です。
一言で言うと、開発ツールの基盤となるもの。

目的としては、ESLint(リンター)や Prettier(コードフォーマッター)などの既存の JavaScript 製ツールの代替を目指しています。
各ツールの役割は以下です。

oxlint(Linter)

oxfmt(Formatter)

oxc-parser(Parser)

oxc-transform(Transformer)

oxc-minify(Minifier)

oxc-resolver(Resolver)

特徴としては、以下です。

  • 動作が爆速
    • Rust 製であり、ネイティブコンパイルされるため爆速
  • Vite, Rolldown との親和性が高い
    • Rolldown の内部で Oxc のツール(パーサーやトランスパイルなど)を利用している
  • オールインワン
    • リンターやフォーマッター、パーサーなど、開発に必要なツールを 1 つのプロジェクトで提供している

まとめ

いかがでしたでしょうか?
統一された JavaScript ツールチェーンを目指す VoidZero の取り組みについて簡単に紹介しました。
これが実現すれば、複数のツールを組み合わせることによる設定の煩雑さや互換性の問題が大幅に改善され、開発体験が大きく向上しそうです。
今後の動向に注目していきたいと思います!

12
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?