JavaScriptのツールチェーンを取り巻く環境が、ここ数年で大きく変わりつつあります。ESLintやPrettierが長年にわたって開発現場を支えてきた一方で、Rustで書かれた高速なツール群が急速に存在感を増しています。
その中でも特に注目を集めているのが、Oxcプロジェクトが開発するリンター「Oxlint」です。2023年12月のアナウンス以来、開発が急速に進み、2025年6月にはv1.0の安定版がリリースされました。Shopify、Airbnb、メルセデスベンツといった大企業での採用事例も報告されています。
この記事では、Oxlintを初めて聞いた方からOxlintをESLintからの乗り換え候補として検討している方までに向けて、Oxcプロジェクト全体の概要からOxlintの基本的な使い方、既存ツールとの比較、乗り換え方法までを整理します。
Oxcとは
ツール群の概要
Oxc(Oxidation Compiler)は、JavaScriptおよびTypeScript向けの高性能ツール群をRustで実装するオープンソースプロジェクトです。Vue.jsやViteの作者であるEvan Youが設立したVoidZeroのもとで開発されており、Vite 8からデフォルトバンドラーとなったRolldownにもOxcのパーサーや変換機能が利用されています。
Oxcが提供するツールは以下の通りです。
- Parser:JavaScript / TypeScript向けのASTパーサー
- Linter(Oxlint):JavaScript / TypeScript向けの高速リンター
- Formatter(Oxfmt):Prettier互換のコードフォーマッター
- Transformer:TypeScript、JSX、モダンJavaScriptの変換ツール
- Minifier:プロダクション向けのミニファイアー
- Resolver:モジュール解決ツール
各ツールは共通のASTと内部コンポーネントを共有しており、ツール間での整合性の高さと、個別利用、組み合わせ利用の両方が可能な設計になっています。
OxlintとOxfmtの位置づけ
Oxlintは、ESLintの代替として設計されたリンターです。2025年6月にv1.0の安定版がリリースされており、本記事執筆時点で最も成熟したOxcのツールです。
Oxfmtは、Prettier互換のフォーマッターです。2025年12月にアルファ版、2026年2月にベータ版がリリースされましたが、執筆時点ではまだ開発途上のため、本記事ではOxfmtの詳細な解説は対象外とし、Oxlintを中心に取り上げます。
ESLint、Biome、Oxlintの比較
Oxlintを評価する前に、比較対象となる既存ツールの特徴を整理しておきましょう。
ESLint
ESLintは、JavaScriptエコシステムで長年デファクトスタンダードとして使われてきたリンターです。最大の強みはプラグインエコシステムの豊富さです。eslint-plugin-react、eslint-plugin-import、typescript-eslintなど、数千を超えるプラグインが公開されており、あらゆるプロジェクトのニーズに対応できる柔軟性を持っています。
一方で、JavaScriptで実装されているためにパフォーマンスの限界があること、設定ファイルの複雑さ(とくにv8からv9へのflat config移行)、多くのプラグインを組み合わせた場合の起動時間の増大といった課題もあります。
Biome
BiomeはRome projectの後継として誕生したツールで、リンターとフォーマッターを一体で提供します。Rustで書かれており、ESLintよりも高速に動作します。「ワンツールで完結する」という設計思想のもと、設定を最小限に抑えたい場合に選ばれることが多いツールです。
ただし、ESLintプラグインとの互換性はなく、独自のルールセットを持つため、ESLintユーザーにとっては乗り換え時の差分が大きい場合もあります。
Oxlint
OxlintもRustで実装された高速なリンターです。ESLintとの互換性を重視して設計されており、ESLintのルールセット、プラグイン体系との親和性が高いことが特徴です。v1.0時点では500以上のルールをビルトインで提供しており、現在も継続的にルールが追加されています。
ゼロコンフィグで即座に使い始められる点も特徴の一つで、設定なしで実行するだけでも有用なフィードバックが得られます。設定が必要な場合は.oxlintrc.jsonを使います。この形式はESLintのレガシー設定(.eslintrc.json)形式をベースにしたJSONであるため、ESLintに慣れた開発者にとって学習コストが低くなっています。
| ESLint | Biome | Oxlint |
|---|
実装言語 | JavaScript | Rust | Rust |
役割 | リンター | リンター+フォーマッター | リンター |
パフォーマンス | 基準 | ESLintより高速 | ESLintの50〜100倍 |
ESLintプラグイン互換性 | ◎ ネイティブ対応 | ✕ 非対応 | ○ アルファ段階で対応中 |
ビルトインルール数 | 膨大(プラグイン込み) | 約500 | 700以上(現在も増加中) |
ゼロコンフィグ | ✕ | ○ | ◎ |
設定形式 | eslint.config.js
| biome.json
| .oxlintrc.json
|
安定性 | 安定(長年の実績) | 安定 | v1.0安定版(2025年6月〜) |
TypeScript型情報を使うルール | ◎ 対応 | 一部対応 | △ アルファ(2025年8月〜) |
Oxlintの基本的な導入方法
インストール
Oxlintはnpm、yarn、pnpmのいずれでもインストールできます。設定なしですぐに試したい場合は、npxを使う方法が手軽です。
# npxで試す(インストール不要)
npx oxlint@latest
# プロジェクトへのインストール
npm install -D oxlint
実行方法
インストール後、以下のコマンドでカレントディレクトリ以下のファイルをリントできます。
設定なしでも動作しますが、プロジェクトのルートに.oxlintrc.jsonを置くことで詳細なカスタマイズが可能です。
設定ファイル(.oxlintrc.json)
.oxlintrc.jsonを使って、ルールの有効化、無効化やプラグインの指定ができます。なお、JSONの代わりにTypeScriptで記述するoxlint.config.tsもサポートされています(同一ディレクトリで両方を併用することはできません)。
{
"plugins": ["react", "import"],
"rules": {
"no-unused-vars": "error",
"react/jsx-uses-react": "off"
}
}
ルールのカテゴリ単位で一括管理することもできます。
{
"categories": {
"correctness": "deny",
"suspicious": "warn"
}
}
カテゴリには correctness(バグにつながる問題)、suspicious(怪しい書き方)、pedantic(厳格なスタイル)などがあります。
自動修正
--fixオプションを使うと、修正可能な問題を自動的に修正します。
ESLintからの乗り換え
Oxlintへの乗り換えは、段階的に進めることが可能です。
ステップ1:まずOxlintを並走させる
既存のESLint設定はそのままに、Oxlintを追加で実行する方法から始めましょう。eslint-plugin-oxlintを使うと、OxlintがカバーしているルールをESLint側で無効化することで、重複した警告を防げます。
npm install -D eslint-plugin-oxlint
eslint.config.jsに以下を追加します。この無効化設定が他のルール設定に上書きされないよう、eslint-plugin-oxlintは配列の最後に配置するのがポイントです。
import oxlint from "eslint-plugin-oxlint";
export default [
// 既存の設定(他のプラグインなど)
...oxlint.configs["flat/recommended"], // oxlintは配列の最後に置く
];
CIや開発環境では、Oxlintを先に実行することで高速なフィードバックループを得られます。
npx oxlint . && npx eslint .
ステップ2:設定を移行する
@oxlint/migrateを使うと、既存のESLintのflat config形式の設定ファイルをOxlintの設定に変換できます。
ステップ3:ESLintを完全に置き換える
移行に問題がなければ、ESLintを削除してOxlintだけで運用します。ただし、カスタムプラグインやOxlintがまだ対応していないルールがある場合は、後述するJSプラグイン機能を活用するか、一時的に並走状態を維持しながら段階的に移行することをおすすめします。
周辺ツールとプラグイン
ESLintプラグインとの互換性
Oxlintは、JavaScriptで書かれたESLintプラグインをそのまま実行するJS Plugins機能を提供しています。2026年3月にアルファ版がリリースされており、OxlintのプラグインAPIはESLint v9以降と互換性があります。多くの既存ESLintプラグインは修正なしで動作します。
.oxlintrc.jsonにjsPluginsフィールドを追加してプラグインを指定します。
{
"jsPlugins": ["eslint-plugin-your-plugin"],
"rules": {
"your-plugin/some-rule": "error"
}
}
ただし、JS Plugins機能はまだアルファ段階であることに注意が必要です。TypeScript型情報を必要とするルールへの対応など、一部のAPIはまだ実装途上です。
ビルトインプラグイン
Oxlintは現在700以上のルールをビルトインで提供しています(v1.0時点では500以上で、その後も継続的に追加されています)。ESLintのプラグインエコシステムに相当するルールの多くが、追加インストールなしで利用できます。対応しているプラグインカテゴリの例は以下の通りです。
react(eslint-plugin-react相当)import(eslint-plugin-import相当)jsx-a11y(eslint-plugin-jsx-a11y相当)jest、vitest(テストフレームワーク向けルール)unicorn(eslint-plugin-unicorn相当)jsdoc(eslint-plugin-jsdoc相当)
エディタ拡張
Oxc公式のVS Code拡張が提供されており、Visual Studio Marketplaceからインストールできます。JavaScript、TypeScriptファイルのエラーハイライトやインライン診断がエディタ上で確認できます。Open VSX Registryにも対応しているため、VS Code互換のエディタ(CursorやVSCodiumなど)でも利用可能です。
また、Zed、coc.nvim、IntelliJプラグインへの対応も進んでいます。
CI、Gitフックとの連携
Oxlintの高速な実行速度は、CIやGitフックとの相性が良いです。package.jsonにlintスクリプトを追加しておけば、GitHub Actionsなどから手軽に呼び出せます。
{
"scripts": {
"lint": "oxlint"
}
}
エラーや警告をプルリクエスト上にインラインのアノテーションとして表示したい場合は、--format=githubオプションを使います。GitLab CI向けには--format=gitlabオプションも用意されています。
Gitフックとして使う場合は、lint-stagedと組み合わせると、コミット前に変更されたファイルだけを対象にリントできます。
{
"lint-staged": {
"*.{js,jsx,ts,tsx,mjs,cjs}": "oxlint"
}
}
huskyやpre-commitなどのフック管理ツールと組み合わせるのが一般的です。具体的なセットアップ手順は公式のCIガイドを参照してください。
まとめ
Oxlintは、ESLintとの高い互換性を保ちながら、大幅なパフォーマンス改善を提供するRust製リンターです。v1.0の安定版がリリースされており、実際の大規模コードベースでの実績も積み上がっています。
ゼロコンフィグで即座に試せることや、ESLintとの並走による段階的な移行が可能な点は、既存プロジェクトへの導入ハードルを下げる大きな要素です。一方で、JSプラグイン機能がアルファ段階であることや、独自のカスタムルールに強く依存しているプロジェクトでは移行前の検証が必要になる場合もあります。
まずはnpx oxlint@latestでお手持ちのプロジェクトを試してみることから始めると、乗り換えの判断材料が得られるでしょう。
参考資料
ウェブのお悩み、世路庵にご相談ください
ウェブ制作会社には、「言ったことしかやってくれない」「提案がない」といった不満を抱かれるケースがあります。目を引くようなビジュアルは作れるがビジネス理解が不足している、運用はしてもらえるがデザインやコーディングは外注に丸投げしている、といった体制では、しばしばプロジェクトが袋小路に迷い込んでしまいます。
世路庵は、ビジネスとクリエイティブを両立するウェブ制作会社です。ウェブサイトやウェブアプリケーションに課題を感じている方は、創業18年以上の経験と、業種・業態を選ばない1,000件以上の実績を持つ世路庵をぜひご検討ください。
合同会社世路庵