Prettier ぷりてぃあ
簡単に言うとこんな感じ!
Prettierは「コードの見た目を自動で整えてくれるツール」だよ!インデントがバラバラとか、クォートが混在してるとか、そういう「書き方のクセ」をぜんぶ自動で統一してくれるんだ。チームで開発するときに「書き方論争」がなくなる魔法のツールってこと!
Prettierとは
Prettierとは、JavaScriptをはじめとする多くのプログラミング言語のコードを自動で整形(フォーマット)してくれるツールです。インデントの幅、クォートの種類(シングル・ダブル)、1行の文字数の上限など、コードの「見た目のルール」を自動で統一してくれます。
開発チームでは「インデントはスペース2つか4つか」「セミコロンはつけるかつけないか」といったスタイルの議論(いわゆる スタイル論争)が起きがちです。Prettierはそういった議論を「ツールに任せて終わり」にすることで、チームの生産性を上げることを目的に作られました。
2017年にオープンソースとして公開されて以降、フロントエンド開発の現場では事実上の標準ツールとなっており、VS CodeなどのエディタやCI/CDパイプラインと組み合わせて使われています。
Prettierが整形してくれるもの
Prettierは「Opinionated(意見の強い)」ツールと自ら称しており、設定項目をあえて少なくして「ツールが正解を決める」思想で作られています。
| 整形の対象 | 整形前の例 | 整形後の例 |
|---|---|---|
| インデント | タブ・スペース混在 | スペース2つに統一 |
| クォート | "Hello" と 'World' 混在 | "Hello" と "World" に統一 |
| 行末セミコロン | あったりなかったり | 統一(デフォルトはあり) |
| 1行の長さ | 200文字超えの長い行 | 80文字で折り返し |
| オブジェクトの末尾カンマ | { a: 1, b: 2 } | { a: 1, b: 2, } など |
対応している言語
Prettierは非常に多くの言語・ファイル形式に対応しています。
- JavaScript / TypeScript(最もよく使われる)
- HTML / CSS / SCSS / Less
- JSON / YAML
- Markdown
- GraphQL
- Vue / JSX(React)
設定できる主なオプション
設定を完全になくすのではなく、「最低限の選択肢」は用意されています。
| オプション名 | デフォルト値 | 説明 |
|---|---|---|
printWidth | 80 | 1行の最大文字数 |
tabWidth | 2 | インデントのスペース数 |
useTabs | false | タブ文字を使うか |
semi | true | 行末にセミコロンをつけるか |
singleQuote | false | シングルクォートを使うか |
trailingComma | "all" | 末尾カンマのスタイル |
歴史と背景
- 2017年1月 — Facebook(現Meta)のエンジニア、James Long氏がPrettierを公開。当初はJavaScript専用
- 2017年〜2018年 — HTML・CSS・TypeScript・Markdownなど対応言語を急速に拡大
- 2018年 — VS Codeの拡張機能として普及。「保存時に自動整形」が一般的なワークフローに
- 2019年〜 — ESLintとの役割分担が整理され、「スタイルはPrettier、バグ検出はESLint」という使い分けが定着
- 現在 — フロントエンド開発プロジェクトの多くが標準採用。npm週間ダウンロード数は数億回規模
ESLintとの違いと使い分け
Prettierとよく混同されるのが ESLint(イーエスリント)です。どちらもコードの品質に関わるツールですが、役割がまったく異なります。
| 比較項目 | Prettier | ESLint |
|---|---|---|
| 主な役割 | 見た目の整形(フォーマット) | バグ・品質チェック(リント) |
| 自動修正 | ほぼすべて自動修正 | 一部のみ自動修正 |
| 設定の多さ | 少ない(あえて絞っている) | 多い(細かくカスタマイズ可) |
| 検出できること | インデント・クォート・改行など | 未使用変数・型ミス・アンチパターンなど |
| 併用 | ✅ 両方使うのが一般的 | ✅ 両方使うのが一般的 |
実務では「ESLintでバグを検出しつつ、スタイル系のルールはPrettierに任せる」という 役割分担 が一般的です。両者を同時に使う場合は eslint-config-prettier というパッケージでESLintのスタイルルールを無効化し、競合を防ぎます。
実務での使われ方
エディタで「保存時に自動整形」
VS Codeでは拡張機能を入れるだけで、ファイルを保存するたびにPrettierが自動で走ります。開発者がわざわざ整形を意識しなくて済む、最も一般的な使い方です。
// .vscode/settings.json の例
{
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
}
CI/CDで「整形されていないコードをブロック」
プルリクエスト時にPrettierのチェックを自動実行し、整形されていないコードのマージを防ぐ使い方もあります。コードレビューで「インデントが違う」などの指摘が不要になります。
# 整形チェックのみ(修正はしない)
npx prettier --check "src/**/*.{js,ts,jsx,tsx}"
# 実際に整形する
npx prettier --write "src/**/*.{js,ts,jsx,tsx}"
.prettierrc で設定を共有
プロジェクトのルートに .prettierrc ファイルを置くと、チーム全員が同じルールで整形できます。
{
"printWidth": 100,
"tabWidth": 2,
"singleQuote": true,
"semi": false,
"trailingComma": "es5"
}
関連用語
- ESLint — JavaScriptのバグやアンチパターンを検出する静的解析ツール
- npm — Node.jsのパッケージ管理ツール。Prettierもnpm経由でインストールする
- CI/CD — コードのビルド・テスト・デプロイを自動化する仕組み
- VS Code — Prettierと最も相性のよいコードエディタ
- TypeScript — JavaScriptに型を追加した言語。Prettierが対応する主要言語の一つ
- Git — バージョン管理ツール。huskyと組み合わせてコミット前に自動整形するケースも多い
- lint-staged — Gitのステージングファイルだけにlint・整形を実行するツール