Oxc / Oxlint の歩き方 - Rust 製 JavaScript ツールチェーンと ESLint の現実的な付き合い方

Oxc / Oxlint の歩き方 - Rust 製 JavaScript ツールチェーンと ESLint の現実的な付き合い方

作成日:
更新日:

JavaScript のツールを「遅いから Rust で作り直す」流れは、もう止まりません。TypeScript の Go 移植Vite の RolldownBiome と来て、いま注目を集めているのが Oxc(The Oxidation Compiler)と、その目玉である高速リンタ Oxlint です。

Oxc は「モダンな JavaScript ツールチェーンの土台」を名乗る、Rust 製のツール群です。この記事では、Oxc が何を含むのか、Oxlint がどれだけ速いのか、そしてESLint を全部捨てるのか・分担するのかを、導入判断の目線で整理します。

Oxc とは何か

Oxc は、Rust で書かれた高性能な JavaScript ツールの集合体です。単体のリンタではなく、ツールチェーン全体を構成する部品が揃っています。

ツール役割速度(公式の主張)
Oxlintリンタ(ESLint 互換)ESLint 比 50〜100倍
Oxfmtフォーマッタ(Prettier 互換)Prettier 比 30倍 / Biome 比 3倍
Parser構文解析(土台)SWC 比 3倍
Transformerトランスパイル-
Resolverモジュール解決enhanced-resolve 比 28倍
Minifier圧縮(Alpha)-

Biome が「リント+フォーマットを1つに統合」したのに対し、Oxc はパーサからミニファイアまでの部品群として、各ツールが連携する構成です。土台のパーサを共有することで、全体が速くなります。

Oxlint: ESLint 比 50〜100倍

Oxc の中で最も話題なのが Oxlint です。公式は 「ESLint 比 50〜100倍速い」とし、700以上のルールを備える(さらに増加中)としています。大規模リポジトリで「リントに数分待つ」のが当たり前だった人ほど、この速度差は体感が大きいはずです。

導入も簡単で、まずは設定なしで走らせられます。

Oxlint をその場で実行
npx oxlint

注目すべき機能が2つあります。

  • tsgo による型認識リント(type-aware linting): 型情報を要するルールに対応。この tsgoTypeScript の Go 移植版で、ネイティブ高速化の恩恵がリントにも及びます
  • ESLint の JS プラグインのサポート: 既存の ESLint プラグイン資産を活かせる方向性

「全部置き換え」か「分担」か

ここが導入判断の肝です。Oxlint は ESLint 互換をうたい、ドロップイン的な置き換えも視野に入りますが、現実的には「全部捨てる」より「分担する」のが当面の落としどころです。

NOTE

ESLint には、フレームワーク固有のプラグイン(React Hooks の依存配列チェック、Next.js 固有ルールなど)や、チーム独自のカスタムルールといった長年の資産があります。Oxlint はルールを急速に増やしていますが、これらを完全に代替できるとは限りません。Biome の記事で書いた「型認識ルールやフレームワーク固有ルールは要確認」という論点は、Oxlint にもそのまま当てはまります。

現実的な進め方の例です。

状況判断
大規模リポジトリでリントが遅いまず Oxlint を追加して、一般的なルールの高速チェックを任せる
フレームワーク固有ルールに強く依存その部分は ESLint を残し、Oxlint と併用
新規プロジェクトOxlint 主体で始め、足りないルールだけ ESLint を足す
フォーマットOxfmt / Biome / Prettier を比較。まず整形だけ寄せるのも手

「CI のリント時間が長い」という具体的な痛みがあるなら、Oxlint を一段目の高速チェックとして足すだけでも効果が出ます。ESLint を即アンインストールする必要はありません。

WARNING

「Oxlint に移行=ESLint を即削除」と考えると、React Hooks の依存配列チェックのようなフレームワーク固有の安全網が抜け落ちる危険があります。移行前に、自分のプロジェクトが依存しているプラグイン・カスタムルールを棚卸しし、Oxlint で代替できるか確認してください。速さに釣られて安全網を外さないこと。

CI での使い方

CI に一段目の高速ゲートとして差し込むのが効果的です。

CI での高速リント
npx oxlint

ESLint を併用する場合は「Oxlint で大半を高速に弾き、ESLint でフレームワーク固有ルールを担保する」という二段構えにすると、CI 時間を短縮しつつ安全網も保てます。

まとめ

  • Oxc は Rust 製の JavaScript ツールチェーン。パーサ・Oxlint・Oxfmt・トランスフォーマ・リゾルバ・ミニファイアの部品群
  • 目玉の Oxlint は ESLint 比 50〜100倍、700以上のルール。npx oxlint で設定なしでも走る
  • tsgo(TypeScript の Go 移植)による型認識リントと ESLint JS プラグインのサポートが特徴
  • 現実解は「全部置き換え」よりESLint との分担。フレームワーク固有ルール・カスタムルールは ESLint を残す
  • CI に「一段目の高速ゲート」として足すだけでも効果が大きい。安全網(React Hooks 等)を外さないこと

「ネイティブ言語で JS ツールを速くする」流れの中で、Oxc はツールチェーン全体を Rust で固めるという野心的な立ち位置です。まずは Oxlint を CI に一段足してみて、その速度を体感するのが入り口として手軽です。

参考リンク