【ラフ】

Ruff とは?

💡 Python界の韋駄天リンター、秒で整えて秒で返す
📌 このページのポイント
Ruff: 複数ツールを1つに統合 従来 Flake8(リント) Black(フォーマット) isort(インポート整理) pyupgrade(構文更新) Ruff リント フォーマット インポート整理 構文アップグレード Rust製 / 超高速 速度比較: Flake8 Ruff(10〜100倍速い)
Ruffによるツール統合のイメージ
ひよこ ひよこ

PythonにはFlake8とかBlackとかあるけど、またリンター増えたの?

ペンギン先生 ペンギン先生

Ruffはそれらを置き換えるために作られたツールだよ。Flake8のリントルール、Blackのフォーマット、isortのインポート整理を全部1つでやってくれるんだ

ひよこ ひよこ

速いって聞くけど、どのくらい違うの?

ペンギン先生 ペンギン先生

大規模プロジェクトだとFlake8が数十秒かかるところを、Ruffは1秒以下で終わることもあるよ。Rustで書かれているからJavaScriptPythonで動くツールとは桁違いの速さだね

ひよこ ひよこ

設定はどこに書くの?

ペンギン先生 ペンギン先生

pyproject.tomlの[tool.ruff]セクションに書けるよ。Pythonプロジェクトの設定が1ファイルにまとまるから管理しやすいんだ

ひよこ ひよこ

Flake8から乗り換えるのは大変?

ペンギン先生 ペンギン先生

Flake8のルールコード(たとえばE501とか)がそのまま使えるから、移行はかなり楽だよ。設定を少し書き換えるだけでほぼ同じチェックができるんだ

ひよこ ひよこ

最近のPython開発ではRuffが標準になりつつあるの?

ペンギン先生 ペンギン先生

uvと組み合わせて使う人がすごく増えているね。CPythonやFastAPIなど有名プロジェクトも採用していて、事実上の新標準になりつつあるよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Ruff」って出てきたら「Pythonのリントとフォーマットを爆速でやるツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Ruff」 = ラフ
💬 犬の鳴き声(Ruff!)が由来で、ロゴも犬のモチーフなんだよ。速くて忠実な番犬みたいにコードを守ってくれるイメージだね
← 用語集にもどる