パート2
リンターとフォーマッター

リンターとフォーマッター

これまでの章で、Django の基本的な機能を学びました。

この章では、より実践的なアプリケーションを作成するに先立ち、コードの品質を高めるためのツールを紹介します。

Ruff (opens in a new tab)は、リンター・フォーマッター・インポートの整理など豊富な機能を持ち、かつ動作が非常に高速なので、かつて別々に使用していたflake8、black、isortを置き換えることができます。

uv add -G dev ruff

-G dev オプションは、開発環境でのみインストールすることを指定します。 本番環境で必要がない際に、このオプションを指定します。

Ruff をインストールしたら、以下のコマンドで実行できます。

uv run ruff .

リンター

リンターは、コードの品質をチェックするツールです。

たとえば、変数名が正しくない、インデントが正しくない、などの問題を検出することができます。 また、コードの品質を高めるためのヒントを表示することもできます。

フォーマッター

フォーマッターは、コードのフォーマットを統一するツールです。

たとえば、"' を統一する、インデントを統一する、などの機能があります。

インポートの整理

Python では、インポートの書き方には視認性を高めるためのいくつかのルールがあります。

たとえば、順番は以下のようにします。 それぞれのグループの間には空行を入れ、グループ内のインポートはアルファベット順にします。

  • 標準ライブラリのインポート
  • サードパーティライブラリのインポート
  • 自作ライブラリのインポート

しかし、このようなルールを守るのは面倒です。 そこで、Ruff がインポートの整理を自動化してくれます。

VS Code の設定

VS Code で Python を書く場合、それぞれのツールに対応する拡張機能をインストールすることで、たとえば保存時に自動でフォーマットを実行するなどの設定ができます。

拡張機能はすでにインストールしているはずです。

「表示」→「コマンドパレット」を選択し、settings.json と入力して「基本設定:ユーザー設定を開く(JSON)」を選択します。

開いたファイルに以下の内容を追記します。

settings.json
{
    // ...
    "[python]": {
        "editor.defaultFormatter": "ms-python.ruff-formatter",
        "editor.formatOnSave": true,
        "editor.formatOnType": true,
        "editor.codeActionsOnSave": {
            "source.organizeImports": "explicit",
            "source.fixAll": "explicit"
        }
    },
    "isort.args": ["--profile", "ruff"],
    "[html][django-html][handlebars][hbs][mustache][jinja][jinja-html][nj][njk][nunjucks][twig]": {
        "editor.defaultFormatter": "monosans.djlint"
    }
    // ...
}

これで、保存時に自動でフォーマットを実行するようになるはずです。