Ruffに乗り換えたので、導入手順を残しておこうと思います
この記事では、VSCodeの拡張機能としてのRuffの導入方法に限定して説明します。
Pythonプロジェクトに直接インストールする方法については、別の記事をご参照ください。
Ruffって?
ざっくりいうと高速なLinter兼Formatter
です。
以下の3つのパッケージをまとめたオールインワンの静的解析ツールみたいです。
- Flake8
- Black
- isort
詳しくはこちら
乗り換えた理由
深い理由はなかったですが、おもに以下点が気に入ったので、試しに使ってみました。
- めっちゃ早い
- LiterとFormatterを1つにまとめられる
- 使ってないパッケージを自動で消してくれる
VSCodeに導入する方法
-
Ruffの拡張機能をインストール
-
デフォルトのFormatterをRuffに設定する
設定からeditor.defaultFormatter
で検索して、Ruff
を選択する
- UIからの設定が面倒な方はこちら
{
"editor.defaultFormatter": "charliermarsh.ruff",
"editor.formatOnSave": true
}
Flake8+autopep8から移行する方法
既存のLinterとFormatterの拡張機能を無効にするだけでOKです。
不要になったら削除しちゃってください
無効にする拡張機能
- Linter
- Flake8
- Pylint
- etc...
- Formatter
- autopep8
- Black
- isort
- etc...
使い方
VSCodeに導入する方法を済ませれば、ファイルを保存するだけで自動整形されます。
ただし、以下の2つは手動で実行する必要があります。
- 未使用のパッケージの削除
- importの順番
設定の変更方法
Ruffでは自動的にシングルクォートをダブルクォートに変換してくれるのですが、私はシングルクォートのほうが好みなので、設定で変更しました。
フォーマットの設定方法はこのあたりに書いてありました。
準備
- UIからの設定が面倒な方はこちら
{
"editor.defaultFormatter": "charliermarsh.ruff",
"editor.formatOnSave": true,
+ "ruff.configuration": "./pyproject.toml"
}
設定の変更
[tool.ruff.format]
quote-style="single"
個人的に切り替えて良かったポイント
切り替えて数日ですが、以下のポイントが良かったなと感じてます。
使っていく中で、他にいい所があれば追記していこうと思います。
とにかく早い
私はファイル保存時にしかフォーマットをかけないのですが、体感で早くなった気がします。
autopep8だと、0.2,3秒かかってる感じがしていましたが、Ruffだと保存した瞬間に終わってる感覚があります。
LinterとFormatterが一つになっている
Ruffを導入する前は以下の静的解析ツールを導入していましたが、Ruffは1つだけで済むのが嬉しいです
- autopep8
- Flake8
- isort
pyproject.tomlを採用している
Flake8なんかは設定を変更したい場合は、専用の設定ファイルで定義する必要がありましたが、RuffはPythonの標準機能である、pyproject.tomlに設定を書けばよいのがとても嬉しいです。
プロジェクトが小さいうちは、1つのファイルにまとまっている方が管理しやすいので、結構嬉しいポイントでした。
プロジェクトが大きくなってきたらruff.toml
か.ruff.toml
に書くこともできるみたいです。
このあたりに書いてありました。