※本記事には広告(楽天アフィリエイト)リンクが含まれる場合があります。

「ESLintとPrettierの設定が複雑すぎる」「CIのlintが遅い」——多くのJavaScript/TypeScript開発者が抱えるこの悩みを、Biomeが一気に解決します。

BiomeはRust製の高速ツールチェーンで、Linter・Formatterの両方をひとつのバイナリに統合しています。ESLint+Prettierの組み合わせと比べて最大97倍高速とされ、2026年現在、個人開発からエンタープライズまで急速に採用が広がっています。

本記事では、Biomeのインストールから実践的な使い方、既存プロジェクトへの移行方法、CI/CD連携まで、すぐに使い始められる実例を交えて徹底解説します。

広告・楽天アフィリエイト

プログラミング技術書

実践寄りの技術書・参考書を探す。

楽天ポイント還元

技術書を楽天で見る →

広告・楽天アフィリエイト

USBハブ・周辺機器

ドッキング・ケーブル類をまとめて比較。

楽天ポイント還元

周辺機器を楽天で見る →

Biomeとは何か?なぜ今注目されているのか

Biomeは、もともとRome Toolsとして開発が始まったオールインワンJavaScriptツールチェーンです。2023年にコミュニティにフォークされBiomeとして再出発し、2025〜2026年にかけて安定性と機能が大幅に向上。今や多くのモダンなプロジェクトでESLint+Prettierの代替として選ばれています。

Biomeが解決する問題

従来のJavaScript開発環境では、複数ツールの組み合わせが必須でした。

  • ESLint:コード品質のチェック・バグになりやすいパターンの検出
  • Prettier:コードフォーマット(インデント・クォート・セミコロンなど)
  • eslint-config-prettier:両者のルール競合を解消する設定
  • @typescript-eslint/eslint-plugin:TypeScript対応プラグイン

これらを組み合わせると設定ファイルが5〜10個になることも珍しくありません。BiomeはこれをひとつのCLIツールとひとつの設定ファイル(biome.json)に集約します。

パフォーマンスの違い

Biomeの最大の強みはRust製による圧倒的な処理速度です。

ツール 言語 2,000ファイルのLint時間 設定の複雑さ
ESLint + Prettier JavaScript/Node.js 〜15秒 高(複数設定ファイル)
Biome Rust 〜0.2秒 低(biome.json 1ファイル)

CIパイプラインでのlintが秒単位で終わるのは、フィードバックループが短くなるという点で開発体験に大きく影響します。

Biomeのインストールと初期設定

Biomeはnpmパッケージとしてインストールするのが最も一般的です。

インストール

# npmの場合
npm install --save-dev --save-exact @biomejs/biome

# pnpmの場合
pnpm add --save-dev --save-exact @biomejs/biome

# bunの場合
bun add --dev --exact @biomejs/biome

バージョンを--save-exactで固定するのがBiome公式の推奨です。Biomeの出力はバージョンによって変わることがあるため、チームで同じフォーマット結果を保つために重要です。

設定ファイルの初期化

npx @biomejs/biome init

このコマンドでbiome.jsonが生成されます。

{
  "$schema": "https://biomejs.dev/schemas/2.0.0/schema.json",
  "vcs": {
    "enabled": false,
    "clientKind": "git",
    "useIgnoreFile": false
  },
  "files": {
    "ignoreUnknown": false,
    "ignore": []
  },
  "formatter": {
    "enabled": true,
    "indentStyle": "tab"
  },
  "organizeImports": {
    "enabled": true
  },
  "linter": {
    "enabled": true,
    "rules": {
      "recommended": true
    }
  },
  "javascript": {
    "formatter": {
      "quoteStyle": "double"
    }
  }
}

Formatterとしての使い方

BiomeのFormatterはPrettierと高い互換性を持ちながら、Prettierより大幅に高速です。

基本コマンド

# フォーマット結果をプレビュー(ファイルは変更しない)
npx biome format .

# ファイルに適用する
npx biome format --write .

# 特定ファイルだけ
npx biome format --write src/components/Button.tsx

