2024年10月19日、東京・
この年のカンファレンスは、Vue.
Keynote (Evan You氏)
基調講演はVueおよびViteの作者であるEvan You氏が務めた。Vueの10年間の歩みを振り返ることから始まり、JavaScript開発の根幹を成すツールチェインの未来像へと展開した。

Vue.js:10年の軌跡と現在地
2014年2月に正式アナウンスされたVue.
- Vue 1.
0: DOMベースのテンプレート構文を特徴としていた。 - Vue 2.
0: 仮想DOM(VDOM) を導入し、サーバーサイドレンダリング (SSR) に対応。SEO要件など、より高度な要求に応えられるようになった (2. 0は2023年12月にEOLを迎えた)。 - Vue 3.
0: もっとも大きな変更としてComposition APIを導入。ES2015やTypeScriptへの本格的な対応により、当初の小規模プロジェクト向けという位置づけから、大規模で野心的なアプリケーション開発にも耐えうるフレームワークへと進化した。
Vueは成熟期に入ったかに見えるが、その成長は続いており、各種データがその健全性を示している。
- コミュニティ活動:9,000以上のコミット、500以上のリリース、200万人以上のユーザー、25万以上のGitHubスター。
- 利用状況:npmでの週間ダウンロード数は約530万回、jsDelivr経由のCDNリクエストは月間10億回に達している。
- 成長率:過去1年間で37%の成長を記録しており、市場の飽和を考慮すると驚異的な数値である。
- Vue 3への移行:npmダウンロード数全体の66%をVue 3が占め、新規プロジェクトにおいては98.
4%がVue 3を選択している。
Vueの進化は続く:Vue 3.4から3.6へ
Evan氏は、今後のVueの進化についても具体的なロードマップを示した。
- Vue 3.
4 -
パフォーマンス改善を目的としたパーサーのリライト、Reactivityシステムのリファクタリング、そして
defineModel
の導入による開発者体験の向上が行われた。 - Vue 3.
5 (コードネーム: "Tengen Toppa Gurren Lagann") -
大幅な改善が実施されている。
-
Reactivityの刷新: メモリ使用量を削減し、大規模なリアクティブ配列への対応を強化した。
-
SSRの向上: 必要なコンポーネントのハイドレーションを遅延させる
Lazy Hydration
や、サーバーとクライアント間のID不整合を防ぐuseId
を導入した。 -
開発者体験の向上:
useTemplateRef
により型サポートを強化し、defineCustomElement
の改善により、Vueコンポーネントから作成したカスタム要素を他のフレームワークでより容易に利用できるようになった。
-
- Vapor Mode
-
長期的に取り組まれてきたVDOMを使用しない新しいレンダリングモード。パフォーマンスが非常に重要な場面での利用を想定しており、Vue 3.
6でVueコアの実験的機能として導入する予定。
Viteの課題と、次世代ツールチェインへの道
Viteは
- 依存関係の複雑さ
- 開発時にはesbuild、本番ビルド時にはRollupを使用するなど、複数のツールに依存している。これにより、パーサーの非互換性や、開発と本番での挙動の差異といった問題が生じている。
- パイプラインの非効率性
- 複数のツールを組み合わせることで、ソースコードのパース、変換、コード生成といった処理が重複して行われ、無駄が生じている。
VoidZeroのチャレンジ
この課題を解決するため、Evan氏は新会社
VoidZeroはVite、Vitest、Rolldown、Oxcの開発者とコアコントリビューターからなるチームで構成されている。これらのプロジェクトを統一されたビジョンのもとに統合し、次世代のJavaScript統一ツールチェーンを構築することを目指している。なおVoidZeroは、Accel主導で460万ドルのシード資金を調達した。
その中核をなすのが、Rustで書かれたツール群である。composableなパッケージとRust crateを提供する
- Oxc
(The Oxidation Compiler): パフォーマンスを最優先に設計した、パーサー、リンター、トランスフォーマーなどを提供するツールキット。 - Rolldown:Oxcを基盤とする次世代バンドラー。RollupのAPIとの互換性を持ち、Viteの新たなエンジンとなることを目指している。
RolldownはViteを支え、ソースコードをブラウザだけでなくCloudflare Workersなどでも動作させることができる。
Rolldownのパフォーマンスは圧倒的だ。巨大なベンチマークプロジェクト
Vue 3. |
114秒 |
Vue 3. |
8. |
Vue 3. |
1. |
この数値は、ツールチェインの刷新が開発者の生産性にどれほど大きなインパクトを与えるかを明確に示している。
今回のEvan氏の基調講演では、Vueの未来、そしてVueにとどまらないtoolingによるJavaScript世界全体の未来への貢献が語られた。
Oxc - The JavaScript Oxidation Compiler (Boshen Chen氏)
キーノートで紹介された
パフォーマンス哲学:「すべてのパフォーマンス問題はバグである」
Boshen氏は、従来のツール開発では機能実装が優先され、パフォーマンスは後回しにされがちだったと指摘した。Oxcでは、開発初期からパフォーマンスを最優先事項とし、
その設計思想の根幹には、Data-Oriented Design
Oxcの高速化技術
OxcがSWCの3倍から5倍高速であると語られる背景には、数々の緻密なエンジニアリングが存在する。
メモリ効率の追求
- Parser
- JavaScriptのAST
(抽象構文木) でもっとも多く確保される Token
オブジェクトのメモリレイアウトを最適化。また、ソースコードの位置情報を示す数値をu64
からu32
に変更することでメモリ使用量を削減している。 - String Handling
- ヒープアロケーションはパフォーマンス低下の大きな要因となるため、小さな文字列をスタック上に直接確保できる
compact_
ライブラリを多用し、メモリアロケーションを回避している。str - Memory Arena
- ASTの各ノードを個別にヒープに確保するのではなく、
bumpalo
というライブラリを用いて連続したメモリ領域に確保することで、CPUキャッシュの効率を劇的に向上している。
並列処理とアルゴリズム
- SIMD
- 一つの命令で複数のデータを同時に処理するSIMDを活用し、マルチラインコメントの探索などを高速化する。
- Oxlint
- 設定不要でESLint互換のリンター。Rustの並列処理機能を活用し、複数のCPUコアで同時にファイルを解析することで、ESLint比で50倍から100倍の高速化を実現する。
- Transformer
- BabelやSWCが複数のパスでASTを変換するのに対し、Oxcはシングルパスで処理を行うアーキテクチャを採用し、オーバーヘッドを削減している。
信頼性へのコミット
Oxcは速さだけでなく、正確性と信頼性も重視している。ECMAScriptの公式テストスイートであるtest262
に合格しているほか、BabelやTypeScriptの膨大なテストケースもパス。さらにFuzzingテストや、トップ3000のnpmパッケージに対するEnd-to-Endテストを実施することで、エコシステムにおける互換性を担保している。
UnJS: The Missing Tools for the Modern Web (Pooya Parsa氏)
Nuxtチームのメンバーであり、UnJSとNitroのクリエーターであるPooya Parsa (pi0)氏が、現代のサーバーサイド開発における課題と、その解決策について語った
Nitro誕生の経緯:多様化する実行環境への挑戦
Nitroは、元々Nuxt 3のために開発されたサーバーエンジンだが、その背景にはサーバーレスやエッジコンピューティングといった実行環境の多様化があった。
- Serverless Era
- Vercelのようなサーバーレス環境では、デプロイされるLambdaのサイズが重要になる。そこで、Nuxtのコアランタイムを最小限の依存関係で動作させる
nuxt-vercel-builder
を開発した。この取り組みはVercelとの協業に発展し、特定のフレームワークに依存しないオープンな標準へと繋がった。 - Edge and Workers Era
- Cloudflare Workersのような環境は、Node.
jsのAPIに完全には対応していない。この課題を解決するため、様々な環境の差異を吸収するPolyfillライブラリ unjs/
が開発された。unenv - APIの互換性
- 従来のNode.
jsサーバー (Expressなど) と、Web標準のFetch APIとではAPIの様式が異なる。このギャップを埋め、両方の環境でシームレスに動作する軽量なサーバーフレームワークとして unjs/
が生まれた。h3
UnJS:課題解決から生まれたユーティリティ群
これらの課題解決の過程で生まれた汎用的なライブラリ群が
unjs/
:開発者体験の良いコンソール出力consola unjs/
:高速なURLパーシングライブラリufo unjs/
:TypeScriptとESMをオンザフライで解決するランタイムjiti
これらのユーティリティは、累計5億回以上ダウンロードされており、Nuxtのエコシステムを越えて広く利用されている。
Nitroの現在と未来
現在、NitroはNuxtから独立し、AngularのメタフレームワークであるAnalog.
ゼロコンフィグでのデプロイ対応、柔軟なキャッシュルール、シンプルなサーバーサイドストレージ機能などを提供し、モダンなWebアプリケーションのバックエンドを支える強力な基盤となっている。
pi0氏はまた、新拡張機能
Next Generation Frontend Cross Talk
イベントのハイライトの一つが、Tooling分野で活躍する開発者が集ったクロストークセッションであった
- Evan You (creator of Vue), VoidZero
- Boshen Chen (Oxc and Rolldown)
- Yosuke Ohta (ota-meshi) (eslint-plugin-vue (-svelte)), ESLint
- Sosuke Suzuki (Prettier, WebKit committer)
- unvalley (Biome core member)
- Kia King Ishii (Vue core)
なぜ統一ツールチェインが必要なのか
JavaScriptは当初、ブラウザのための小規模なスクリプト言語として誕生した。しかし時代とともに、開発者たちはそれぞれ異なるツールを作り、異なるソリューションを採用してきた。この多様性は創造性を生んだ一方で、大きな課題も残した。
パーサーの非互換性、AST
また、こういった背景からビルド工程そのもの、そのための設定が複雑化を重ねていった。パネリストのohtameshi氏は
Viteが切り開いた道
過去4年間、Svelte、Solidといった新しいフレームワークが登場し、Next.
そして興味深いことに、AngularのAnalog.
Sosuke氏は、Unified Toolchainのメリットをこう語る。
なぜRustなのか
近年、JavaScript toolingのRust化が急速に進んでいる。OxcやBiome、SWCなど、多くのツールがRustで書き直されている。よく言われるのは
Oxcの開発者であるboshen氏は、率直にこう語った。
さらにAIの登場が状況を変えた。AIは大量のコードを一瞬で生成できる。だが、AIの生成したコードはJavaScriptを速くするのか? 答えは否だ。1万人の開発者がいれば、1分の削減でも大きなコスト削減になる。パフォーマンスの重要性は増すばかりだ。
一方、Evan氏は慎重な立場を示した。
Rustエンジニアのunvalley氏は、言語自体の魅力を強調する。
プラガビリティとパフォーマンスのトレードオフ
しかし、Rust化には課題もある。ESLintに造詣の深いothameshi氏は重要な懸念を示した。
これは難しいトレードオフだ。Evan氏は、rolldownにおける戦略を説明した。rolldownは、RollupのJavaScriptプラグインの多くをカバーする。だがトレードオフがある。遅くなる。JavaScriptの速度の問題もあるし、RustとJavaScriptのやりとりにはオーバーヘッドがある。解決のアイデアはいくつかある。まず、100%の互換性を維持する。rolldownでそのまま動くようにする。これだけでも、JavaScript版より速くなるだろう。次に、プラグインの動作範囲を指定し、パフォーマンスを向上させる。有名なものは自分たちで書いてコアに入れる。strict subsetを設計し、オーバーヘッドを最小化する。さらに先進的なアイデアとして、zero-cost AST変換によるASTの共通化がある。RustでASTを読み、それを使うことでJavaScriptフレームワークも共通のAPIでアクセスできるようにする。
Rust化は貢献のハードルを上げるのか
言語が変われば、貢献のしやすさも変わるのではないか。この懸念に対して、sosuke氏は楽観的だった。
むしろ、新しい可能性も見えてくる。unvalley氏は指摘した。
未来への展望
boshen氏は、Rust化の流れは続くと予測する。
Evan氏は、JavaScriptの本質を守りながら進化することの重要性を語った。
統一ツールチェイン構想は、単なる技術的な最適化ではない。開発者がツールの設定に悩まされることなく、本来の目的——ユーザーに価値を届けること——に集中できる環境を作ることだ。ViteやOxc、そしてVoidZeroは、その未来への重要な一歩となるだろう。
Vue Vapor: Reinvention (Kevin Deng (a.k.a sxzz)氏)
Vue.
Vaporは
パフォーマンスは、バニラJSを100とした場合、Solid.
Breaking Changesはなく、Vueのサブセットを目指している。現状はComposition APIのみ対応で、<script setup>
のみをサポート。ビルドが必要でブラウザ単体では実行できない制限がある。
互換性は高く、ほとんどのVueUseが利用可能で、Vue RouterやPiniaとも互換性がある。APIを共有しているため、Vue 2から3への移行ほど大変ではないはずだ。
技術的には、ui = fn(state)
というアプローチで、レンダリング関数は一度だけ実行され、必要な箇所だけを自動更新する。アーキテクチャは中間表現
また、すべてをVaporにする必要はなく、Virtual DOMとの互換性があるため、スムーズな移行や共存が可能だ。この機能は
Anthony's Road to Open Source(Yak Shaving (Anthony Fu)氏)
最近日本語を本気で勉強し始めたというAnthony Fu氏は、OSSにおける
Yak Shavingは通常否定的な意味で使われるが、Fu氏はこれをポジティブなプロセスに変えていくことを提案した。
ShopifyがECプラットフォームになったように、Epic GamesがUnreal Engineをライセンス化したように、AWSやSlackが生まれたように、OSS開発における副産物が大きな価値を生むことがある。
Fu氏自身の経験として、国際化アプリの開発からi18n Allyが生まれ、Vue 3のComposition API実験からVueUseやVue Reactivityが誕生し、それがSlidev、UnoCSS、Vitest、Nuxt、unplugin、vite-node、birpcといった一連のプロジェクトにつながった経緯を紹介した。
「私の経験がみなさんのインスピレーションになればいい」
カンファレンスの雰囲気
カンファレンスでは技術セッションだけでなく、エンターテイメント要素も充実していた。サイリウム配布、Creative Wall、ストア、アフターパーティーなど、まさに
キーノート、23の通常セッション、8つのライトニングトーク、3つの特別イベントに加え、ハンズオンコーナーも設けられた。Anthony Fu氏も参加したハンズオンでは、Nuxtが公式に作成中のチュートリアル
パーティーには約500人が参加したという。スポンサー企業や個人スポンサーも多数参加し、コミュニティの熱量の高さを示していた。

おわりに
Vue Fes Japan 2024は、Vueコミュニティの結束と熱量を示すと同時に、JavaScriptエコシステム全体が大きな転換点を迎えていることを明確に示したイベントだった。