はじめに
Python開発の現場で、コードの品質やスタイルを保つためのLinterやFormatterは欠かせません。2022年以降、爆発的なスピードと多機能性で注目を集めているのがRuffです。本記事ではRuffの概要から実践的な使い方、カスタマイズ方法まで、10章にわたって詳しく解説します。
第1章:Ruffとは何か?
RuffはRustで実装された、超高速なPython用Linter&Formatterです。従来のFlake8やBlack、isortなど複数ツールの機能を統合し、1つのコマンドで静的解析とフォーマットを実現します。大規模なプロジェクトでもストレスなく動作し、CI/CDの時間短縮にも効果的です。
第2章:Ruffのインストール
Ruffはpipで簡単にインストールできます。Python 3.7以降に対応しており、導入のハードルが低いのも魅力です。
pip install ruff
インストール後、バージョン確認もできます。
ruff --version
第3章:最初のRuff実行
Ruffの基本コマンドはruff check
です。プロジェクトディレクトリや特定ファイルを指定して実行できます。
ruff check .
ruff check path/to/file.py
エラーや警告が一覧表示され、修正すべき箇所が明確になります。
第4章:不要なインポートの検出と自動修正
Ruffは未使用のインポートを即座に検出し、自動で修正も可能です。
修正前(sample1.py):
import os
import sys
def greet(name):
print(f"Hello, {name}")
コマンド実行例:
ruff check sample1.py
ruff check sample1.py --fix
修正後:
def greet(name):
print(f"Hello, {name}")
未使用インポートが自動で削除されます。
第5章:コードフォーマットの自動化
RuffはFormatterとしても優秀です。不要なスペースやインデントの乱れを自動で修正します。
修正前(sample2.py):
def greet ( name ):
print( f"Hello, { name }" )
コマンド実行例:
ruff format sample2.py
修正後:
def greet(name):
print(f"Hello, {name}")
Blackライクな整形が一瞬で完了します。
第6章:設定ファイルでカスタマイズ
Ruffはpyproject.toml
や.ruff.toml
で詳細な設定が可能です。無視ディレクトリや行長、ターゲットPythonバージョンなど柔軟に制御できます。
例:pyproject.toml
[tool.ruff]
exclude = [".git", ".venv", "build", "dist"]
line-length = 88
indent-width = 4
target-version = "py39"
[tool.ruff.lint]
select = ["E4", "E7", "E9", "F"]
ignore = []
fixable = ["ALL"]
unfixable = []
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
設定ファイルを置くだけで、プロジェクト全体にルールが適用されます。
第7章:ルールの追加・除外と柔軟な運用
プロジェクトごとにルールの追加や除外も簡単です。たとえば、行長制限を厳しくしたい場合や、特定ファイルだけルールを無効化したい場合も柔軟に対応できます。
例:行長制限を79文字に変更
[tool.ruff]
line-length = 79
[tool.ruff.lint]
extend-select = ["E501"]
例:特定ファイルでルール除外
[tool.ruff.lint.per-file-ignores]
"__init__.py" = ["E402"]
"**/tests/*" = ["E501"]
第8章:CI/CDやエディタ連携
RuffはCI/CDパイプラインやVSCodeなどエディタとの連携も充実しています。.github/workflows
やpre-commit
設定に組み込むことで、開発フロー全体に品質管理を徹底できます。
例:pre-commit用設定(.pre-commit-config.yaml)
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.6.4
hooks:
- id: ruff
args: [--fix]
- id: ruff-format
開発者全員が同じルールでコードを書けるため、チーム開発に最適です。
第9章:Ruffのパフォーマンスと大規模プロジェクトでのメリット
RuffはRust製のため、従来のPython製ツールに比べて10~100倍以上の速度を誇ります。数千ファイル規模のリポジトリでも一瞬で解析・整形が完了し、CI/CDのボトルネックを解消します。
ベンチマーク例:
ruff check .
ruff format .
数秒で全ファイルがチェック&整形されるため、開発効率が劇的に向上します。
第10章:Ruffを最大限に活用するTips
- ルールのカスタマイズ:プロジェクトごとに最適なルールセットを設定し、無駄な警告を減らす
-
自動修正の活用:
--fix
オプションで手動修正の手間を削減 - エディタ連携:VSCode拡張やpre-commitで日常の開発に組み込む
- CI/CD統合:品質チェックを自動化し、レビューコスト削減
Ruffの活用例(sample3.py):
import math
def area_of_circle(radius):
return math.pi * radius ** 2
未使用インポートやスタイルを即座に検出・修正できます。
RuffはPython開発における新しい標準となるべきツールです。インストールも簡単、設定も柔軟、そして圧倒的な速度。LinterやFormatter選びに迷っている方は、ぜひ一度Ruffを導入してみてください。