主要なFormatter設定

{
  "formatter": {
    "enabled": true,
    "indentStyle": "space",      // "tab" または "space"
    "indentWidth": 2,             // インデント幅
    "lineWidth": 100,             // 1行の最大文字数
    "lineEnding": "lf"            // "lf" / "crlf" / "cr"
  },
  "javascript": {
    "formatter": {
      "quoteStyle": "single",     // "single" または "double"
      "semicolons": "asNeeded",   // "always" または "asNeeded"
      "trailingCommas": "all"     // "all" / "es5" / "none"
    }
  }
}

Prettierユーザーにとってはなじみのある設定項目です。既存の.prettierrcから手動で移行するか、後述のbiome migrateコマンドで自動変換できます。

Linterとしての使い方

BiomeのLinterはESLint互換の多数のルールを搭載しており、"recommended": trueを指定するだけで実践的なルールセットが有効になります。

基本コマンド

# Lintチェック
npx biome lint .

# 自動修正可能なものは修正する
npx biome lint --write .

# Lint + Format を同時に実行(最もよく使う)
npx biome check .
npx biome check --write .

ルールカテゴリ

Biomeのルールは以下のカテゴリに分かれています:

  • accessibility:アクセシビリティ(ARIA属性など)
  • complexity:複雑すぎるコードパターンの検出
  • correctness:バグになりやすい書き方
  • nursery:試験的なルール(本番環境では慎重に)
  • performance:パフォーマンス上の問題
  • security:セキュリティリスク(dangerouslySetInnerHTMLなど)
  • style:コードスタイルの一貫性
  • suspicious:不審な・意図が不明なコード
{
  "linter": {
    "enabled": true,
    "rules": {
      "recommended": true,
      "complexity": {
        "noExcessiveCognitiveComplexity": "warn"
      },
      "style": {
        "useConst": "error",
        "noVar": "error"
      },
      "security": {
        "noDangerouslySetInnerHtml": "error"
      }
    }
  }
}

広告・楽天アフィリエイト

ガジェット・オーディオ

イヤホン・便利ガジェットをポイント還元で。

楽天ポイント還元

ガジェットを楽天で見る →

広告・楽天アフィリエイト

ノートパソコン特集

開発用ノートPCをスペック・口コミで比較。

楽天ポイント還元

ノートPCを楽天で見る →

ESLint・Prettierからの移行方法

既存プロジェクトをBiomeに移行するには、biome migrateコマンドを使うのが最短ルートです。

自動移行コマンド

# ESLintの設定をBiomeに変換
npx @biomejs/biome migrate eslint --write

# Prettierの設定をBiomeに変換
npx @biomejs/biome migrate prettier --write

これらのコマンドは.eslintrc.*.prettierrcを読み取り、対応するBiomeルールに変換してbiome.jsonに反映します。完全な1対1変換ではないため、移行後はbiome check .を実行して差分を確認することが重要です。

移行後の旧パッケージ削除

npm uninstall eslint prettier @typescript-eslint/eslint-plugin @typescript-eslint/parser eslint-config-prettier eslint-plugin-react

使っているパッケージは環境によって異なります。package.jsonのdevDependenciesを確認して、Biomeに移行済みのものを削除してください。

package.json のscripts更新

{
  "scripts": {
    "lint": "biome lint .",
    "format": "biome format --write .",
    "check": "biome check .",
    "check:fix": "biome check --write ."
  }
}

CI/CDへの組み込み

Biomeの高速性は、CIパイプラインでこそ真価を発揮します。

GitHub Actions

name: CI

on:
  push:
    branches: [main]
  pull_request:

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: npm
      - run: npm ci
      - name: Biome check
        run: npx biome ci .

biome ciはCIモード専用のコマンドで、ファイルの変更は行わず、フォーマット・Lintの両方を確認します。問題があれば0以外の終了コードを返すため、GitHub ActionsのStepが失敗としてマークされます。

pre-commitフック(Lefthook)

コミット前に自動チェックをかけたい場合はLefthookと組み合わせるのが定番です。

