コンテンツにスキップ

03 フォーマッター設定

このドキュメントでは、コードの一貫性とチーム開発の効率性を向上させるためのフォーマッター(自動整形ツール)の設定を行います。

1. フォーマッターの概要

1.1 フォーマッターとは

フォーマッターは、ソースコードを定められたスタイルガイドに従って自動的に整形するツールです。主な効果:

  • 一貫性の確保: チーム全体で統一されたコードスタイル
  • レビュー効率の向上: スタイルに関する議論を排除
  • 開発効率の向上: 手動でのフォーマット作業を削減

1.2 使用するフォーマッター

フォーマッター 対象言語/ファイル 用途
Prettier JavaScript, TypeScript, CSS, Markdown, JSON 主要なコードフォーマット
EditorConfig 全てのファイル エディタ設定の統一

2. Prettier の設定

2.1 Prettier とは

Prettier は、多くのプログラミング言語に対応したコードフォーマッターです。設定により、コードを一貫したスタイルで自動整形します。

2.2 パッケージのインストール

プロジェクトルートで以下のコマンドを実行します:

# Prettier 本体とプラグインをインストール
npm install --save-dev prettier

# 追加プラグイン(必要に応じて)
npm install --save-dev prettier-plugin-organize-imports
npm install --save-dev prettier-plugin-packagejson

2.3 設定ファイル(.prettierrc)の作成

プロジェクトルートに .prettierrc ファイルを作成します:

{
    "semi": true,
    "trailingComma": "es5",
    "singleQuote": true,
    "printWidth": 100,
    "tabWidth": 2,
    "useTabs": false,
    "bracketSpacing": true,
    "bracketSameLine": false,
    "arrowParens": "avoid",
    "endOfLine": "lf",
    "embeddedLanguageFormatting": "auto",
    "htmlWhitespaceSensitivity": "css",
    "insertPragma": false,
    "jsxSingleQuote": true,
    "proseWrap": "preserve",
    "quoteProps": "as-needed",
    "requirePragma": false,
    "vueIndentScriptAndStyle": false,
    "overrides": [
        {
            "files": "*.md",
            "options": {
                "printWidth": 80,
                "proseWrap": "always"
            }
        },
        {
            "files": "*.json",
            "options": {
                "trailingComma": "none"
            }
        }
    ]
}

2.4 無視ファイル(.prettierignore)の作成

フォーマットしたくないファイルを指定するため、.prettierignore ファイルを作成します:

# 依存関係
node_modules/
package-lock.json
yarn.lock

# ビルド結果
dist/
build/
.next/
.nuxt/
.vscode/
.idea/

# ログファイル
*.log
logs/

# 一時ファイル
.tmp/
.cache/

# OS固有ファイル
.DS_Store
Thumbs.db

# Markdown(特定のファイルのみ)
CHANGELOG.md
LICENSE.md

# 自動生成ファイル
coverage/
.nyc_output/

2.5 VS Code での Prettier 設定

2.5.1 拡張機能の確認

Prettier の VS Code 拡張機能がインストールされていることを確認:

  • 拡張機能名: Prettier - Code formatter
  • Extension ID: esbenp.prettier-vscode

2.5.2 VS Code 設定の追加

.vscode/settings.json に以下の設定を追加(既に設定済みの場合は確認):

{
    // Prettier をデフォルトフォーマッターに設定
    "editor.defaultFormatter": "esbenp.prettier-vscode",

    // 保存時に自動フォーマット
    "editor.formatOnSave": true,

    // ペースト時に自動フォーマット
    "editor.formatOnPaste": true,

    // 入力時に自動フォーマット
    "editor.formatOnType": false,

    // 言語固有の設定
    "[javascript]": {
        "editor.defaultFormatter": "esbenp.prettier-vscode"
    },
    "[typescript]": {
        "editor.defaultFormatter": "esbenp.prettier-vscode"
    },
    "[json]": {
        "editor.defaultFormatter": "esbenp.prettier-vscode"
    },
    "[css]": {
        "editor.defaultFormatter": "esbenp.prettier-vscode"
    },
    "[scss]": {
        "editor.defaultFormatter": "esbenp.prettier-vscode"
    },
    "[html]": {
        "editor.defaultFormatter": "esbenp.prettier-vscode"
    }
}

2.6 package.json スクリプトの追加

package.json にフォーマット用のスクリプトを追加します:

{
    "scripts": {
        "format": "prettier --write .",
        "format:check": "prettier --check .",
        "format:js": "prettier --write \"**/*.{js,ts,jsx,tsx}\"",
        "format:css": "prettier --write \"**/*.{css,scss,less}\"",
        "format:json": "prettier --write \"**/*.json\"",
        "format:md": "prettier --write \"**/*.md\""
    }
}

3. EditorConfig の設定

3.1 EditorConfig とは

EditorConfig は、異なるエディタや IDE 間でコーディングスタイルを統一するための設定ファイルです。

