LinterとFormatterの違い
公開日: 2025/06/03
LinterとFormatterの違い:コード品質と整形の役割を正しく理解しよう
はじめに
JavaScriptやPythonなどの開発現場でよく耳にする「Linter」と「Formatter」。
似たようなツールに思えますが、それぞれの目的や役割は明確に異なります。
本記事では、LinterとFormatterの違いを解説し、プロジェクトにどう活用すべきかを具体的に紹介します。
基本情報・概要
- Linter(リンター):構文ミスや非推奨の書き方、コードスタイルの逸脱を検出し、開発者に警告を出す静的解析ツール。
- Formatter(フォーマッター):コードのインデントや改行、空白のルールなどを自動整形するツール。文法やエラー検出はしない。
どちらも「コードを読みやすく・保守しやすくする」ためのツールですが、アプローチが異なります。
比較・分類・特徴の表形式まとめ
項目 | Linter | Formatter |
---|---|---|
目的 | バグ予防・品質担保 | 見た目の整形・一貫性維持 |
処理対象 | 構文ミス・非推奨記述・スタイル違反など | 空白・インデント・改行など |
修正方法 | 開発者が警告を見て修正(自動修正も一部あり) | 自動的にフォーマット |
使用例 | ESLint(JS), flake8(Python) | Prettier(JS), black(Python) |
実行タイミング | コミット時・CI/CD・保存時 | 保存時・コミット時など |
深掘り解説
-
ESLint + Prettier(JavaScript):
ESLintは「未使用変数」や「==の使用」などを検出します:
const x = 1; if (x == '1') { console.log("match"); }
→
ではなく==
を推奨、などの警告を表示。===
一方、Prettierは以下のようなフォーマットを自動整形します:
// 整形前 function greet(name){return "Hi,"+name;} // 整形後(Prettier) function greet(name) { return "Hi, " + name; }
-
Pythonにおける違い:
やflake8
→pylint
や未使用import
を警告PEP8違反
やblack
→ 改行やスペースを自動整形autopep8
-
CI/CDとの連携:
をCIで実行して、品質チェックnpm run lint
フックでpre-commit
やeslint --fix
を自動実行prettier --write
応用・発展的な使い方
- Linterにルールセットをカスタムして、チームのコーディングガイドラインを統一
- Formatterは全員が同じ設定を共有(
,.prettierrc
など)pyproject.toml
- GitフックやGitHub Actionsで強制適用することで、品質と見た目の両立を図る
よくある誤解と注意点
- Linterは「エラー修正ツール」ではない:あくまで指摘・警告が主目的
- Formatterは「コードの意味」は変えない:ロジックミスなどは見つけられない
- ESLintとPrettierのルールが競合する場合、統合設定(
)を使うのが定番eslint-config-prettier
まとめ
LinterとFormatterは、コードの「品質」と「整形」の両輪を担う重要なツールです。
Linterでバグの元や非推奨記述を検出し、Formatterで見た目の統一を図ることで、チーム全体の生産性と可読性が向上します。両者をうまく組み合わせて、快適な開発環境を整えていきましょう。