Ruff の概要
- RuffはRust製の超高速なPython静的解析ツール(Linter)兼フォーマッターです。
- Flake8、Black、isortなどの既存ツールの機能をこれ1つで代替できます。
-
pyproject.tomlによる設定管理に対応しており、導入が非常に簡単です。
対象
- Pythonの環境構築をモダンにしたい方
- Lint実行の待ち時間を短縮したい方
- 複数ツールの設定管理が面倒な方
目次
- Ruffとは
- インストール
- 基本的な使い方(コマンドライン)
- 設定ファイル(pyproject.toml)
- VS Codeとの連携
- まとめ
1. Ruffとは
Ruffは、Rust言語で書かれた極めて高速なPython用のLinter(コードの静的解析ツール)およびFormatter(コード整形ツール)です。
最大の特徴はその圧倒的な実行速度で、既存のツールと比較して10〜100倍高速に動作します。
また、複数のツールを個別に管理する必要がなくなり、開発環境がシンプルになります。
補足:LinterとFormatter
- Linter: コードのバグや記述ミス、非推奨な書き方を検出するツール。
- Formatter: インデントや改行などを自動で整え、読みやすくするツール。
2. インストール
# インストール
pip install ruff
# バージョン確認
ruff --version
3. 基本的な使い方(コマンドライン)
Ruffはコマンドラインから簡単に実行できます。
主に使うのは、コードの問題点をチェックするcheckと、コードを整形するformatの2つです。
コードのチェック(Lint)
現在のディレクトリ以下のファイルをチェックします。
ruff check .
自動修正(Fix)
修正可能なエラー(未使用のimport削除など)を自動で直す場合は、--fixオプションをつけます。
ruff check --fix .
コードの整形(Format)
コードスタイル(インデントや改行位置など)を自動整形します。
ruff format .
4. 設定ファイル(pyproject.toml)
Ruffの設定は、Python標準の構成ファイルであるpyproject.tomlに記述するのが一般的です。
[tool.ruff]
# 1行の最大文字数
line-length = 88
[tool.ruff.lint]
# 有効にするルール(E: pycodestyle, F: Pyflakes, I: isort)
select = ["E", "F", "I"]
# 無視するルール
ignore = []
# ファイル保存時の自動修正設定(VS Code等用)
[tool.ruff.format]
quote-style = "double"
5. VS Codeとの連携
VS Codeで快適に開発するには、公式の拡張機能をインストールします。
ファイル保存時に自動で整形・修正を行うには、VS Codeのsettings.jsonに以下を追加します。
"[python]": {
"editor.defaultFormatter": "charliermarsh.ruff",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll": "explicit",
"source.organizeImports": "explicit"
}
}
6. Pre-commit Hook や GitHub Actions の導入例
開発チーム全体でコード品質を保つには、個人の環境だけでなく、共有リポジトリへの反映時にもチェックを自動化することが重要です。
Pre-commit Hook の設定例
Gitコミット時に自動でRuffを実行するには、pre-commitというフレームワークを利用します。
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.14.5
hooks:
# Run the linter.
- id: ruff-check
# Run the formatter.
- id: ruff-format
GitHub Actions の設定例
GitHubへのプッシュやプルリクエストのタイミングでチェックを行うには、GitHub Actionsを利用します。
name: Ruff
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Run Ruff
uses: astral-sh/ruff-action@v1
まとめ
Ruffを導入することで、Python開発における「コードチェックの待ち時間」と「ツール管理の手間」を削減できます。
単純に依存が減るだけでも、開発体験がかなり向上しました。