💈
Python のフォーマッターに Ruff を使うべき根拠
特別な理由がない限り、Python コードのフォーマッターは Ruff を使用することをお奨めします
-
Black とほぼ同一の出力を生成するように設計されており、次のような Black の利点を引き継いでいるため:
- フォーマッターのカスタマイズで揉めないため
- 誰が書いても同じコードになりやすいため
- Black, isort と比較して次の点で優れているため:
Python の 3 大主要フォーマッター比較
フォーマッター | GitHub Star (2025-05-02 時点) |
---|---|
autopep8 | 4612 |
yapf | 13892 |
Black | 40240 |
Black が他のフォーマッターよりも選ばれた理由
-
Black はカスタマイズは 1 行あたりの文字数程度しか許可されていません
- 「カスタマイズができない」ということが評価されて、
カスタマイズができる yapf などより支持され勢いがあります
- 「カスタマイズができない」ということが評価されて、
- 参考: Python開発を円滑に進めるためのツール設定 Part.1 | ログミーBusiness
autopep8
hhatto/autopep8: A tool that automatically formats Python code to conform to the PEP 8 style guide.
- 日本人のフリーランスの方が開発されたフォーマッター
- PEP 8 に準拠することを目的とします
yapf
google/yapf: A formatter for Python files
- Google 製フォーマッター
- 自由度が高いカスタマイズが可能
Black
-
Python Software Foundation (Python ソフトウェア財団) 公式のフォーマッター
-
PEP 8 よりも更に一歩踏み込んで、
誰が書いても同じコードになることを目的とするフォーマッター -
3 大主要フォーマッターの中では最後発
Ruff
- Ruff は Python のリンターであり、フォーマッターでもあります
- Ruff は Rust で実装されており、非常に高速です
- Ruff のフォーマッターは Black の代替となることを目標として設計されています:
Black と Ruff の違い
- Black はフォーマッター、Ruff は linter であり、フォーマッターでもあります
-
Ruff は、
Django や Zulip のような大規模な Black 形式のプロジェクトに対して実行した場合、
99.9%以上の行が Black と同一の書式で出力されます: - Ruff は Black のコーディングスタイルを意図的に改善しています:
- Black と Ruff の違いの一覧は次の記事にまとまっています:
Ruff を使用することをお奨めします
インポートのソートも- isort についても置き換えることを目標に開発されています:
- インポートのソートのスタイルを意図的に改善しています
- Black のフォーマットスタイルとの互換性は保たれています
isort
- インポートをアルファベット順にソートし、自動的にセクションとタイプに分割します
- Black のフォーマットスタイルと互換性を持つように設定することができます
isort と Ruff の違い
次の記事にまとまっています:
- How does Ruff's import sorting compare to isort? | FAQ | Ruff
Discussion