RuffでPythonのlintとformatを一本化する判断材料
Ruff は Rust で書かれた Python のリンター兼コードフォーマッターで、900 以上のルールを内蔵し、Flake8・isort・Black と互換で、自動修正にも対応します。
ひと目でわかる
- これは何?
- astral-sh/ruffはRust実装のPythonリンター兼フォーマッターです。九百を超えるルール、Flake8やBlackとの互換をうたう単一CLIがREADMEの中心です。
- 誰に向いている?
- 継続的インテグレーションとエディターでlintとformatを短いコマンドにまとめたいPythonチームにはRuffが有力です。既存Flake8プラグイン全部が同等に置き換わる保証はREADMEになく、fixによる自動編集もレビューが必要です。
- 商用利用できる?
- できます。MIT は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
- 今もメンテナンスされている?
- されています。直近 1 日以内に新しいコミットがあります。
- 何の言語で書かれている?
- 主に Rust です(GitHub の言語統計による)。
回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。
オープンソース詳細解説
複数ツールを一つのCLIに寄せる狙い
RuffはRustで書かれたPython向けリンター兼フォーマッターです。READMEは、Flake8とそのプラグイン群、Black、isort、pydocstyle、pyupgrade、autoflakeなどを単一インターフェースで置き換え、個別ツールより桁違いに速い、と位置づけています。表向きの入口はruff checkとruff formatの二つだけです。
機能一覧には、pipでの導入、pyproject.toml対応、Python 3.14互換、Flake8・isort・Blackとのドロップイン互換、内蔵キャッシュ、未使用import削除などの自動修正、九百を超える内蔵ルール、エディター統合、モノレポ向け階層設定が含まれます。uvとtyを手がけるAstral社が支援し、Apache AirflowやFastAPI、Pandasなど採用例がREADMEに並びます。
ruff checkとruff formatの二命令構成は、CIを1ジョブにまとめる際のキャッシュ共有に向きます。READMEのbuilt-in cachingは変更ファイルのみ再解析、とあり、大規模monorepoでは階層設定とセットで効きます。 追加段落:README一次情報に基づき、本リポジトリの公開範囲はドキュメントとソースに限定されます。star数やfork数はGitHubメタデータ由来の注目指標であり、機能保証やSLAを意味しません。導入判断では、READMEが示す具体コマンド・設定キー・バージョン番号を手元環境で再現し、期待する入出力が得られるかを記録してください。READMEに無い性能数値、互換マトリックス、セキュリティ監査結果は推測で補わず、issue/リリースノート/公式サイトで確認できる事実だけを採用記録に残します。
READMEが示す速度の言い方
READMEは、既存リンターやフォーマッター比で十から百倍速い、と主張し、CPythonコードベースを最初からlintする図を載せます。Dagster作者Nick Schrock氏は全コードベース0.4秒、Bokeh関係者Bryan Van de Ven氏はflake8比百五十から二百倍、isort作者Timothy Crosley氏は速すぎて動作確認のためわざとバグを入れた、といった証言が続きます。
これらはREADME内の引用であり、ベンチマーク手順やハードウェア条件は同ページにありません。自リポジトリでtime ruff checkと従来ツールを並べるのが、速度主張を自分の規模で確かめる現実的な方法です。
Testimonialsの0.4秒/0.2秒は第三者証言であり、自リポジトリのファイル数・ルール数で再計測が必要です。CPython codebase lint図はREADME Overviewにあり、ハードウェア条件はリンク先依存です。
uvxとスタンドアロンインストーラー
Getting Startedの例は、uvx ruff@0.16.5 checkとuvx ruff@0.16.5 formatです。恒久導入はuv tool install ruff@latest、pip install ruff、pipx install ruffなど。バージョン0.5.0以降は、macOSとLinux向けにcurlでinstall.sh、Windows向けにPowerShellスクリプト、特定版用URLもREADMEに示されます。
HomebrewやConda、その他パッケージマネージャーはインストールドキュメントへリンクされます。最新リリース0.16.5(2026-08-27)、スター数は約四万九千、未解決issueは二千超、ライセンスMIT、公式ドキュメントはdocs.astral.sh/ruff、プレイグラウンドはplay.ruff.rsです。
uvx ruff@0.16.5はインストール不要試用に有効です。CIではpip install ruff==0.16.5かinstall.shで同一版を固定しないと、pre-commitとGitHub Actionで差分が出ます。
checkとformatの引数、統合先
ruff checkはカレントディレクトリとサブディレクトリ、パス、glob、改行区切り引数ファイルを受け付けます。統合として、pre-commit用リポジトリ、VS Code拡張、GitHub ActionがREADMEにYAML例付きで載ります。ファーストパーティエディター統合はeditors/setupへリンクされます。
pre-commitのrevを固定しないと、ローカルとCIで有効ルール集合がずれます。ruff formatも同様のパス指定を受け付ける、とUsage節に続きます。README単体では対応エディターの全リストは列挙されていません。
pyproject.toml [tool.ruff]のline-length 88はBlack既定とREADMEが明示します。preview=true有効時はルール集合が変わるため、CIとローカルでpreview有無を揃える必要があります。
pyproject.tomlとpreviewモード
設定ファイルはpyproject.toml(tool.ruffプレフィックス)、ruff.toml、.ruff.tomlです。READMEのデフォルト例は、.gitや.venvなどを除外、行長八十八、インデント四、ターゲットPython 3.10想定、フォーマットはBlack準拠、とあります。
一部オプションは専用CLI引数、残りは包括的なconfig引数で渡します。previewをtrueにするかpreviewフラグを渡すと、不安定ルールやインターフェース変更を含むプレビューモードが有効になります。階層的かつカスケードする設定はモノレポ向け、とOverviewにも書かれています。
flake8-bugbear等約50プラグイン再実装リストはrules docへリンクされます。既存.flake8のextend-ignoreをtool.ruff.lint.ignoreへ写す移行表はREADMEになく、ruff check --statisticsで差分確認が現実的です。
九百ルール超と再実装プラグイン
九百を超えるlintルールの多くはFlake8系をRustで再実装、とREADMEは明記し、flake8-bugbearなど約五十プラグイン相当を列挙します。デフォルト有効カテゴリにF、E、B、UP、RUFなどがあり、フォーマッターと重なるスタイル系は省略されます。完全なルール表はrulesドキュメント側です。
謝辞では、リンターがFlake8やPyflakes、pycodestyle等のAPIに基づくこと、フォーマッターがRomeのrome_formatterをフォークしPrettierとBlackの影響を受けること、インポート解決がPyrightアルゴリズムに基づくことがREADMEに書かれています。
ruff-pre-commitとruff-actionのYAML例はREADMEにあり、rev pinが推奨されます。VS Code ruff-vscodeは保存時formatと競合し得るため、editor settingsのdefault formatter設定をチームで統一します。
Ruff移行前の確認手順
MITライセンス(Charles Marsh 2022)で、READMEはセキュリティ保証やサポート契約を主張していません。既存Black設定とバイト単位で同一になる保証もなく、ruff format --diffで自ツリーを見る必要があります。
移行前のRuff固有手順として、uvx ruff@0.16.5 checkをリポジトリルートで実行し、違反一覧をFlake8ベースラインと比較、pyproject.tomlにtool.ruffを追加して再実行、ruff format --checkでBlack差分を確認、pre-commitのrevを0.16.5に固定、という順が現実的です。fixによる自動編集はプルリクエストレビュー必須、がREADMEのfix supportの含意です。
Ruff移行ではpre-commitのrev固定が重要です。uvx ruff@0.16.5 checkの出力をFlake8ベースラインと並べ、pyproject.tomlのtool.ruffが意図どおり読まれることを確認してから、formatとfixの自動適用範囲を決めてください。
uvx ruff@0.16.5 checkをリポジトリrootで実行し、violations件数をFlake8 baselineと並べ、続けてruff format --checkでBlack差分有無を見るのがRuff移行の第一確認です。
編集部の結論
継続的インテグレーションとエディターでlintとformatを短いコマンドにまとめたいPythonチームにはRuffが有力です。既存Flake8プラグイン全部が同等に置き換わる保証はREADMEになく、fixによる自動編集もレビューが必要です。uvx ruff@0.16.5 checkを対象リポジトリで実行し、ruff formatとの差分、pyproject.tomlのtool.ruffセクションが意図どおり読まれるかを確認してからBlackやisortからの移行範囲を決めてください。
コミュニティノート