フロントエンド - ビルド・ツール

Prettier ぷりてぃあ

コードフォーマッター自動整形ESLintコードスタイルCI/CDJavaScript
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

設定できる主なオプション

設定を完全になくすのではなく、「最低限の選択肢」は用意されています。

オプション名デフォルト値説明
printWidth801行の最大文字数
tabWidth2インデントのスペース数
useTabsfalseタブ文字を使うか
semitrue行末にセミコロンをつけるか
singleQuotefalseシングルクォートを使うか
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(イーエスリント)です。どちらもコードの品質に関わるツールですが、役割がまったく異なります。

比較項目PrettierESLint
主な役割見た目の整形(フォーマット)バグ・品質チェック(リント)
自動修正ほぼすべて自動修正一部のみ自動修正
設定の多さ少ない(あえて絞っている)多い(細かくカスタマイズ可)
検出できることインデント・クォート・改行など未使用変数・型ミス・アンチパターンなど
併用✅ 両方使うのが一般的✅ 両方使うのが一般的
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のバグやアンチパターンを検出する静的解析ツール
  • npmNode.jsのパッケージ管理ツール。Prettierもnpm経由でインストールする
  • CI/CD — コードのビルド・テスト・デプロイを自動化する仕組み
  • VS Code — Prettierと最も相性のよいコードエディタ
  • TypeScript — JavaScriptに型を追加した言語。Prettierが対応する主要言語の一つ
  • Git — バージョン管理ツール。huskyと組み合わせてコミット前に自動整形するケースも多い
  • lint-staged — Gitのステージングファイルだけにlint・整形を実行するツール