【Python】VSCode × Ruff で自動フォーマット&Lint 設定方法

Python の高速なリンター兼フォーマッターである Ruff の概要と VSCode での設定方法を解説します。
目次
Ruff とは
Ruff(ラフ)は、Python 向けの高速なリンター兼フォーマッターです。プログラム言語としては、Rust で実装されており、従来の flake8、black、isort が担っていた役割を 1 つのツールで担える点が特徴です。
Ruff は、CLI ツールとして利用できるため Visual Studio Code (VS Code) に限らず、その他の統合開発環境(IDE)でも使用できます。
この記事では、Python の開発環境として非常によく利用されている VS Code での利用方法に焦点をあてて解説します。
Ruff でできること
Ruff では、主に以下の機能を提供します。
- フォーマット(コード整形)
- 静的解析(Lint)
importの整理
コマンドとしては以下のように使用できます。
ruff format .
ruff check . --fix
Ruff は、コード整形でよく使われる black 互換のフォーマット機能、flake8 の静的解析(Lint)、isort 相当の import 整理機能を 1 つのツールで扱うことができます。
Ruff の特徴
Ruff の主な特徴を整理しておきます。
高速性
Ruff は、プログラム言語の Rust で実装がされており、大規模プロジェクトでも非常に高速に動作します。
Rust は、C/C++に匹敵する高性能を持ちながら、メモリ安全性が高く、Pythonなどのモダンな言語に見られる表現のしやすさも備えている、非常に優れた言語です。従来の Python 製リンターと比較しても非常に高速です。
多機能な静的解析(Lint)
flake8 のルールに加えて、多数のルールを内包しており、pyproject.toml によりルールを細かく制御することができます。
設定の一元管理
設定は、pyproject.toml にまとめて記述することができます。これにより、フォーマットと Lint の設定を同一ファイルで管理できます。
Ruff の歴史と位置づけ
Ruff は、2022 年頃に登場して急速に注目を集めてきました。高速性と利便性から、多くのプロジェクトでの採用が進んでいます。
近年では、Rust 製のツールが Python エコシステムを補完する動きが多くみられます(uv や Polars など)。その流れの中で、Ruffも実用的で高速な開発基盤ツールとして位置づけられています。新規プロジェクトでは black や isort の代替として、Ruff を採用するケースも増えています。
VSCode で Ruff を設定して使用する方法
ここからは、VS Code で Ruff を実際に利用する方法を解説します。なお、Ruff は CLI ツールであるため、以下の両方が必要です。
- プロジェクトに Ruff をインストールする
- VS Code の Ruff 拡張をインストールする
それぞれをインストールした上での基本的な設定方法などを紹介していきます。
Ruff のインストール
Ruff をインストールする場合は、以下のようにインストールします。
pip install ruff
また、uv を使用している場合は、以下でインストールします。
uv add ruff
ここで、インストールされるのは Ruff 本体の CLI ツールです。
Ruff の VSCode 拡張のインストール
次に、VS Code 拡張機能から Ruff をインストールします。VS Code の拡張機能で「Ruff」と検索すると、Astral Software の Ruff 拡張が検索できますのでインストールします。