3.2 設定ファイル(.editorconfig)の作成

プロジェクトルートに .editorconfig ファイルを作成します:

# EditorConfig is awesome: https://EditorConfig.org

# トップレベルファイル
root = true

# すべてのファイルに適用される設定
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
indent_style = space
indent_size = 2

# Markdown ファイルの設定
[*.md]
trim_trailing_whitespace = false
max_line_length = 80

# YAML ファイルの設定
[*.{yml,yaml}]
indent_size = 2

# Python ファイルの設定
[*.py]
indent_size = 4

# Makefile の設定
[Makefile]
indent_style = tab

# バッチファイル/シェルスクリプトの設定
[*.{bat,cmd,ps1,sh}]
end_of_line = crlf

# JSON ファイルの設定
[*.json]
indent_size = 2

# C/C++ ファイルの設定
[*.{c,h,cpp,hpp,cc,hh}]
indent_size = 4

# Java ファイルの設定
[*.java]
indent_size = 4

# Go ファイルの設定
[*.go]
indent_style = tab

# .NET プロジェクトファイル
[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj}]
indent_size = 2

# .NET 設定ファイル
[*.{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct}]
indent_size = 2

3.3 VS Code での EditorConfig 設定

3.3.1 拡張機能の確認

EditorConfig の VS Code 拡張機能がインストールされていることを確認:

  • 拡張機能名: EditorConfig for VS Code
  • Extension ID: editorconfig.editorconfig

3.3.2 設定の適用

EditorConfig は拡張機能がインストールされていれば、自動的に .editorconfig ファイルの設定を適用します。追加の設定は不要です。

4. フォーマッターの動作確認

4.1 Prettier の動作確認

  1. JavaScript/TypeScript ファイルでのテスト

    以下のような整形されていないコードを作成:

    // test.js
    const obj = { name: 'test', value: 123, items: [1, 2, 3, 4, 5] };
    function hello(name) {
        console.log('Hello ' + name + '!');
    }
    hello(obj.name);
    
  2. 保存またはフォーマットの実行

    • Ctrl+S で保存(自動フォーマット)
    • または Shift+Alt+F で手動フォーマット
  3. 期待される結果

    // test.js
    const obj = { name: 'test', value: 123, items: [1, 2, 3, 4, 5] };
    function hello(name) {
        console.log('Hello ' + name + '!');
    }
    hello(obj.name);
    

4.2 EditorConfig の動作確認

  1. 異なるファイルタイプでのインデント確認

    • JavaScript ファイル: 2スペース
    • Python ファイル: 4スペース
    • YAML ファイル: 2スペース
  2. 改行コードと文字エンコーディングの確認

    VS Code のステータスバーで以下を確認: - 文字エンコーディング: UTF-8 - 改行コード: LF

4.3 コマンドラインでの確認

プロジェクトルートで以下のコマンドを実行:

# 全ファイルのフォーマットチェック
npm run format:check

# 全ファイルをフォーマット
npm run format

# 特定の種類のファイルのみフォーマット
npm run format:js
npm run format:css
npm run format:json

5. チーム開発での運用

5.1 推奨ワークフロー

  1. 開発時: 自動フォーマット(保存時)に任せる
  2. コミット前: npm run format で全ファイルを確認
  3. プルリクエスト前: npm run format:check でフォーマットが統一されているか確認

5.2 CI/CD での活用

GitHub Actions など CI/CD パイプラインで、フォーマットチェックを自動化:

# .github/workflows/format-check.yml 例
name: Format Check
on: [push, pull_request]
jobs:
    format-check:
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v3
            - uses: actions/setup-node@v3
              with:
                  node-version: '18'
            - run: npm install
            - run: npm run format:check

6. トラブルシューティング

よくある問題と解決方法

Prettier が動作しない

  1. 拡張機能の確認

    • Prettier 拡張機能がインストール・有効化されているか確認
  2. 設定ファイルの確認

    • .prettierrc ファイルが正しい場所にあるか確認
    • JSON構文エラーがないか確認
  3. VS Code設定の確認

    • settings.json でデフォルトフォーマッターが設定されているか確認

EditorConfig が適用されない

  1. 拡張機能の確認

    • EditorConfig 拡張機能がインストールされているか確認
  2. ファイルの再読み込み

    • VS Code でファイルを閉じて再度開く
  3. 設定の優先順位

    • VS Code の設定が EditorConfig より優先される場合があります

フォーマットの競合

  1. 複数フォーマッターの無効化

    • 不要なフォーマッター拡張機能を無効化
  2. 言語固有設定の確認

    • settings.json で言語ごとに適切なフォーマッターが設定されているか確認

パフォーマンスの問題

  1. 除外設定の確認

    • .prettierignore で不要なファイルが除外されているか確認
  2. 大きなファイルの処理

    • 非常に大きなファイルは手動でフォーマットすることを検討

次のステップ

フォーマッターの設定が完了したら、次はリンターの設定を行います:

04_リンター設定.md