[初心者向け]VSCodeにRuffを設定する

## 対象読者

- Python中級者未満
- リンター・フォーマッターに興味があるけどまだ設定していない人

## Ruffって何？

RuffはPython用の静的コード解析ツール(リンター兼フォーマッタ)です。
リンターは、構文エラーなど静的に解析できる範囲でエラーを事前に見つけてくれます。
フォーマッタは、インデントの統一、空白や改行の整理などを行ってくれます。
初心者の方は、とりあえず設定しておけばなんだかいい感じに調整したり、警告出してくれるってことです。

Pythonにはたくさんの静的コード解析ツールがありますが、Ruffは2022年にリリースされた比較的新しいものです。
Rustで書かれているので高速に動作し、これまでの主要なPythonの静的コード解析ツールのルールを内包しているので、古い設定の人はRuffに更新してもいいかもしれません。

私も今回Ruffに変更するまでは、Flake8やautopep8などを設定していました。
これらを包括してかつ高速ってことらしいので、私はRuffに統一してしまいました。

Ruffの公式サイト

https://docs.astral.sh/ruff/

## 実際にVSCodeに設定してみる

VSCodeの拡張機能で`Ruff`と検索して、Ruffをインストールします。

![vsCode拡張Ruff.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570453/ac14a685-c898-0fad-d2cf-c61bbb5fb40e.png)



settings.jsonを開きます。
開き方は、下記サイトを参照してください。

https://daeudaeu.com/vscode-settings-json/

その後、VScodeの設定から`seetings.json`に下記を追記します。

```jsonc:settings.json
{
    "[python]": {
        "editor.formatOnSave": true,
        // Pythonファイルを保存する際に自動でフォーマットします。

        "editor.codeActionsOnSave": {
            "source.fixAll": "explicit",
            "source.organizeImports": "explicit"
        },
        // Pythonファイルを保存するときに、すべての問題を修正し、インポートを整理します。

        "editor.defaultFormatter": "charliermarsh.ruff"
        // PythonコードのデフォルトフォーマッターとしてRuffを使用します。
    },
}
```

他の設定が書いてある場合、追記するようにしてください。
私の場合は、最終的に下記のようになりました。

```jsonc:settings.json
{
    "workbench.colorTheme": "Default Dark+",
     // VS Codeのカラーテーマを「Default Dark+」に設定します。暗い背景色が使用されます。

    "git.autofetch": true,
    // リモートリポジトリから自動で最新の変更を取得します。これにより、Gitの状態が常に最新になります。

    "editor.formatOnSave": true,
    // ファイルを保存するときに自動でフォーマットを行います。設定されたフォーマッターに従ってコードが整形されます。

    "prettier.requireConfig": true,
    // Prettierの設定ファイル（.prettierrcなど）がプロジェクトに必要かどうかを指定します。設定ファイルがない場合、Prettierは動作しません。

    "workbench.iconTheme": "material-icon-theme",
    // ファイルやフォルダのアイコンテーマを「Material Icon Theme」に設定します。より視覚的に整理されたアイコンを表示します。

    "editor.inlineSuggest.enabled": true,
    // インラインでコード補完の提案を有効にします。エディタ内で次の入力が予測され、補完候補が表示されます。

    "github.copilot.enable": {
        "*": true,
        "plaintext": false,
        "markdown": false,
        "scminput": false
    },
    // GitHub Copilotを特定の言語に対して有効または無効にします。プレーンテキスト、Markdown、ソースコントロール入力では無効です。

    "markdown-pdf.displayHeaderFooter": false,
    // MarkdownをPDFに変換する際、ヘッダーとフッターを表示しないように設定します。

    "github.copilot.editor.enableAutoCompletions": true,
    // GitHub Copilotによる自動補完をエディタで有効にします。

    "[python]": {
        "editor.formatOnSave": true,
        // Pythonファイルを保存する際に自動でフォーマットします。

        "editor.codeActionsOnSave": {
            "source.fixAll": "explicit",
            "source.organizeImports": "explicit"
        },
        // Pythonファイルを保存するときに、すべての問題を修正し、インポートを整理します。

        "editor.defaultFormatter": "charliermarsh.ruff"
        // PythonコードのデフォルトフォーマッターとしてRuffを使用します。
    },

    "[markdown]": {
        "editor.defaultFormatter": "esbenp.prettier-vscode",
        // MarkdownファイルのデフォルトフォーマッターとしてPrettierを使用します。

        "editor.formatOnSave": true
        // Markdownファイルを保存するときに自動でフォーマットします。
    }
}
```
これで適当にPythonのコードを書いてみると、無事いい感じに修正してくれました。
結構高速に処理してくれるので、まずimport文を書いてそのライブラリを使う前に保存ボタンを押してしまうと、使っていないライブラリのimportは自動で消されてしまうので、癖で小まめに保存する人は気をつけましょう。　

私が初めてVSCodeを使用し始めて、フォーマッターを設定したときは、Flakc8とかを設定していましたが時代は変わって、高性能・高速になって便利になったなと思います。