フロントエンド - ビルド・ツール

ESLint いーえすりんと

静的解析JavaScriptリンターコード品質TypeScriptコーディング規約
ESLintについて教えて

簡単に言うとこんな感じ!

ESLintは「コードの文法チェッカー」だよ! Wordの赤波線みたいに、JavaScriptのコードの問題点を実行前に自動で指摘してくれるツールなんだ。「ここ絶対バグになるよ」「チームのルールと違うよ」って教えてくれる、開発チームの見えない先輩みたいな存在!


ESLintとは

ESLint(イーエスリント)は、JavaScript・TypeScriptのソースコードを実行せずに解析し、バグの原因になりそうな記述やコーディング規約違反を検出する静的解析ツール(リンター)です。「ES」はJavaScriptの正式規格名「ECMAScript」、「Lint」はプログラムの問題点を検出するツールの総称に由来します。

プログラムを実際に動かす前に問題を見つけられるのが最大の強みです。たとえば「使っていない変数が宣言されている」「== の代わりに === を使うべき場所がある」「セキュリティ上危険なコードパターンがある」といったことを、ファイルを保存した瞬間や、コードをリポジトリに取り込む前に自動でチェックできます。

開発チームが複数人になると「人によって書き方がバラバラ」という問題が必ず起きます。ESLintにコーディング規約をルールとして設定しておけば、機械が均一にチェックしてくれるため、コードレビューの負担軽減品質の均一化を同時に実現できます。


ESLintの仕組み

ESLintは大きく3ステップでコードをチェックします。

ステップ処理内容例え
① パースコードを「構文木(AST)」に変換文章を単語・文節に分解する
② ルール適用ASTに対して設定ルールを1つずつ照合文法書と照らし合わせる
③ レポート違反箇所を警告(warn)またはエラー(error)で報告先生が赤ペンを入れる

AST(抽象構文木)とは

AST(Abstract Syntax Tree)とは、コードを「木構造のデータ」に変換したものです。人間が読むテキストをコンピュータが解析しやすい形に直したイメージで、ESLintはこのASTを見てルール違反を判定しています。

エラーレベルの分類

レベル意味実務での扱い
off0チェックしない不要なルールを無効化
warn1警告(ビルドは通る)推奨だが必須ではない
error2エラー(CIで止まる)必ず直さないと進めない

歴史と背景

  • 2013年 — Nicholas C. Zakas が開発・公開。「どのルールを有効にするかを完全にカスタマイズできる」設計で従来ツールと差別化
  • 2015年 — ES2015(ES6)の普及とともに一気に広まる。eslint:recommended の提供開始
  • 2016年 — AirbnbがESLint設定(eslint-config-airbnb)を公開。事実上の業界標準として普及
  • 2019年 — TypeScript向けパーサー・プラグイン(@typescript-eslint)が成熟し、TypeScript対応が本格化
  • 2022年eslint-plugin-importeslint-plugin-react などエコシステムが爆発的に拡大
  • 2024年 — 設定ファイル形式が従来の .eslintrc から Flat Config(eslint.config.js へ刷新。より直感的な設定が可能に

設定ファイルと主要プラグイン

ESLintの動作はプロジェクトルートの設定ファイルでカスタマイズします。

設定ファイル(Flat Config形式・新方式)

// eslint.config.js
import js from "@eslint/js";
import tseslint from "typescript-eslint";

export default [
  js.configs.recommended,          // JS標準ルール一式
  ...tseslint.configs.recommended,  // TypeScript用ルール
  {
    rules: {
      "no-unused-vars": "warn",  // 未使用変数は警告
      "eqeqeq": "error",         // == の代わりに === を強制
    },
  },
];

主要プラグイン一覧

プラグイン名用途
@typescript-eslintTypeScript専用ルールの追加
eslint-plugin-reactReact特有のルールチェック
eslint-plugin-importimportの順序・未解決モジュール検出
eslint-plugin-jsx-a11yアクセシビリティ(a11y)チェック
eslint-plugin-securityセキュリティリスクのある記述を検出
eslint-config-airbnbAirbnb社のコーディング規約セット
eslint-config-prettierPrettierとのルール競合を解消

ESLint と Prettier の関係

よく混同されますが、役割が異なります。

ESLint 🔍 コード品質チェック ・バグになりそうな記述を検出 ・未使用変数・== の検出 ・チームルールへの準拠確認 「意味・ロジックの問題」 Prettier ✨ コードフォーマット ・インデント・改行を統一 ・クォート・セミコロンの整形 ・見た目を自動で統一 「見た目・スタイルの問題」 + 2つを組み合わせて使うのが定番

実務での使われ方

CI/CDパイプラインへの組み込み

ESLintはローカルだけでなく、CI/CD(継続的インテグレーション)パイプラインに組み込んで使うのが現代のスタンダードです。

開発者がコードをpush

GitHub Actions / GitLab CI が起動

npm run lint(ESLintを実行)

エラーがあれば❌ → マージ・デプロイをブロック
エラーがなければ✅ → 次のステップへ進む

VS Codeとの連携

エディタにESLint拡張機能を入れると、ファイルを保存するたびにリアルタイムで問題箇所に赤線が表示されます。「保存したら自動修正」も設定可能で、開発体験が大幅に向上します。


関連用語

  • Prettier — コードの見た目(インデント・改行)を自動整形するフォーマッター
  • TypeScript — JavaScriptに型を追加した言語。@typescript-eslint で ESLint と連携
  • npm — JavaScriptのパッケージ管理ツール。ESLintのインストールに使う
  • CI/CD — コードのビルド・テスト・デプロイを自動化する仕組み
  • Webpack — JavaScriptのモジュールバンドラー。ESLintと組み合わせて使われることが多い
  • Vite — 高速なフロントエンドビルドツール。ESLintプラグインで統合可能
  • Git フック — コミット前にESLintを自動実行する仕組み(huskyなど)
  • コードレビュー — 人によるコードチェック。ESLintで機械的な指摘を自動化し負担を軽減