Upgrade to Pro — share decks privately, control downloads, hide ads and more …

oxlintはeslint/typescript-eslintを置き換えられるのか

 oxlintはeslint/typescript-eslintを置き換えられるのか

VoidZero構想の核であるRust製Linter「Oxlint」は、2025年に安定版となり、ESLint比で50〜100倍という圧倒的な高速性を実現しました。
しかし、実務のTypeScriptプロジェクトにおいて、typescript-eslintが提供する型情報を用いた解析をどう代替・併用すべきかは、多くのエンジニアが直面する課題です。

本セッションでは、Type-Aware Lintingのための tsgolint の導入ハードル、メモリ使用量、ルール網羅率といった現状の懸念点を整理します。
その上で、なぜ型解析がパフォーマンスのボトルネックとなるのかを構造的に解説し、既存ESLint環境と比較した定量的・定性的なメリットを提示します。

「爆速の環境のためにどこまで攻め、どこで妥協すべきか」現場の導入判断の指針をお話しします。

Avatar for shoma-fujita

shoma-fujita

May 23, 2026

Other Decks in Programming

Transcript

  1. 自己紹介 名前 所属  入社 担当領域 趣味 藤田 翔雅 株式会社うるる Govtech事業本部

    開発部 4年目(2023年新卒入社) フロントエンド(たまにバックエンド) 映画鑑賞
  2. ESLint(※1) Oxlint(※2) 8.213s Type-Aware Linting 無しでの比較 Oxlint爆速、でも Type-Aware Linting どうする?

    0.304s ※1 JS, TS, React, React Hooks の recommended(総ルール数: 105) ※2 correctness, suspicious, pref の categories, TS, React Hooks(総ルール数: 141) 27x
  3. 実装言語 Type-Aware Linting バージョン ESLint JavaScript ❌ 安定 EsLint +

    typescript-eslint JavaScript ✅ 安定 Oxlint Rust ❌ 安定(2025) Oxlint + oxlint-tsgolint Rust + Go ✅(59/61) 非安定 現状把握
  4. ESLint における Type-Aware Linting 有無比較 ESLint ※1 ESLint(TAL) ※2 0

    5 10 15 20 実行時間 型解析がボトルネックな理由 実行時間 増加 約 +7.9s ※1 JS, TS, React, React Hooks の recommended / ルール数: 105 ※2 ESLint の設定 + recommendedTypeChecked / ルール数: 128 8.213s 16.121s Type-Aware Lintng = TAL で省略表示
  5. Oxlint における Type-Aware Linting 有無比較 Oxlint ※1 Oxlint(TAL) ※2 0.0

    0.2 0.4 0.6 0.8 1.0 実行時間 型解析がボトルネックな理由 実行時間 増加 + 0.503s ※1 correctness, suspicious, pref の categories, TS, React Hooks / ルール数: 141 ※2 Oxlint の設定 + options.typeAware: true / ルール数: 166 0.304s 0.807s
  6. ESLint における Type-Aware Linting 有無比較 ESlint ※1 ESLint(TAL) ※2 0

    500 1000 1500 2000 実行時間 型解析がボトルネックな理由 メモリ使用率 増加 約 x2 ※1 JS, TS, React, React Hooks の recommended / ルール数: 105 ※2 ESLint の設定 + recommendedTypeChecked / ルール数: 128 933MiB 1882.7MiB
  7. Oxlint における Type-Aware Linting 有無比較 Oxlint ※1 Oxlint(TAL) ※2 0

    50 100 150 200 250 300 実行時間 型解析がボトルネックな理由 メモリ使用率 増加 約 x2.2 ※1 correctness, suspicious, pref の categories, TS, React Hooks / ルール数: 141 ※2 Oxlint の設定 + options.typeAware: true / ルール数: 166 116.5MiB 267.4MiB
  8. ESLint と Oxlint の比較 Type-Aware Linting なし ESLint ※1 Oxlint

    ※2 0 2 4 6 8 10 実行時間 サンプルプロジェクトの定量結果 実行時間 短縮 約 x27 ※1 JS, TS, React, React Hooks の recommended / ルール数: 105 ※2 correctness, suspicious, perf の categories, TS, React Hooks / ルール数: 141 8.213s 0.304s
  9. ESLint と Oxlint の比較 Type-Aware Linting あり ESlint(TAL) ※1 Oxlint(TAL)

    ※2 0 5 10 15 20 実行時間 サンプルプロジェクトの定量結果 実行時間 短縮 約 x20 ※1 ESLint の設定 + recommendedTypeChecked / ルール数: 128 ※2 Oxlint の設定 + options.typeAware: true / ルール数: 166 16.212s 0.807s
  10. ESLint と Oxlint の比較 Type-Aware Linting なし ESLint ※1 Oxlint

    ※2 0 200 400 600 800 1000 実行時間 サンプルプロジェクトの定量結果 メモリ使用率 低下 約 x8 ※1 JS, TS, React, React Hooks の recommended / ルール数: 105 ※2 correctness, suspicious, perf の categories, TS, React Hooks / ルール数: 141 933MiB 116.5MiB
  11. ESLint と Oxlint の比較 Type-Aware Linting あり ESlint(TAL) ※1 Oxlint(TAL)

    ※2 0 500 1000 1500 2000 実行時間 サンプルプロジェクトの定量結果 メモリ使用率 低下 約 x7 ※1 ESLint の設定 + recommendedTypeChecked / ルール数: 128 ※2 Oxlint の設定 + options.typeAware: true / ルール数: 166 1882.7MiB 267.4MiB
  12. 非 Type Aware Linting であれば Oxlint 移行 非安定版だが、ルール網羅率も高い カスタムルールがあると移行コストは上がる まとめ

    とはいえ安定版運用が必須の PJ は ESLint 継続 Oxlint は ESLint / typescript-eslint を置き換えられるか?