# lefthook.yml
pre-commit:
  commands:
    biome-check:
      glob: "*.{js,ts,jsx,tsx,json}"
      run: npx biome check --write {staged_files}
      stage_fixed: true
npm install --save-dev lefthook
npx lefthook install

ステージングされたファイルだけをチェック・修正し、修正後のファイルを自動的に再ステージングします。チーム全員でコードスタイルを統一するのに効果的です。

VS Code連携

BiomeにはVS Code公式拡張があり、ファイル保存時の自動フォーマットと、エディタ上でのLintエラー表示に対応しています。

拡張機能のインストール

VS CodeのExtensionsで「Biome」(biomejs.biome)を検索してインストールします。

.vscode/settings.json の設定

{
  "editor.defaultFormatter": "biomejs.biome",
  "editor.formatOnSave": true,
  "editor.codeActionsOnSave": {
    "source.fixAll.biome": "explicit",
    "source.organizeImports.biome": "explicit"
  },
  "[javascript]": {
    "editor.defaultFormatter": "biomejs.biome"
  },
  "[typescript]": {
    "editor.defaultFormatter": "biomejs.biome"
  },
  "[javascriptreact]": {
    "editor.defaultFormatter": "biomejs.biome"
  },
  "[typescriptreact]": {
    "editor.defaultFormatter": "biomejs.biome"
  },
  "[json]": {
    "editor.defaultFormatter": "biomejs.biome"
  }
}

この設定でファイル保存時に自動フォーマット+Lint修正+import整理が走ります。チームで共有するなら.vscode/settings.jsonをリポジトリにコミットしておきましょう。

Biomeで対応している言語・ファイル形式

Biome 2.x(2026年現在)がサポートするファイル形式は次のとおりです。

  • JavaScript / JSX:Lint・Format
  • TypeScript / TSX:Lint・Format
  • JSON / JSONC:Format(Lint一部対応)
  • CSS:Format(Lintも試験的対応)
  • GraphQL:試験的対応

HTMLとMarkdownのFormatは現時点で未対応です。これらが必要なプロジェクトでは、HTMLは別途prettier、Markdownはmarkdownlintを併用するか、対応が進むのを待つことになります。

BiomeとESLintの共存戦略

「全部Biomeに移行するのは難しい」という場合、ESLintと共存させることも可能です。たとえば:

  • Format:Biomeに完全移行(Prettierを削除)
  • Lint:Biomeの基本ルール + ESLintのプロジェクト固有ルール

この段階的移行アプローチは、既存のESLint設定が複雑なプロジェクトや、Biomeがまだ対応していないプラグイン(eslint-plugin-import-xなど)に依存している場合に有効です。

ただし、BiomeとESLintで同じルールを重複して有効にすると競合することがあります。biome.jsonlinter.rulesで重複するルールを無効にするか、ESLint側でBiomeが担当するルールをオフにしてください。

Biomeのモノレポ対応

モノレポ(monorepo)プロジェクトでは、ルートのbiome.jsonを親設定として、各パッケージでextendsを使って上書きできます。

// packages/app/biome.json
{
  "$schema": "https://biomejs.dev/schemas/2.0.0/schema.json",
  "extends": ["../../biome.json"],
  "linter": {
    "rules": {
      "style": {
        "noDefaultExport": "off"
      }
    }
  }
}

これで共通ルールをルートで管理しつつ、パッケージごとに例外設定を持てます。

まとめ:Biomeは「今すぐ試せる」ツール

BiomeはESLint+Prettierという長年の組み合わせを、1ツール・1設定ファイル・圧倒的な速度で置き換える実力を持っています。

移行コストが心配な方は、まず新規プロジェクトで試してみましょう。biome initからbiome check --write .まで5分もあれば動き始めます。既存プロジェクトにはbiome migrateを使った自動移行から始めるのがおすすめです。

2026年現在、フロントエンド・フルスタック問わず多くのプロジェクトがBiomeを採用しており、エコシステムの成熟も進んでいます。CIのlintが遅い・設定が煩雑と感じているなら、Biomeへの移行を検討する絶好のタイミングです。