OXC: Rust製JavaScript/TypeScriptツールチェーンの全貌【2026年最新】
OXCとは
OXC(The JavaScript Oxidation Compiler)は、Rust製の超高速JavaScript/TypeScriptツールチェインです。ESLintやBabelといった既存のJavaScriptツールをRustで再実装することで、圧倒的なパフォーマンスを実現しています。
2026年現在、フロントエンド開発の現場で急速に普及しつつあり、特に大規模プロジェクトでのビルド時間短縮に貢献しています。
OXCが提供する主要コンポーネント
- oxlint: ESLint互換のlinter(100倍以上高速)
- oxc_parser: JavaScript/TypeScriptパーサー
- oxc_transformer: Babel互換のコード変換
- oxc_resolver: モジュール解決
- oxc_minifier: コード圧縮
なぜOXCが必要なのか
従来のJavaScriptツールチェインは、JavaScript自身で書かれているため、パフォーマンスに限界がありました。特に以下のような課題がありました。
- ESLintの実行に数十秒〜数分かかる大規模プロジェクト
- Babelの変換処理によるビルド時間の増大
- CI/CDパイプラインでのツール実行時間のボトルネック
OXCはこれらの問題を、Rustの高速性とメモリ効率の良さで解決します。
セットアップ方法
インストール
npmまたはpnpm、bunなどのパッケージマネージャーでインストールできます。
# npm
npm install -D oxlint
# pnpm
pnpm add -D oxlint
# bun
bun add -d oxlint
基本的な使い方
# 単純な実行
npx oxlint .
# 特定のディレクトリを対象
npx oxlint src/
# 修正可能な問題を自動修正
npx oxlint --fix .
設定ファイルの作成
OXCは .oxlintrc.json で設定をカスタマイズできます。
{
"rules": {
"no-unused-vars": "error",
"no-console": "warn",
"eqeqeq": "error"
},
"env": {
"browser": true,
"es2024": true,
"node": true
},
"ignorePatterns": ["dist", "node_modules", "*.config.js"]
}
既存プロジェクトへの導入
ESLintからの移行
既存のESLint設定の多くはOXCと互換性がありますが、完全な移行には以下のステップを推奨します。
- 並行運用期間を設ける
{
"scripts": {
"lint:eslint": "eslint .",
"lint:oxlint": "oxlint .",
"lint": "npm run lint:oxlint && npm run lint:eslint"
}
}
- カバレッジの確認
OXCは現在200以上のESLintルールに対応していますが、一部のプラグインルールは未対応です。
# 現在のESLintルール使用状況を確認
npx eslint --print-config src/index.ts > eslint-config.json
# OXCでサポートされているか確認
npx oxlint --print-rules
- 段階的な置き換え
{
"scripts": {
"lint": "oxlint src/",
"lint:full": "eslint src/ --rule 'import/no-cycle: error'"
}
}
TypeScriptプロジェクトでの活用
OXCはTypeScriptを完全にサポートしており、型情報を使った高度なlintも可能です。
# TypeScriptファイルを直接lint
npx oxlint src/**/*.ts src/**/*.tsx
CI/CDへの組み込み
GitHub Actionsの例:
name: Lint
on: [push, pull_request]
jobs:
oxlint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v1
- run: bun install
- run: bunx oxlint .
実行時間の比較(10万行規模のプロジェクト):
- ESLint: 約45秒
- OXLint: 約0.4秒(約112倍高速)
Biomeとの比較
BiomeもRust製のツールチェインですが、OXCとは異なるアプローチを取っています。
OXCの強み
- ESLintとの互換性を重視
- 既存プロジェクトへの導入が容易
- パーサー、transformer、resolverを個別に利用可能
- より細かい設定が可能
Biomeの強み
- formatter機能が統合されている
- より統一されたツールチェイン体験
- 設定ファイルがシンプル
選択基準
// 既存のESLint設定を活かしたい → OXC
// ゼロから始める新規プロジェクト → Biome or OXC
// formatter + linterを統合したい → Biome
// 個別のツールを組み合わせたい → OXC
実践的な活用例
Viteプロジェクトでの利用
// vite.config.ts
import { defineConfig } from 'vite';
import { oxlintPlugin } from 'vite-plugin-oxlint';
export default defineConfig({
plugins: [
oxlintPlugin({
include: ['src/**/*.{ts,tsx,js,jsx}'],
cache: true,
}),
],
});
pre-commit hookとの連携
# .husky/pre-commit
#!/bin/sh
bunx oxlint --fix $(git diff --cached --name-only --diff-filter=ACM | grep -E '\.(ts|tsx|js|jsx)$')
モノレポでの活用
{
"scripts": {
"lint": "turbo run lint",
"lint:packages": "oxlint packages/*/src"
}
}
パフォーマンスチューニング
キャッシュの活用
OXCは自動的にキャッシュを利用しますが、明示的な設定も可能です。
# キャッシュを有効化(デフォルト)
oxlint --cache .
# キャッシュをクリア
oxlint --cache --cache-strategy content .
並列実行の最適化
OXCは自動的に複数コアを活用しますが、環境によっては調整が必要です。
# スレッド数を指定
oxlint --max-threads 4 .
まとめ
OXCは、JavaScript/TypeScriptツールチェインの未来を示す重要なプロジェクトです。特に大規模プロジェクトや、CI/CDパイプラインの高速化を求める場合には、導入を強く推奨します。
2026年現在、まだ発展途上の部分もありますが、コミュニティの成長速度とコードの品質を考えると、今後さらに普及していくことは間違いありません。
まずは小規模なプロジェクトで試し、効果を実感してから本格導入するのが良いでしょう。