Ruff 本体は、CLI ツールであり、この VS Code 拡張は、エディタ連携のための拡張機能という位置づけとなっています。
Ruff に関する VS Code の基本的な設定(setting.json)
Ruff を使用するにあたっての VS Code 側の基本的な設定を紹介します。
VS Code の「Ctrl + Shift + P」でコマンドパレットを開き、「Preferences: Open Settings (JSON)」から setting.json を開きます。
VS Code の設定は大きく次の 3 種類があります。
- 既定値(Default):VS Code 本体や拡張機能が持つ初期設定
- ユーザー設定(User):ユーザー個人に適用される設定
- ワークスペース設定(Workspace):プロジェクト単位に適用される設定
プロジェクト単位で Ruff 有効にしたい場合は、ワークスペース設定(.vscode/settings.json)に記述するのがおすすめです。チーム開発では、この方法により設定を共有できます。
一方、自身が扱うすべてのプロジェクトで Ruff を有効にしたい場合は「ユーザー設定(User)」に記述しても問題ありません。
settings.json に以下の記載を追加してください。
{
"[python]": {
"editor.defaultFormatter": "charliermarsh.ruff",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll.ruff": "explicit",
"source.organizeImports.ruff": "explicit"
}
}
}各項目の補足説明は以下の通りです。
| 項目 | 説明 |
|---|---|
[python] | Python 言語モードのファイル(通常は .py)にのみ適用される設定です。他言語への影響を防ぐために、Ruff 関連の設定はこのセクションにまとめておくのがおすすめです。 |
editor.defaultFormatter | “charliermarsh.ruff” を指定することで、Python ファイルのフォーマッターとして Ruff を指定します。 |
editor.formatOnSave | true に設定することでファイル保存時に自動でフォーマットを実行します。 |
editor.codeActionsOnSave | 保存時に追加で実行するコードアクションを指定します。 |
source.fixAll.ruff | Ruff による Lint エラーの自動修正を保存時に実行します。 |
source.organizeImports.ruff | Ruff による import 文の整理(isort 相当)を保存時に実行します。 |
Ruff の詳細設定(pyproject.toml)
Ruff の詳細設定は pyproject.toml に記述します。
Ruff は、デフォルトでも実用的な設定が有効になっているため、基本的には、pyproject.toml に追加の設定を記述しなくても利用できます。
ただし、プロジェクト方針やコーディング規約に応じて、設定を明示的に変更することも可能です。ここでは、代表的な設定の一部を紹介します。
基本設定 [tool.ruff]
Ruff の基本的な挙動は [tool.ruff] セクションで設定します。
例えば、代表的な設定として、1 行当たりの最大文字数は以下のように設定します。
[tool.ruff] line-length = 88
Ruff のデフォルトは、black 互換の設定の 88 文字であるため、基本的に上記のような記載は必要ありません。
一方で、PEP8 準拠の 79 文字にしたい場合には、次のように指定します。
[tool.ruff] line-length = 79
プロジェクトのコーディング規約にあわせて調整してください。
Lint 設定 [tool.ruff.lint]
ルール群の指定方法(select)
Ruff には、複数のリントルールがあります。こちらも基本的にはデフォルト設定で問題ありませんが、以下のように [tool.ruff.lint] セクションで制御できます。
[tool.ruff.lint] select = ["E", "F", "I"]
なお、select にルール群を表す文字列を指定します。なお、Ruff でのデフォルト設定は、["E4", "E7", "E9", "F"] となっています。これは、実行時エラーにつながる可能性が高い問題や、明確なコーディングエラーを中心に検出するルール群が有効になっていることを意味します。
リントのルール一覧は、公式ページの Rules ページにまとめられています。このページの「Code」列に書かれている値が各ルールを示すコードです。
例えば、"E" は、pycodestyle 由来のルール群を示します。また、"E4" は "E4"から始まるルールコードをまとめて指定する指定方法です。
Rules ページを確認すると、"E4" には以下のルールが含まれます。
| Code | Name | Message |
|---|---|---|
| E401 | multiple-imports-on-one-line | Multiple imports on one line |
| E402 | module-import-not-at-top-of-file | Module level import not at top of cell |
"E" と指定すれば、"E" から始まる pycodestyle 由来のリントルール群がすべて有効になります。
ルールの除外(ignore)
まとめて指定した際に、特定ルールのみを除外したい場合は、ignore を使用します。
[tool.ruff.lint] select = ["E", "F", "I"] ignore = ["E501"]
上記では、"E" から始まるルール群を有効にしつつ、"E501"(行長の違反) を除外しています。
Ruff は、デフォルト設定でも十分実用的です。まずは、デフォルトのまま導入し、必要に応じて、pyproject.toml を用いて柔軟に調整していくのがおすすめです。プロジェクトの方針に応じて検討してください。
まとめ
Python の高速なリンター兼フォーマッターである Ruff の概要と VSCode での設定方法を解説しました。
Ruff を導入することで、コード整形や静的解析(Lint)、import 整理といった機能を 1 つのツールで扱うことができるようになります。Ruff は、Rust で実装がされており非常に高速であることが特徴です。
VS Code と組み合わせることで、保存時に自動フォーマットや Lint 修正が実行され、より快適な Python 開発環境を構築できます。
Ruff 自体の設定方法についても一部紹介しましたが、Ruff はデフォルト設定でも十分実用的であり、まずは最小構成で導入し、必要に応じて pyproject.toml で調整していくのがおすすめです。
ぜひプロジェクトに導入してみてください。






-1.jpg)