【実務・中級編】Prettierが効かない?VSCodeで自動整形を確実に動かすための設定チェックリスト – デバッグ・コード品質・テストツール生産性向上バイブル

ESLint × Prettier:VSCodeで「なぜか動かない」を永久追放する、究極のコード品質アーキテクチャ

こんにちは。テックリードです。

「保存時にフォーマットされない」「ESLintのルールがPrettierと衝突して地獄になる」……。この手のトラブルを解決するのに、あなたの貴重な開発時間を費やすのは今日で終わりにしましょう。

本記事では、単なる設定の羅列ではなく、VSCodeの内部実行プロセスをハックし、プロジェクト全体で「無意識に美しいコード」が生成されるためのアーキテクチャを伝授します。

—

1. 脳内整理:なぜ「効かない」ことが起こるのか?

原因は常に「設定の競合」か「優先順位の誤解」です。VSCodeは以下の順で設定を読み込みます。

1. Workspace Settings (`.vscode/settings.json`):最優先。プロジェクト単位で強制すべき設定。
2. User Settings:個人の好み。ここに依存するとチーム開発で必ず崩壊する。
3. Prettier/ESLint Config:言語仕様レベルのルール定義。

「効かない」ときは、User SettingsのゴミがWorkspaceの設定を上書きしているか、拡張機能の実行順序が逆転しているケースが99%です。

—

2. 現場の「神設定」:`.vscode/settings.json` のベストプラクティス

プロジェクトルートの `.vscode/settings.json` にこれを記述してください。これがチームの「共通言語」になります。

{
// デフォルトのフォーマッターをPrettierに強制固定
“editor.defaultFormatter”: “esbenp.prettier-vscode”,
// 保存時にフォーマットを実行(エディタの基本)
“editor.formatOnSave”: true,
// TypeScript/JSのみを対象に、ESLintをフォーマッターとして噛ませる
“[typescript][javascript][typescriptreact][javascriptreact]”: {
“editor.defaultFormatter”: “dbaeumer.vscode-eslint”,
“editor.codeActionsOnSave”: {
“source.fixAll.eslint”: “explicit” // ESLintの自動修正を保存時に走らせる
}
},
// 静的解析の実行トリガーを保存時に限定し、タイピング中のラグを排除
“eslint.run”: “onSave”,
// エディタのタブサイズをPrettierのルールと物理的に同期させる
“editor.tabSize”: 2,
“editor.insertSpaces”: true
}

解説:
ここでの肝は、`editor.defaultFormatter` をあえて二重定義している点です。全体にはPrettierを適用しつつ、TS/JS系だけはESLint(+Prettierプラグイン)に解決させることで、「Prettierがコードを整形し、その直後にESLintが不要なコードやインポート順を整理する」という完璧なパイプラインが完成します。

—

3. 「神プラグイン」と「隠しコマンド」

生産性を極限まで高めるための、現場で必須の拡張機能とテクニックです。

必須拡張機能

  • [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint): 言うまでもない必須。
  • [Prettier – Code formatter](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode): 必須。
  • [Error Lens](https://marketplace.visualstudio.com/items?itemName=usernamehw.errorlens): これ無しで開発するのは目隠しで高速道路を走るようなもの。 コード行の末尾にエラー内容を直接表示させ、修正コストをゼロにします。

伝説のショートカット

  • `Shift + Alt + F`:手動フォーマット。保存設定が効かない時の強制トリガー。
  • `Ctrl(Cmd) + .` (クイックフィックス):ESLintが指摘する「修正可能な警告」を一撃で直すための魔法のキー。これを使わないエンジニアは、マウスでメニューを辿る時間が年間数十時間を浪費しています。

—

4. チーム開発における「絶対ルール」:設定の共有化

設定ファイルをGit管理下に置くのは基本ですが、さらに踏み込んで「PrettierとESLintの競合を物理的に消滅させる」構成を推奨します。

以下のパッケージを必ず導入し、プラグインを設定する
npm install –save-dev eslint-config-prettier eslint-plugin-prettier

`.eslintrc.json` に以下の設定を追加してください。

{
“extends”: [
“eslint:recommended”,
“plugin:@typescript-eslint/recommended”,
“plugin:prettier/recommended” // これが最強。PrettierのルールをESLintの警告として統合する
],
“rules”: {
“prettier/prettier”: “error” // Prettier違反をESLintのエラーとして報告させる
}
}

なぜこれが必要か?
`plugin:prettier/recommended` を入れると、Prettierのルール違反が「ESLintの赤波線」として表示されます。つまり、Prettierの設定とESLintのルールが競合する余地そのものを排除するのです。

—

5. テックリードからの提言:CI/CDとの連動

ローカルで直すのは当たり前。「フォーマットされていないコードはコミットさせない、プッシュさせない」のが最強の品質管理です。

`husky` と `lint-staged` を使いましょう。

// package.jsonに追加
“lint-staged”: {
“.{js,ts,tsx}”: [
“eslint –fix”,
“prettier –write”
]
}

この設定により、`git commit` した瞬間に、ステージングされたファイルだけが自動整形されます。チームメンバーの誰がどんなエディタを使っていようと、リポジトリに入るコードは常に完璧なフォーマットが保証されます。

—

まとめ:あなたの開発環境は「自動運転」されているか?

プロフェッショナルの開発とは、コードを書くことそのものよりも、「思考を邪魔するノイズをいかに排除するか」に集約されます。

1. `.vscode/settings.json` でエディタの挙動をプロジェクト単位で強制する。
2. `plugin:prettier/recommended` でルール競合を論理的に殺す。
3. `lint-staged` でゲートキーパーを設置する。

このアーキテクチャを導入すれば、あなたは「コードの見た目」で悩むことから解放され、本来の目的である「ビジネスロジックの構築」に全リソースを集中できるはずです。さあ、今すぐ設定ファイルを見直し、開発の自動運転を始めましょう。

タイトルとURLをコピーしました