【ラフ】

Ruff とは?

最終更新:
💡 Pythonの検査と整形を、一つのツールで

Rustで実装されたPythonのリンターとコードフォーマッター。ruff checkで選択したルールに沿ってコードを検査し、ruff formatで見た目を整える。既存ツールからの移行では、対応するルールや設定、整形結果の違いを確認する。

📌 このページのポイント
Ruff:検査と整形を使い分ける Python コード ruff check ルールに沿って検査 --fixで対応項目を修正 Iルールでimport整理 ruff format インデント・改行など 見た目を整える Rust製/ルール・互換性・修正の安全性を確認
一つのツールで検査と整形を扱える。importの並べ替えはcheck側のIルールで行い、formatだけでは並べ替えない。
ひよこ ひよこ
RuffはFlake8やBlackを全部置き換えるの?
ペンギン先生 ペンギン先生
検査と整形を一つのツールで扱えるよ。ただしすべてのプラグインや設定、出力が同じという意味ではない。リンターには既存ツールに対応する多くのルールがあるので、使っている項目の対応を確認して移行するんだ。
ひよこ ひよこ
checkとformatはどう違う?
ペンギン先生 ペンギン先生
ruff checkは未使用のimportなど、選んだルールに沿って問題を調べる。ruff formatはインデントや改行などを整えるよ。Blackのスタイルとの互換性を目指しているが、意図した違いもある。両者を交互に使う前提にはしないんだ。
ひよこ ひよこ
formatだけでimportの順番もそろう?
ペンギン先生 ペンギン先生
インポートの並べ替えはformatではなく、リンター側のIルールで行うよ。例えばruff check --select I --fixで整理してからruff formatで整形する。ルールを選べることと、全ルールが最初から有効なことは別なんだ。
ひよこ ひよこ
設定はどこに書くの?
ペンギン先生 ペンギン先生
pyproject.tomlなら共通設定をtool.ruff、検査設定をtool.ruff.lint、整形設定をtool.ruff.formatに書くよ。ruff.tomlや.ruff.tomlも使える。移行ではルールコードだけでなく、有効な項目や設定の意味も比べよう。
ひよこ ひよこ
自動修正なら全部任せていい?
ペンギン先生 ペンギン先生
ruff check --fixは、通常は安全とされる修正を適用するよ。unsafeな修正は処理の意味が変わる場合があり、別の指定が必要。すべての違反に修正が用意されているわけでもない。差分を確認して、必要なテストを行おう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Ruff」って出てきたら「Pythonコードの検査と整形を行うRust製ツール」と思えばだいたいOK!
📖 おまけ:英語の意味
「Ruff」 = Pythonの検査・整形ツールの名称
💬 公式文書ではPythonのリンターとコードフォーマッターとして紹介されているよ。検査をするcheckと、整形をするformatを使い分ける名前として覚えるといいね。

参考資料

← 用語集にもどる