まくろぐ
更新: / 作成:

Ruff とは

Ruff は Python 用の Lint & Format ツールで、Rust で記述されているため非常に高速に動作します。 Ruff だけで Lint やフォーマットをまとめてかけることができる ため、次のようなツールを個別にインストールする必要がなくなります。

  • Flake8(Linter)
  • Black(フォーマッター)
  • isort(import 文のソート)

これまで、Python コードに Lint や Format をかける場合は、複数のツールを組み合わせて使うのが主流で、効率的な処理が行われているとは言いにくい状況でした。 例えば、広く使われている Lint ツールに Flake8 がありますが、これは pyflakespycodestyle の組み合わせであり、内部で何度もファイルの読み込みやパースが行われるため処理に時間がかかっていました。 Ruff は様々な処理が一度で済むように実装されています。 同様に広く使われているフォーマットツールとして Black がありますが、よくよく考えると、Black でフォーマット済みのコードを別の Lint ツール (Flake8) でスタイルチェックするのは無駄です。 Ruff で Lint とフォーマットの処理を一括で行うのは理にかなっています。

ちなみに、Ruff の開発元である Astral 社は、Python 用のパッケージマネージャ(プロジェクト管理ツール)である uv も公開しています。 こちらも Rust で実装されており、高速かつ使いやすいのでオススメです。

VS Code に Ruff 拡張をインストールする

Visual Studio Code で Ruff を使うには、下記の公式拡張をインストールするだけです。 ruff コマンドを別途インストールする必要はありません。

Ruff 拡張のインストールが完了すると、Python コードの編集時に自動的に Lint チェックがかかるようになります。 Python コードのフォーマットをかけるには、コマンドパレット (Shift + Cmd/Ctrl + P) から Ruff: Format document を選択します。

ファイル保存時に自動でフォーマットをかけるようにするには、VS Code の設定ファイルに次のように記述しておきます(参考: VS Code の設定ファイルの場所 (settings.json))。

settings.json(抜粋)
"[python]": {
  // フォーマッターとして Ruff を使う
  "editor.defaultFormatter": "charliermarsh.ruff",
  // ファイル保存時に自動でフォーマットをかける
  "editor.formatOnSave": true,
  "editor.codeActionsOnSave": {
    // ファイル保存時に Lint violations を自動で修正する
    "source.fixAll.ruff": "explicit",
    // ファイル保存時に自動でインポートを整理する
    "source.organizeImports.ruff": "explicit"
  }
},

関連記事

まくろぐ
サイトマップまくへのメッセージ