リンター (Linter) とは - 静的解析ツールの役割と導入方法
リンターはソースコードを静的解析してバグやスタイル違反を検出するツール。ESLint / Biome / Ruff など言語ごとのリンターの比較と CI への組み込み方を解説
リンターとは
リンター (Linter) は、ソースコードを実行せずに静的解析し、バグの可能性、スタイル違反、セキュリティ上の問題を検出するツールである。名前は 1978 年に Stephen C. Johnson が作った C 言語の lint ツールに由来する。
リンターとフォーマッターの違い
リンターとフォーマッターの主な違いを以下に整理する。
| ツール | 目的 | 例 |
|---|---|---|
| リンター | バグ検出、品質チェック | ESLint, Biome |
| フォーマッター | コードスタイルの統一 | Prettier, Biome |
// リンターが検出する問題
const unused = 10; // ❌ 未使用変数 (no-unused-vars)
let flag = false;
if (flag = true) {} // ❌ 代入と比較の混同 (no-cond-assign)
eval('code'); // ❌ eval の使用 (no-eval)
console.log('debug'); // ❌ console の使用 (no-console)
// フォーマッターが修正する問題
const y=1+2; // → const y = 1 + 2;
if(true){return} // → if (true) { return; }
言語ごとのリンター
言語ごとのリンターを以下にまとめる。
| 言語 | リンター | 特徴 |
|---|---|---|
| TypeScript/JS | ESLint | プラグインエコシステムが豊富 |
| TypeScript/JS | Biome | Rust 製、ESLint + Prettier の統合 |
| Python | Ruff | Rust 製、高速 |
| Rust | Clippy | 公式リンター |
| Go | golangci-lint | 複数リンターの統合 |
| CSS | Stylelint | CSS/SCSS のリンター |
ESLint の設定
ESLint の設定のコード例を示す。
// eslint.config.js (Flat Config)
import tseslint from 'typescript-eslint';
export default tseslint.config(
...tseslint.configs.recommended,
{
rules: {
'@typescript-eslint/no-unused-vars': 'error',
'@typescript-eslint/no-explicit-any': 'error',
'no-console': 'warn',
},
},
);
Biome (ESLint + Prettier の代替)
Biome (ESLint + Prettier の代替) の例を示す。
// biome.json
{
"linter": { "enabled": true },
"formatter": { "enabled": true, "indentStyle": "space" }
}
Biome は Rust 製で、リントとフォーマットを 1 つのツールで行える。速度については、公式サイトがフォーマットのベンチマーク (2,104 ファイル・171,127 行) で Prettier のおよそ 35 倍という値を公開している (2026 年 8 月時点の公表値)。公式が掲げているのはフォーマットの比較値であり、リント側がどれだけ速くなるかは対象コードとルール構成で変わるため、置き換えの判断は自分のリポジトリで実測してから下す。
CI での実行
CI での実行の例を示す。
# GitHub Actions
- run: npx eslint . --max-warnings 0
- run: npx prettier --check .
--max-warnings 0 で警告も CI を失敗させる。
Git フックとの連携
Git フックとの連携の例を示す。
# .husky/pre-commit
npx lint-staged
{ "lint-staged": { "*.{ts,tsx}": ["eslint --fix", "prettier --write"] } }
コミット時に変更ファイルだけリント + フォーマットする。
詳しくは関連書籍を参照。
この記事は役に立ちましたか?
関連用語
ESLint
JavaScript/TypeScript のコード品質と一貫性を自動検証する静的解析ツール
Prettier
コードのフォーマットを自動的に統一するオピニオネイテッドなコードフォーマッター
フォーマッター
ソースコードのスタイル (インデント、改行、スペース) を自動的に統一するツール
Conventional Commits とは - コミットメッセージ規約の書き方と導入手順
Conventional Commits はコミットメッセージに feat/fix 等の型を付与する規約。CHANGELOG 自動生成やセマンティックバージョニングとの連携方法を実例で解説
代数的データ型
直和型と直積型を組み合わせてデータを表現する型システムの概念
Rust
メモリ安全性とパフォーマンスを両立する、GC なしのシステムプログラミング言語
関連する記事
あの有名 OSS のコードは、この本の影響を受けている
広く使われているオープンソースソフトウェアの設計には、技術書と共通の語彙や原則が残っています。OSS のコードから辿れる影響と、似ているだけの例の見分け方を整理しました。
技術書を使った 1on1 とメンタリング - 後輩の成長を加速させる読書指導
技術書を 1on1 やメンタリングに組み込み、後輩エンジニアの成長を加速させる具体的な方法を解説します。選書から読後フォローまでの実践ガイド。
DevOps 本ガイド - CI/CD とインフラ自動化を学ぶ技術書の選び方
DevOps の文化と原則から CI/CD、IaC、オブザーバビリティまで学べる技術書の選び方と学習順序を紹介します。