VS Code

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

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

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 を採用するケースも増えています。

JetBrains 社の「2025 年 Python の現状」というブログ記事でも、Rust は過去数年間にわたって Python のパフォーマンスを支えてきている旨の記載があります。

私は、Rust も非常に好きな言語で Python と同様に学習サイト「Rust Tech ~Rust学習サイト~」も運営しています。興味があれば参考にしてください。

また、Rust の特徴は「Rustとは?特徴や他言語との違いまで徹底解説!」にまとめているので参考にしてください。

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 拡張が検索できますのでインストールします。

VS Code の 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.formatOnSavetrue に設定することでファイル保存時に自動でフォーマットを実行します。
editor.codeActionsOnSave保存時に追加で実行するコードアクションを指定します。
source.fixAll.ruffRuff による Lint エラーの自動修正を保存時に実行します。
source.organizeImports.ruffRuff による import 文の整理(isort 相当)を保存時に実行します。

Ruff の詳細設定(pyproject.toml

Ruff の詳細設定は pyproject.toml に記述します。

Ruff は、デフォルトでも実用的な設定が有効になっているため、基本的には、pyproject.toml に追加の設定を記述しなくても利用できます。

ただし、プロジェクト方針やコーディング規約に応じて、設定を明示的に変更することも可能です。ここでは、代表的な設定の一部を紹介します。

Ruff の設定は以下で紹介する項目以外にも多くの設定があります。指定可能な項目については、公式ドキュメントの Settingsを参照してください。

基本設定 [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" には以下のルールが含まれます。

CodeNameMessage
E401multiple-imports-on-one-lineMultiple imports on one line
E402module-import-not-at-top-of-fileModule 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 で調整していくのがおすすめです。

ぜひプロジェクトに導入してみてください。

あわせて読みたい
【Python Tech】プログラミングガイド
【Python Tech】プログラミングガイド
ABOUT ME
ホッシー
ホッシー
システムエンジニア
はじめまして。当サイトをご覧いただきありがとうございます。 私は製造業のメーカーで、DX推進や業務システムの設計・開発・導入を担当しているシステムエンジニアです。これまでに転職も経験しており、以前は大手電機メーカーでシステム開発に携わっていました。

プログラミング言語はこれまでC、C++、JAVA等を扱ってきましたが、最近では特に機械学習等の分析でも注目されているPythonについてとても興味をもって取り組んでいます。これまでの経験をもとに、Pythonに興味を持つ方のお役に立てるような情報を発信していきたいと思います。どうぞよろしくお願いいたします。

※キャラクターデザイン:ゼイルン様
記事URLをコピーしました