フォーマッター
ソースコードのスタイル (インデント、改行、スペース) を自動的に統一するツール
開発ツール品質
フォーマッターとは
フォーマッター (Formatter) は、ソースコードのスタイル (インデント、改行、スペース、クォート) を自動的に統一するツールである。コードレビューでスタイルの議論を排除し、チーム全員が同じスタイルでコードを書ける。
リンターとの違い
| ツール | 目的 | 例 |
|---|---|---|
| フォーマッター | スタイルの統一 | Prettier, Biome |
| リンター | バグ検出、品質チェック | ESLint, Biome |
// フォーマッターが修正する問題
const x=1+2; // → const x = 1 + 2;
if(true){return} // → if (true) { return; }
// リンターが検出する問題
const x = 10; // ❌ 未使用変数
eval('code'); // ❌ eval の使用
Prettier
// .prettierrc
{
"semi": true,
"singleQuote": true,
"tabWidth": 2,
"trailingComma": "all",
"printWidth": 100
}
# フォーマット実行
npx prettier --write .
# CI でチェック (修正はしない)
npx prettier --check .
Biome (Prettier + ESLint の代替)
// biome.json
{
"formatter": {
"enabled": true,
"indentStyle": "space",
"indentWidth": 2
},
"linter": { "enabled": true }
}
Biome は Rust 製で Prettier の 10〜100 倍高速。フォーマットとリントを 1 つのツールで行える。
言語ごとのフォーマッター
| 言語 | フォーマッター |
|---|---|
| TypeScript/JS | Prettier, Biome |
| Rust | rustfmt |
| Go | gofmt (公式、議論の余地なし) |
| Python | Black, Ruff |
| Java | google-java-format |
| SQL | sql-formatter |
エディタ統合
// .vscode/settings.json
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
保存時に自動フォーマットすることで、手動でフォーマッターを実行する必要がなくなる。
Git フックでの強制
# .husky/pre-commit
npx lint-staged
{ "lint-staged": { "*.{ts,tsx,css,json,md}": ["prettier --write"] } }
Opinionated vs Configurable
| アプローチ | ツール | 特徴 |
|---|---|---|
| Opinionated | Prettier, gofmt | 設定項目が少ない、議論が不要 |
| Configurable | ESLint | 設定項目が多い、チームで合意が必要 |
Prettier は「議論するな、フォーマッターに任せろ」の思想。設定項目を意図的に少なくしている。
フォーマッターの理解を深めるには関連書籍が参考になる。