[OSS紹介#25] ruff-vscode:Pythonコードの自動チェックと修正を手軽に実現する拡張機能

この記事について

このブログシリーズでは、注目すべきオープンソースソフトウェア(OSS)を定期的に紹介していきます。今回の記事では、前回ご紹介した「Ruff」に続き、その機能を自動で実行する方法について、Visual Studio Code用拡張機能「ruff-vscode」に焦点を当てます。

ソフトウェア開発の現場では、コードの品質を保ちながら効率的に作業を進めるためのツールが常に求められています。「Ruff」は、Pythonのコーディングスタイルを一貫性を持って保つための非常に高速なリンターであり、さまざまな自動修正機能を備えています。特に「ruff-vscode」を利用することで、開発者はインターフェース内で手間をかけずにコードのチェックと修正を実行できるようになります。

この記事では、「ruff-vscode」の特徴と、その利用によって得られる利点を詳しく紹介し、開発者における生産性向上へどのように寄与できるのかを探ります。これにより、現場のワークフローを効率化し、開発の質を向上させる新たな一歩を踏み出す手助けができると信じています。

リンク:https://github.com/astral-sh/ruff-vscode


本コンテンツは、弊社AI開発ツール「IXV」を用いたOSSツール紹介です。情報の正確性には努めておりますが、内容に誤りが含まれる可能性がございますのでご了承ください。

1. ツールでできること

Ruffは、Python用の非常に高速なリンターおよびコードフォーマッタであり、Visual Studio Code(VSCode)の拡張機能として利用できます。このツールは、Flake8とそのプラグイン、Black、isort、pyupgradeなどを置き換えることができ、個々のツールよりも数十倍から数百倍速く実行されます。

1.1 主な機能

  • 自動修正: 未使用のインポートなど、自動修正可能な違反に対する「クイックフィックス」アクションを提供します。
  • 全修正: 「全修正」アクションを使用して、全ての自動修正可能な違反を一括で修正できます。
  • ドキュメントのフォーマット: Black互換のコードフォーマッティングを行う「ドキュメントのフォーマット」機能を搭載しています。
  • インポートの整理: isort互換のインポート整理を行う機能があります。

2. セットアップ手順

2.1 必要条件

RuffはPython 3.7から3.13までのバージョンに対応しており、VSCodeのPython拡張機能が必要です。また、Ruffのバージョンは0.11.2以上である必要があります。

2.2 インストール手順

VSCodeを開き、拡張機能マーケットプレイスから「Ruff」を検索して拡張機能をインストールします。

次にsettings.jsonでRuffをデフォルトのフォーマッタとして設定します。また、保存時に自動修正を行うように設定します。

{
 "[python]": {
   "editor.formatOnSave": true,
   "editor.defaultFormatter": "charliermarsh.ruff"
 }
}

2.3 ライセンスと動作環境

RuffはMITライセンスの下で配布されています。動作環境は、Python 3.7以上およびVSCodeのPython拡張機能が必要です。

3. 簡単な使い方

Ruffをインストールした後、PythonまたはJupyter Notebookファイルを開くと、自動的にRuffが実行されます。設定を変更することで、特定のアクションを無効にすることも可能です。

3.1 主要コマンド

  • Ruff: Fix all auto-fixable problems: 自動修正可能な問題をすべて修正します。
  • Ruff: Format Document: ドキュメント全体をフォーマットします。
  • Ruff: Organize Imports: インポートを整理します。

3.2 設定のカスタマイズ

Ruffはsettings.jsonで柔軟に設定できます。以下に主要な設定例を紹介します。

基本設定(Python ファイル用)

{
  "[python]": {
    "editor.formatOnSave": true,
    "editor.codeActionsOnSave": {
      "source.fixAll": "explicit",
      "source.organizeImports": "explicit"
    },
    "editor.defaultFormatter": "charliermarsh.ruff"
  }
}

lintルールの調整

Ruffのルールは以下のプレフィックスで分類されています:

  • E, F – 基本的なPythonエラー(pycodestyle, Pyflakes)
  • I – インポート整理(isort互換)
  • UP – Python構文アップグレード
  • B – バグの可能性がある問題(flake8-bugbear)
  • SIM – コード簡素化

推奨される設定例:

{
  "ruff.lint.args": ["--select=E,F,B,I,UP"]
}

これはpyproject.toml/ruff.tomlで以下の設定をすることと同義です。

[tool.ruff.lint]
select = [
    "E",  # pycodestyle
    "F",  # Pyflakes
    "UP", # pyupgrade
    "B",  # flake8-bugbear
    "I",  # isort
]
ignore = ["F401"]  # 未使用インポートを無視

他のツールとの併用

Blackと併用する場合

Ruffでlintを行い、Blackでフォーマットする場合は以下のように書きます。

{
  "[python]": {
    "editor.formatOnSave": true,
    "editor.defaultFormatter": "ms-python.black-formatter",
    "editor.codeActionsOnSave": {
      "source.fixAll.ruff": "explicit"
    }
  }
}

Ruffのインポート整理を無効にして、isort拡張機能を使う場合は以下のように書きます。

{
  "ruff.organizeImports": false,
  "[python]": {
    "editor.codeActionsOnSave": {
      "source.fixAll.ruff": "explicit",
      "source.organizeImports.isort": "explicit"
    }
  }
}

修正の安全性

デフォルトでは、Ruffは安全な修正のみを適用します。以下のように設定すると安全でない修正も適用できます。

{
  "ruff.lint.args": ["--unsafe-fixes"]
}

これらの設定を活用することで、Ruffをより効果的に開発ワークフローに組み込むことができます。

結論

Ruffは、Python開発におけるコードの品質を向上させるための強力なツールです。VSCode内での簡単なセットアップと、直感的な使い方によって、より効率的な開発環境を実現します。特に、自動修正機能やフォーマッティング機能は、開発者にとって大きな助けとなるでしょう。今後のPythonプロジェクトにおいて、是非Ruffを活用してみてください。