フォーマッター

ソースコードのスタイル (インデント、改行、スペース) を自動的に統一するツール

開発ツール品質

フォーマッターとは

フォーマッター (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 は「議論するな、フォーマッターに任せろ」の思想。設定項目を意図的に少なくしている。

フォーマッターの理解を深めるには関連書籍が参考になる。

関連用語