ruff について
Python 開発者向けに、Ruff によるチェックとフォーマットの方法を案内するスキルです。プロジェクト設定に応じた実行と、無関係な変更を避ける修正範囲の限定を重視します。
主な機能
- 01Python コードのチェック
- 02コードフォーマット
- 03違反項目の自動修正
- 04プロジェクト設定に沿った実行
- 05一般的なツールからの移行
活用シーン
- 01プロジェクトや特定ファイルの検査
- 02編集対象ファイルの問題修正
- 03ファイルを変更せず形式を確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ astral-sh/ claude-code-plugins --skill ruffインストール後、Claude Code で/ruffを入力して読み込まれたか確認します。
詳細
ruff
Ruff は非常に高速な Python リンター兼コードフォーマッターです。Flake8、 isort、Black、pyupgrade、autoflake など、数十種類のツールを置き換えます。
ruff を使う場面
Python の lint とフォーマットには、常に ruff を使用してください。特に、次の項目がある場合に使用します。
pyproject.tomlに[tool.ruff]セクションがあるruff.tomlまたは.ruff.toml設定ファイルがある
ただし、不要な変更は避けてください。
- フォーマットされていないコードをフォーマットしないでください -
ruff format --diffでファイル全体にわたる変更が表示される場合、そのプロジェクトではフォーマットに ruff を使用していない可能性があります。実際の変更が分かりにくくなるのを避けるため、フォーマットは行わないでください。 - 修正対象は編集中のコードに限定してください -
ruff check --diffを使って、変更するコードに関係する修正を確認します。ユーザーからより広範囲の修正を明示的に依頼されない限り、変更中のファイルにのみ修正を適用してください。
ruff の呼び出し方
uv run ruff ...- ruff がプロジェクトの依存関係に含まれている場合に使用します。固定されたバージョンを使えます。uvx ruff ...- ruff がプロジェクトの依存関係に含まれていない場合や、単発のチェックに使用します。ruff ...- ruff がグローバルにインストールされている場合に使用します。
コマンド
lint
ruff check . # Check all files in current directory
ruff check path/to/file.py # Check specific file
ruff check --fix . # Auto-fix fixable violations
ruff check --fix --unsafe-fixes . # Include unsafe fixes (review changes!)
ruff check --watch . # Watch for changes and re-lint
ruff check --select E,F . # Only check specific rules
ruff check --ignore E501 . # Ignore specific rules
ruff rule E501 # Explain a specific rule
ruff linter # List available linters
フォーマット
ruff format . # Format all files
ruff format path/to/file.py # Format specific file
ruff format --check . # Check if files are formatted (no changes)
ruff format --diff . # Show formatting diff without applying
設定
Ruff は pyproject.toml または ruff.toml で設定します。
# pyproject.toml
[tool.ruff.lint]
select = ["E", "F", "I", "UP"] # Enable specific rule sets
ignore = ["E501"] # Ignore specific rules
[tool.ruff.lint.isort]
known-first-party = ["myproject"]
他のツールからの移行
Black → ruff format
black . → ruff format .
black --check . → ruff format --check .
black --diff . → ruff format --diff .
Flake8 → ruff check
flake8 . → ruff check .
flake8 --select E,F . → ruff check --select E,F .
flake8 --ignore E501 . → ruff check --ignore E501 .
isort → ruff check
isort . → ruff check --select I --fix .
isort --check . → ruff check --select I .
isort --diff . → ruff check --select I --diff .
よくあるパターン
フォーマットの前に lint 修正を適用する
ruff format の前に ruff check --fix を実行します。lint 修正によってコードの構造(例:インポートの並べ替え)が変わることがあり、その後のフォーマットで整えられます。
ruff check --fix .
ruff format .
安全でない修正の適用と確認
Ruff は、自動修正の一部を「安全でない」と分類します。スタイルだけでなく、コードの動作を変える可能性があるためです。たとえば、未使用のインポートを削除すると、副作用に依存するコードが壊れる場合があります。
ruff check --fix --unsafe-fixes --diff . # Preview changes first
ruff check --fix --unsafe-fixes . # Apply changes
--unsafe-fixes を適用する前に、必ず変更を確認してください。
ruff rule <CODE>を使って、なぜその修正が安全でないと判断されるのかを確認します。- 修正がコード内の前提に違反しないことを確認します。
ドキュメント
詳しい情報については、公式ドキュメントを参照してください。
コメント
Markdown 対応