C# Formatterとは?コード整形の悩みを解決する使い方・おすすめツール・設定方法
はじめに
C#で開発していると、「人によってインデントが違う」「波かっこの位置が揃わない」「コードレビューでスペースや改行ばかり指摘される」といった悩みに直面することがあります。こうした問題を解決するのが、C# Formatterです。
C# Formatterを使えば、C#コードのインデント、スペース、改行、波かっこの位置などを一定のルールに沿って自動整形できます。Visual StudioやVisual Studio Codeの標準機能、dotnet format、ReSharper、Rider、オンラインC# Formatterなど、用途に応じてさまざまな選択肢があります。
この記事では、C# Formatterの基本から、おすすめツール、Visual Studio・VS Code・dotnet formatでの使い方、.editorconfigによる設定方法、うまく動かないときの対処法までわかりやすく解説します。
1. C# Formatterとは?コード整形でできること
1-1. C# Formatterの意味と役割
C# Formatterとは、C#のソースコードを一定のルールに従って自動的に整形するツールや機能のことです。主に、インデント、空白、改行、波かっこの位置、行末スペース、コードスタイルなどを統一する目的で使われます。
たとえば、次のように読みにくいコードがあったとします。
C#public class User{public string Name{get;set;}public int Age{get;set;}}
C# Formatterを使うと、以下のように見やすく整形できます。
C#public class User
{
public string Name { get; set; }
public int Age { get; set; }
}
C# Formatterの役割は、単に見た目をきれいにするだけではありません。チーム全体でコードスタイルを統一し、レビューの負担を減らし、保守しやすいコードベースを維持することにあります。
1-2. コード整形とコードフォーマットの違い
「コード整形」と「コードフォーマット」は、ほぼ同じ意味で使われます。どちらもソースコードの見た目を一定のルールに合わせて整えることを指します。
ただし、文脈によっては少しニュアンスが異なります。コード整形は、インデントや改行を整える一般的な作業を指すことが多く、コードフォーマットは、フォーマッターやIDEの機能によって自動的にルールを適用する意味で使われることが多いです。
C#開発では、Visual Studioの「Format Document」、VS Codeの「Format Document」、dotnet formatなどがコードフォーマット機能にあたります。Visual Studioの既定ショートカットでは、ドキュメント全体のフォーマットが Ctrl+K, Ctrl+D、選択範囲のフォーマットが Ctrl+K, Ctrl+F に割り当てられています。Microsoft Learn+1
1-3. C# Formatterが解決する主な悩み
C# Formatterは、次のような悩みを解決します。
インデントがタブとスペースで混在している、メンバー間の空行が人によって違う、波かっこの位置が統一されていない、コードレビューで「空白を直してください」といった指摘が多い、保存するたびに手作業で見た目を整えている、といった問題です。
特にチーム開発では、コードの中身とは関係のないスタイル差分が発生しがちです。C# Formatterを導入すると、見た目のルールをツールに任せられるため、開発者は設計やロジックの品質に集中できます。
1-4. C#開発でコード整形が重要な理由
C#は、クラス、メソッド、プロパティ、LINQ、ラムダ式、非同期処理など、構文が豊富な言語です。コード量が増えるほど、整形ルールが統一されていないコードは読みづらくなります。
MicrosoftのC#コーディング規約でも、一貫したコード規約は可読性、保守性、チームでの共同作業に重要だと説明されています。Microsoft Learn
C# Formatterを使うことで、コードの見た目が安定し、変更差分も読みやすくなります。結果として、バグの発見、レビュー、リファクタリング、引き継ぎがスムーズになります。
2. C# Formatterを使うメリット
2-1. インデント・スペース・改行を自動で統一できる
C# Formatterの大きなメリットは、インデント、スペース、改行を自動で統一できることです。
たとえば、条件式の前後のスペース、メソッド引数の改行、プロパティの波かっこ、名前空間やクラス内のインデントなどを、設定に応じて自動整形できます。
手作業で整える場合、どうしてもミスや個人差が出ます。しかしFormatterを使えば、同じルールを何度でも機械的に適用できます。
2-2. チーム開発でコーディングスタイルを揃えられる
チーム開発では、各メンバーが異なるエディタやIDEを使うことがあります。ある人はVisual Studio、別の人はVS Code、また別の人はRiderを使うケースもあります。
このような場合でも、.editorconfigをプロジェクトに配置しておけば、複数のエディタやIDEで共通のコードスタイルを適用しやすくなります。EditorConfigは、異なるエディタやIDE間で一貫したコーディングスタイルを維持するための仕組みとして提供されています。EditorConfig+1
2-3. コードレビューの指摘を減らせる
コードレビューで本当に確認したいのは、設計、ロジック、パフォーマンス、セキュリティ、テストの妥当性です。
しかし、フォーマットが統一されていないと、「インデントを直してください」「空行を揃えてください」「波かっこの位置を合わせてください」といった本質的ではない指摘が増えてしまいます。
C# Formatterを導入すると、スタイルに関する指摘を減らし、レビューの質を高めることができます。
2-4. 可読性と保守性を高められる
読みやすいコードは、理解しやすく、修正しやすく、バグを見つけやすいコードです。
C# Formatterでコードの見た目を統一しておくと、開発者は「どこに何が書かれているか」を把握しやすくなります。特に、ネストが深い処理、LINQ、非同期処理、例外処理などでは、適切な改行やインデントが可読性に大きく影響します。
保守性の高いコードベースを作るうえで、Formatterは小さく見えて非常に効果の大きい仕組みです。
2-5. 保存時・コミット前に自動整形できる
C# Formatterは、手動実行だけでなく、保存時やコミット前に自動実行することもできます。
Visual StudioやVS Codeでは、保存時にフォーマットを実行する設定が可能です。さらに、dotnet formatをCI/CDやGitHub Actionsに組み込めば、フォーマットされていないコードがリポジトリに入る前に検出できます。
これにより、開発者が意識しなくてもコードスタイルを保ちやすくなります。
3. C# Formatterの主な種類
3-1. Visual Studio標準のコード整形機能
Visual Studioには、C#コードを整形する標準機能が用意されています。メニューから「Edit」→「Advanced」→「Format Document」を選ぶか、既定ショートカットの Ctrl+K, Ctrl+D を使うことで、現在開いているドキュメントを整形できます。Microsoft Learn+1
Visual StudioはC#開発との相性がよく、.editorconfigにも対応しています。特別なツールを追加しなくても使えるため、まず試すべきC# Formatterといえます。
3-2. Visual Studio Codeで使えるC# Formatter
Visual Studio CodeでC#を整形する場合は、C#拡張機能やC# Dev Kitを利用するのが一般的です。VS Codeの公式ドキュメントでは、C# Dev Kit拡張機能を使ってC#ソースコードをフォーマットできると説明されています。Visual Studio Code
VS Codeでは、settings.jsonで既定のフォーマッターや保存時整形を設定できます。軽量なエディタでC#を開発したい場合に便利です。
3-3. dotnet formatコマンド
dotnet formatは、.NET CLIで使えるコードフォーマッターです。プロジェクトやソリューションに対して、スタイル設定や静的解析の推奨事項を適用できます。設定は.editorconfigがあればそこから読み取られ、なければ既定の設定が使われます。Microsoft Learn
コマンドラインで実行できるため、CI/CD、GitHub Actions、pre-commitフックなどに組み込みやすいのが特徴です。
3-4. ReSharper・RiderなどIDE系フォーマッター
JetBrainsのReSharperやRiderにも、高機能なC# Formatterが用意されています。
ReSharperでは、選択範囲の再フォーマットやコードクリーンアップを実行できます。コードクリーンアップを使うと、単なるフォーマットだけでなく、コードスタイルの適用や不要な要素の整理もまとめて実行できます。JetBrains+1
Riderでは、スペース、改行、空行、波かっこなどの詳細なフォーマットルールを設定でき、EditorConfigにも対応しています。JetBrains+1
3-5. ブラウザで使えるオンラインC# Formatter
オンラインC# Formatterは、ブラウザ上でC#コードを貼り付けて整形できるツールです。インストール不要で使えるため、ちょっとしたコード片を整形したいときに便利です。
ただし、業務コードや機密情報を貼り付けるのは避けるべきです。また、プロジェクト全体の.editorconfigや依存関係を考慮した整形には向いていません。あくまで一時的な確認や学習用途として使うのが安全です。
4. おすすめのC# Formatterツール比較
4-1. Visual Studio:標準機能で手軽に整形したい人向け
Visual Studioは、Windows環境でC#を開発している人に最も使いやすいC# Formatterです。標準機能だけでドキュメント全体や選択範囲を整形でき、.editorconfigにも対応しています。
特に、ASP.NET Core、Windowsアプリ、Unity以外の一般的な.NET開発では、Visual Studioだけで十分なケースが多いです。
おすすめの利用シーンは、個人開発、業務システム開発、Visual Studio中心のチーム開発です。
4-2. VS Code:軽量環境でC#を整形したい人向け
VS Codeは、軽量なエディタでC#を書きたい人に向いています。C# Dev KitやC#拡張機能を導入すれば、C#の補完、ナビゲーション、フォーマット機能を利用できます。C# Dev Kitは、VS CodeでのC#開発体験を高めるための拡張機能として提供されています。Visual Studio Code+1
MacやLinuxでC#を書く場合や、軽い開発環境を好む場合はVS Codeが便利です。
4-3. dotnet format:CI/CDやチーム開発で自動化したい人向け
dotnet formatは、チーム開発や自動化に向いています。ローカルで手動実行するだけでなく、CI/CDでフォーマット違反をチェックできます。
たとえば、プルリクエスト時にdotnet format --verify-no-changesを実行すれば、整形漏れがある場合にCIを失敗させる運用ができます。
Visual StudioやVS Codeのようなエディタ依存ではなく、コマンドラインで統一できる点が大きなメリットです。
4-4. ReSharper:詳細なコードスタイル管理をしたい人向け
ReSharperは、Visual Studioに高度なコード分析、リファクタリング、コード整形、コードクリーンアップを追加したい人に向いています。
標準のVisual Studio Formatterよりも細かなルール管理を行いたい場合や、フォーマットと同時に不要なコードの整理、スタイル修正、警告対応まで行いたい場合に便利です。
ただし、チーム全員がReSharperを使うとは限らないため、共通ルールは.editorconfigにも反映しておくとよいでしょう。
4-5. オンラインツール:一時的にコードを整形したい人向け
オンラインC# Formatterは、環境構築なしで使えるのが魅力です。
サンプルコード、学習用コード、ブログ記事に載せる短いコード片などを整形する用途に向いています。一方で、業務コード、認証情報、社外秘のロジック、顧客情報を含むコードは絶対に貼り付けないようにしましょう。
4-6. 用途別おすすめC# Formatter早見表
| 用途 | おすすめC# Formatter |
|---|---|
| Visual Studioで手軽に整形したい | Visual Studio標準機能 |
| VS CodeでC#を書きたい | C# Dev Kit、C#拡張機能 |
| CI/CDで自動チェックしたい | dotnet format |
| 詳細なコードスタイルを管理したい | ReSharper、Rider |
| 短いコード片を一時的に整形したい | オンラインC# Formatter |
| Prettierのような強い自動整形を使いたい | CSharpier |
CSharpierは、C#とXML向けの意見強めのコードフォーマッターです。コードを解析して独自ルールで再出力する仕組みで、Prettierの思想に近いツールとして提供されています。CSharpier+1
5. Visual StudioでC# Formatterを使う方法
5-1. ショートカットキーでコードを整形する方法
Visual StudioでC#コードを整形する最も簡単な方法は、ショートカットキーを使うことです。
ドキュメント全体を整形する場合は、次のショートカットを使います。
Ctrl + K, Ctrl + D
選択範囲だけを整形する場合は、次のショートカットを使います。
Ctrl + K, Ctrl + F
このショートカットは、Visual Studioの既定キーボードショートカットとして案内されています。Microsoft Learn+1
メニューから実行する場合は、「Edit」→「Advanced」→「Format Document」を選択します。
5-2. 保存時に自動整形する設定方法
Visual Studioでは、コードクリーンアップや拡張機能、設定を組み合わせて保存時に整形する運用ができます。
一般的には、手動でCtrl+K, Ctrl+Dを実行するか、保存時にコードクリーンアップを走らせる設定を使います。チームで統一したい場合は、個人のIDE設定だけに頼るのではなく、.editorconfigとdotnet formatを併用するのがおすすめです。
保存時整形は便利ですが、既存コードに対して大きな差分を生むことがあります。導入時は、対象範囲を限定するか、最初に一括整形専用のプルリクエストを作ると安全です。
5-3. コードスタイル設定を変更する方法
Visual Studioでは、C#のコードスタイル設定をオプション画面から変更できます。
設定画面は、主に次の場所にあります。
Tools > Options > Text Editor > C# > Code Style
Microsoftのドキュメントでも、Visual StudioのオプションダイアログからC#やVisual Basicのコードスタイルを設定できると説明されています。フォーマットスタイルは「Formatting」、コードスタイルや命名規則は「General」や「Naming」から設定できます。Microsoft Learn
ただし、Visual Studio内の個人設定だけでは、他の開発者やCI環境には適用されません。チームで統一する場合は、.editorconfigに設定を書き出すのが重要です。
5-4. .editorconfigを使って整形ルールを統一する方法
.editorconfigをプロジェクトのルートに配置すると、Visual Studioはその設定を読み取ってコード整形に利用できます。Microsoftのドキュメントでも、コードベースで作業する全員に一貫したコーディングスタイルを適用するために.editorconfigを追加できると説明されています。Microsoft Learn
たとえば、基本的な.editorconfigは次のように書けます。
INIroot = true
[*.cs]
indent_style = space
indent_size = 4
end_of_line = crlf
insert_final_newline = true
trim_trailing_whitespace = true
csharp_new_line_before_open_brace = all
csharp_indent_case_contents = true
このファイルをリポジトリに含めることで、メンバー全員が同じ整形ルールを共有しやすくなります。
6. Visual Studio CodeでC# Formatterを使う方法
6-1. C#拡張機能をインストールする
VS CodeでC# Formatterを使うには、まずC#拡張機能をインストールします。
代表的な拡張機能は次のとおりです。
C# Dev Kit
C#
C#拡張機能は、C#向けの言語サポートを提供し、RoslynやRazorなどのコンポーネントと連携してC#開発体験を支えます。Visual Studio Marketplace
拡張機能を入れたら、.csファイルを開き、コマンドパレットから「Format Document」を実行します。
6-2. C# Dev Kitを使った整形環境を整える
C# Dev Kitは、VS CodeでのC#開発をより快適にするための拡張機能です。公式ドキュメントでは、C# Dev Kitを使ってC#ソースコードをフォーマットできると説明されています。Visual Studio Code
C# Dev Kitを使う場合は、単体の.csファイルだけでなく、.csprojや.slnを含むプロジェクトとして開くのがおすすめです。プロジェクト構造を認識できると、補完や解析、フォーマットが安定しやすくなります。
6-3. settings.jsonでdefaultFormatterを設定する
VS Codeで複数のフォーマッターが入っている場合、どれを使うかを明示する必要があります。
C#用の設定例は次のようになります。
JSON{
"[csharp]": {
"editor.defaultFormatter": "ms-dotnettools.csharp"
}
}
C# Dev Kitを使う環境では、利用している拡張機能やプロジェクト構成に応じてフォーマッターIDが異なる場合があります。設定後に「Format Document」を実行し、意図したFormatterが使われるか確認しましょう。
6-4. formatOnSaveで保存時に自動整形する
保存時に自動整形したい場合は、editor.formatOnSaveを有効にします。
JSON{
"[csharp]": {
"editor.defaultFormatter": "ms-dotnettools.csharp",
"editor.formatOnSave": true
}
}
すべての言語で保存時整形を有効にする場合は、次のようにも設定できます。
JSON{
"editor.formatOnSave": true
}
ただし、全言語に適用すると意図しないファイルまで整形されることがあります。C#だけに適用したい場合は、[csharp]の中に設定するのがおすすめです。
6-5. VS CodeでC# Formatterが動かないときの確認ポイント
VS CodeでC# Formatterが動かない場合は、次の点を確認しましょう。
C#拡張機能またはC# Dev Kitがインストールされているか、.csファイルとして認識されているか、editor.defaultFormatterが正しいか、プロジェクトの.csprojや.slnを開いているか、.editorconfigに不正な設定がないかを確認します。
また、複数のFormatterを入れている場合、VS CodeがどのFormatterを使えばよいか判断できないことがあります。その場合は、コマンドパレットから「Format Document With...」を実行し、使用するFormatterを選択してください。
7. dotnet formatでC#コードを整形する方法
7-1. dotnet formatとは
dotnet formatは、.NET CLIで使える公式のコードフォーマッターです。プロジェクトやソリューションに対して、.editorconfigの設定や静的解析の推奨事項をもとにコードを整形できます。Microsoft Learn
Visual StudioやVS Codeとは異なり、コマンドラインで実行できるため、開発環境に依存しない運用ができます。
7-2. dotnet formatのインストール・実行条件
現在のdotnet formatは、.NET SDKに含まれる形で利用できます。まず、次のコマンドで.NET SDKが入っているか確認します。
Bashdotnet --version
ソリューションまたはプロジェクトのあるディレクトリで、次のように実行します。
Bashdotnet format
基本的には、.slnまたは.csprojがある場所で実行します。プロジェクト構造を認識できない場所で実行すると、期待どおりに整形されないことがあります。
7-3. ソリューション・プロジェクト単位で整形する方法
ソリューション全体を整形する場合は、次のように実行します。
Bashdotnet format MySolution.sln
特定のプロジェクトだけ整形する場合は、次のように実行します。
Bashdotnet format MyProject.csproj
現在のディレクトリにソリューションやプロジェクトがある場合は、引数なしでも実行できます。
Bashdotnet format
フォーマットされていないファイルがあるか確認するだけなら、次のようにします。
Bashdotnet format --verify-no-changes
CI/CDでは、このチェックモードがよく使われます。
7-4. whitespace・style・analyzersの違い
dotnet formatには、主に次のサブコマンドがあります。
Bashdotnet format whitespace
dotnet format style
dotnet format analyzers
whitespaceは、空白、インデント、改行などの書式設定に関連するルールを適用します。styleは、コードスタイルのEditorConfig設定に一致するように整形します。analyzersは、アナライザーによる診断に基づく修正を適用します。Microsoftのドキュメントでも、whitespace、style、analyzersの各サブコマンドが説明されています。Microsoft Learn
まずは安全性の高いwhitespaceから導入し、慣れてきたらstyleやanalyzersを検討するとよいでしょう。
7-5. CI/CDやGitHub Actionsで自動チェックする方法
GitHub Actionsでdotnet formatを使う場合、次のようなワークフローを作成できます。
YAMLname: dotnet format
on:
pull_request:
push:
branches:
- main
jobs:
format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.x'
- name: Restore
run: dotnet restore
- name: Check formatting
run: dotnet format --verify-no-changes
この設定により、フォーマットされていないコードがプルリクエストに含まれている場合に検出できます。
チーム開発では、ローカルの保存時整形とCIでのチェックを組み合わせることで、フォーマット漏れを防ぎやすくなります。
8. .editorconfigでC# Formatterの整形ルールを設定する
8-1. .editorconfigとは
.editorconfigは、エディタやIDE間でコードスタイルを統一するための設定ファイルです。EditorConfig公式サイトでは、複数の開発者がさまざまなエディタやIDEで同じプロジェクトに取り組む際、一貫したコーディングスタイルを維持するための仕組みとして説明されています。EditorConfig
C#開発では、Visual Studio、VS Code、Rider、dotnet formatなどが.editorconfigを参照できます。
8-2. インデント・改行・スペースの基本設定
基本的な.editorconfigの例は次のとおりです。
INIroot = true
[*]
charset = utf-8
end_of_line = crlf
insert_final_newline = true
trim_trailing_whitespace = true
[*.cs]
indent_style = space
indent_size = 4
tab_width = 4
この設定では、文字コード、改行コード、最終行の改行、行末スペースの削除、C#ファイルのインデントを指定しています。
C#では、インデント幅を4スペースにするスタイルが広く使われています。チームの方針に合わせて設定しましょう。
8-3. C#のコードスタイルルールを設定する
C#固有のコードスタイルは、次のように設定できます。
INI[*.cs]
csharp_new_line_before_open_brace = all
csharp_indent_case_contents = true
csharp_space_after_cast = false
csharp_style_var_for_built_in_types = true:suggestion
csharp_style_var_when_type_is_apparent = true:suggestion
csharp_style_var_elsewhere = false:suggestion
.NETのコードスタイルルールは、.editorconfigなどの構成ファイルで定義できます。Microsoftのドキュメントでは、コードスタイルルールと重要度を設定し、IDEやビルド時の解析に反映できると説明されています。Microsoft Learn+1
8-4. 命名規則を設定する
.editorconfigでは、命名規則も設定できます。たとえば、インターフェイス名をIで始める、プライベートフィールドに_を付ける、といったルールです。
例として、プライベートフィールドをアンダースコア始まりにする設定は次のようになります。
INIdotnet_naming_rule.private_fields_should_be_camel_case.severity = suggestion
dotnet_naming_rule.private_fields_should_be_camel_case.symbols = private_fields
dotnet_naming_rule.private_fields_should_be_camel_case.style = camel_case_underscore
dotnet_naming_symbols.private_fields.applicable_kinds = field
dotnet_naming_symbols.private_fields.applicable_accessibilities = private
dotnet_naming_style.camel_case_underscore.required_prefix = _
dotnet_naming_style.camel_case_underscore.capitalization = camel_case
命名規則はチームによって好みが分かれます。最初から細かくしすぎず、重要なルールから導入するのがおすすめです。
8-5. チームで.editorconfigを共有する運用方法
.editorconfigは、リポジトリに含めてチーム全員で共有します。
運用のポイントは、プロジェクトルートに配置すること、ルール変更時はプルリクエストでレビューすること、Visual StudioやVS Codeの個人設定より.editorconfigを優先すること、CIでdotnet format --verify-no-changesを実行することです。
また、既存プロジェクトに導入する場合は、機能変更とフォーマット変更を同じプルリクエストに混ぜないようにしましょう。大量の整形差分があると、ロジック変更をレビューしにくくなります。
9. オンラインC# Formatterを使うときの注意点
9-1. オンラインC# Formatterの使い方
オンラインC# Formatterは、ブラウザ上でC#コードを貼り付け、ボタンを押すだけで整形できるツールです。
基本的な使い方は、C#コードをコピーする、オンラインFormatterの入力欄に貼り付ける、整形ボタンを押す、出力されたコードをコピーする、という流れです。
インストール不要で使えるため、学習中のコードやブログ記事用のサンプルコードを整えるには便利です。
9-2. 機密情報や業務コードを貼り付けない
オンラインC# Formatterを使うときに最も注意すべき点は、機密情報を貼り付けないことです。
業務コード、顧客情報、APIキー、接続文字列、認証トークン、社内ロジック、未公開サービスのコードなどは、オンラインツールに貼り付けるべきではありません。
便利だからといって、セキュリティリスクを増やしてはいけません。業務では、Visual Studio、VS Code、dotnet format、Riderなど、ローカルで完結するFormatterを使いましょう。
9-3. 複雑なプロジェクト整形には向かない理由
オンラインC# Formatterは、単一のコード片を整形するには便利ですが、複雑なプロジェクト全体の整形には向いていません。
理由は、.editorconfigを正しく反映できない場合があること、プロジェクト固有のルールを考慮できないこと、複数ファイル間の文脈を把握できないこと、IDEやアナライザーとの連携が弱いことです。
本格的なC#開発では、プロジェクト単位で動くFormatterを使うべきです。
9-4. オンラインツールとローカル環境の使い分け
オンラインC# Formatterは、短いサンプルコードや学習用コードに限定して使うのがおすすめです。
一方、実務コードやチーム開発では、ローカル環境のFormatterを使いましょう。Visual StudioやVS Codeで保存時整形を行い、.editorconfigでルールを共有し、dotnet formatでCIチェックする構成が安全です。
用途を分けることで、利便性とセキュリティを両立できます。
10. C# Formatterがうまく動かない原因と対処法
10-1. 拡張機能がインストールされていない
VS CodeでC# Formatterが動かない場合、まずC#拡張機能やC# Dev Kitが入っているか確認しましょう。
拡張機能がない状態では、VS CodeがC#コードをどのように整形すればよいか判断できません。拡張機能をインストールしたら、VS Codeを再起動し、再度Format Documentを実行してください。
10-2. defaultFormatterが正しく設定されていない
VS Codeでは、複数のFormatterがインストールされていると、既定のFormatterを選ぶ必要があります。
settings.jsonに次のような設定を追加します。
JSON{
"[csharp]": {
"editor.defaultFormatter": "ms-dotnettools.csharp"
}
}
別のFormatterを使う場合は、その拡張機能のIDを指定します。
うまく動かない場合は、コマンドパレットで「Format Document With...」を実行し、利用可能なFormatterを確認しましょう。
10-3. .csprojや.slnが認識されていない
C# Formatterは、単体の.csファイルだけでも動く場合がありますが、プロジェクトやソリューションとして開いたほうが安定します。
VS Codeでは、単にファイルだけを開くのではなく、.csprojや.slnを含むフォルダを開きましょう。dotnet formatを使う場合も、ソリューションまたはプロジェクトのパスを指定するのがおすすめです。
Bashdotnet format MySolution.sln
プロジェクト構造が認識されていないと、.editorconfigやアナライザー設定が正しく反映されないことがあります。
10-4. .editorconfigの設定が競合している
.editorconfigは、複数配置できます。上位ディレクトリと下位ディレクトリにそれぞれ.editorconfigがある場合、設定が重なって意図しない結果になることがあります。
root = trueが設定されているか、対象ファイルのセクションが正しいか、同じルールを別の値で上書きしていないかを確認しましょう。
たとえば、次のように対象拡張子を間違えるとC#ファイルに適用されません。
INI[*.js]
indent_size = 2
C#に適用する場合は、次のように書きます。
INI[*.cs]
indent_size = 4
10-5. フォーマット対象外のファイルを開いている
Formatterは、対象言語や対象ファイルに対してのみ動作します。
C# Formatterを使いたい場合、開いているファイルが.csとして認識されているか確認しましょう。拡張子が.txtや.csxの場合、Formatterが期待どおり動かないことがあります。
また、生成ファイルや一部のテンプレートファイルは、チームのルールでフォーマット対象外にしている場合があります。対象外にする場合は、.editorconfigや.csharpierignoreなどで明示しましょう。
11. C# Formatterを導入するときのベストプラクティス
11-1. まずチームのコードスタイルを決める
C# Formatterを導入する前に、まずチームでコードスタイルを決めましょう。
インデントはスペースかタブか、インデント幅は何文字か、波かっこは改行するか、varをどこまで使うか、プライベートフィールドに_を付けるかなど、基本方針を話し合います。
最初からすべてを完璧に決める必要はありません。まずは、レビューでよく指摘される項目からルール化すると導入しやすくなります。
11-2. .editorconfigでルールを明文化する
決めたルールは、口頭やWikiだけでなく、.editorconfigに明文化しましょう。
.editorconfigに書くことで、Visual Studio、VS Code、Rider、dotnet formatなどに設定を反映しやすくなります。Visual Studioは、スコープ内の.editorconfigをコード整形に適用できます。Microsoft Learn
チームのルールは、ツールが自動的に守れる形にすることが重要です。
11-3. 保存時整形とコミット前チェックを組み合わせる
おすすめの運用は、保存時整形とコミット前チェックを組み合わせることです。
保存時整形により、開発中のコードを常に整った状態に保てます。さらに、コミット前やCIでdotnet format --verify-no-changesを実行すれば、整形漏れを検出できます。
ローカルで直し、CIで守るという二段構えにすると、チーム全体で安定した運用ができます。
11-4. 既存コードを一括整形するときは差分に注意する
既存プロジェクトにC# Formatterを導入すると、大量の差分が発生することがあります。
そのため、フォーマットだけを行う専用のプルリクエストを作るのがおすすめです。機能追加やバグ修正と同じプルリクエストに混ぜると、レビューが非常に難しくなります。
一括整形後は、以降のプルリクエストでフォーマット差分が増えないよう、保存時整形やCIチェックを有効にしましょう。
11-5. FormatterとLint・Analyzerを併用する
C# Formatterは、主にコードの見た目を整えるツールです。一方、LintやAnalyzerは、潜在的な問題、非推奨API、命名規則、設計上の警告などを検出します。
dotnet format analyzersや.NETアナライザー、StyleCop Analyzers、ReSharperのコードインスペクションなどを併用すると、見た目だけでなく品質面も改善できます。
Formatterはコードの入口、Analyzerは品質の番人と考えるとわかりやすいです。
12. C# Formatterに関するよくある質問
12-1. C# Formatterは無料で使える?
無料で使えるC# Formatterはあります。
Visual Studioの標準フォーマット機能、VS CodeのC#拡張機能、C# Dev Kit、dotnet format、CSharpierなどは無料で利用できます。ただし、Visual StudioのエディションやC# Dev Kitの利用条件、ReSharperやRiderのライセンスは環境によって確認が必要です。
個人開発なら無料ツールで十分なことが多く、企業開発ではIDEやチーム運用に合わせて選ぶとよいでしょう。
12-2. PrettierでC#は整形できる?
Prettier本体は、JavaScript、TypeScript、CSS、HTML、Markdown、YAMLなど多くの言語をサポートしていますが、公式ドキュメントの対応言語一覧にC#は含まれていません。Prettier+1
C#でPrettierのようなフォーマッターを使いたい場合は、CSharpierを検討するとよいでしょう。CSharpierはC#とXML向けの意見強めのFormatterで、Prettierの影響を受けた設計になっています。CSharpier
12-3. Visual StudioとVS Codeではどちらが整形しやすい?
C#の整形だけで考えると、Visual Studioのほうが最初から使いやすい場合が多いです。C#開発向けの機能が標準で充実しており、ショートカットや設定画面も用意されています。
一方、VS Codeは軽量で、MacやLinuxでも使いやすいのがメリットです。C# Dev KitやC#拡張機能を入れ、settings.jsonを適切に設定すれば、C# Formatterとして十分活用できます。
本格的な.NET開発ではVisual Studio、軽量な開発環境やクロスプラットフォーム重視ならVS Code、という選び方がおすすめです。
12-4. dotnet formatと.editorconfigの関係は?
dotnet formatは、.editorconfigがある場合、その設定を読み取ってコードを整形します。Microsoftのドキュメントでも、dotnet formatは.editorconfigが存在する場合はそこから設定を読み取り、存在しない場合は既定の設定を使うと説明されています。Microsoft Learn
つまり、.editorconfigはルールを定義するファイル、dotnet formatはそのルールを適用するコマンド、と考えるとわかりやすいです。
チーム開発では、.editorconfigをリポジトリに置き、dotnet formatをCIで実行する構成が効果的です。
12-5. C# Formatterでコードの動作は変わる?
通常、C# Formatterはインデント、スペース、改行などの見た目を整えるため、コードの動作は変わりません。
ただし、dotnet format styleやdotnet format analyzers、ReSharperのコードクリーンアップなどを使う場合、設定によってはコードスタイルの変更や自動修正が行われることがあります。多くの場合は安全な変更ですが、導入時には差分を確認し、テストを実行することが大切です。
特に既存コードを一括整形する場合は、フォーマットのみなのか、コード修正も含むのかを明確にしてから実行しましょう。
まとめ
C# Formatterは、C#コードのインデント、スペース、改行、波かっこの位置などを自動で整えるための重要なツールです。コードの見た目を統一することで、可読性、保守性、レビュー効率を高められます。
Visual Studioを使っているなら、まず標準のFormat Document機能を使うのが簡単です。VS Codeを使う場合は、C# Dev KitやC#拡張機能を導入し、defaultFormatterやformatOnSaveを設定しましょう。チーム開発やCI/CDでは、.editorconfigとdotnet formatを組み合わせることで、開発環境に依存しない整形ルールを運用できます。
C# Formatterを効果的に使うポイントは、ツールを入れるだけで終わらせないことです。チームのコードスタイルを決め、.editorconfigで明文化し、保存時整形とCIチェックを組み合わせることで、きれいで保守しやすいC#コードを継続的に維持できます。

