ESLint vs Biome 比較

JavaScriptリンティングの標準

VS
Biome

高速なオールインワンツールチェーン

8 分で読了Araçlar

スコア比較

グラフを読み込み中...

詳細スコア

詳細スコア: ESLint Biome — カテゴリー別10点満点のスコア
カテゴリーESLintBiome
パフォーマンス
6/10
10/10
学習のしやすさ
7/10
9/10
エコシステム
10/10
5/10
コミュニティ
10/10
5/10
求人市場
10/10
4/10
将来性
7/10
9/10

長所と短所

ESLint

長所

  • 10年の歴史あるエコシステム — 数千の既製ルールとプラグイン
  • プロジェクトごとにカスタマイズ可能なルールセット
  • TypeScript ESLint、React、Vue、Angular向けの第一級プラグイン
  • Prettierと組み合わせて使われる事実上の標準
  • 大多数のCI/CDシステムとの既製統合
  • フラットコンフィグ(ESLint 9)によるモダン化された設定
  • 幅広いIDE対応 — VS Code、WebStorm、Neovim

短所

  • 速度はRustベースのツールに大きく劣る
  • Prettier + ESLintの組み合わせ設定は複雑で衝突リスクがある
  • プラグインの非互換性と依存関係管理の問題
  • 大規模プロジェクトではリント時間が数分に及ぶことがある

最適な用途

既存のESLint設定とカスタムルールを持つプロジェクト広範なプラグインエコシステムを活用するチーム企業標準のリンティングが必要な大規模コードベースReact、TypeScript、Vue向けのカスタムリントルールが必要な場合

Biome

長所

  • Rustで書かれている — ESLint + Prettierより最大25倍高速
  • リンターとフォーマッターが単一ツールに統合 — 別々の設定不要
  • ゼロ依存 — node_modulesを肥大化させない
  • Prettierと97%互換のフォーマット出力
  • TypeScript、JSX、JSON、CSSサポートが標準搭載
  • 分かりやすく安定した設定ファイル(biome.json)
  • モノレポサポートが第一級

短所

  • ESLintの数千のプラグインに比べ、ルール数が少ない
  • 一部のカスタムESLintルールにはBiome版がまだ存在しない
  • コミュニティと求人数がESLintに比べて非常に少ない
  • フレームワーク固有のプラグイン(react-hooksなど)がまだ完全ではない

最適な用途

速度とシンプルさを優先する新規プロジェクトリンターとフォーマッターを統合したいチームCI/CDでのリント時間がパフォーマンス上の課題になっている大規模プロジェクトモノレポ構成で一貫したツールチェーンを求める場合

コード比較

ESLint
// eslint.config.js (ESLint 9 flat config)
import js from '@eslint/js';
import typescript from '@typescript-eslint/eslint-plugin';
import tsParser from '@typescript-eslint/parser';
import reactHooks from 'eslint-plugin-react-hooks';

export default [
  js.configs.recommended,
  {
    files: ['**/*.{ts,tsx}'],
    languageOptions: {
      parser: tsParser,
      parserOptions: { project: './tsconfig.json' }
    },
    plugins: {
      '@typescript-eslint': typescript,
      'react-hooks': reactHooks
    },
    rules: {
      '@typescript-eslint/no-explicit-any': 'error',
      '@typescript-eslint/no-unused-vars': 'error',
      'react-hooks/rules-of-hooks': 'error',
      'react-hooks/exhaustive-deps': 'warn'
    }
  }
];
Biome
// biome.json — lint + format設定
{
  "$schema": "https://biomejs.dev/schemas/1.8.0/schema.json",
  "organizeImports": { "enabled": true },
  "linter": {
    "enabled": true,
    "rules": {
      "recommended": true,
      "correctness": { "noUnusedVariables": "error" },
      "suspicious": { "noExplicitAny": "error" },
      "style": { "useConst": "warn" }
    }
  },
  "formatter": {
    "enabled": true,
    "indentStyle": "space",
    "indentWidth": 2,
    "lineWidth": 100
  },
  "javascript": {
    "formatter": { "quoteStyle": "single", "trailingCommas": "es5" }
  }
}

結論

新規プロジェクトにとって、Biomeのゼロコンフィグによる速度優位性は魅力的ですが、独自のESLintルールに依存する大規模なエコシステムにとってはESLintが依然として不可欠です。両者を併用(Biomeでフォーマット、ESLintでリント)する動きも広がっています。

無料相談を受ける
FAQ

よくある質問

Biomeのフォーマッターはprettierと97%互換で、はるかに高速です。PrettierからBiomeへの移行は概ねスムーズで、細かい出力差はbiome format --writeで自動修正されます。

関連ブログ記事

すべての記事を見る
すべての比較