【Python】Ruffでコードのリント・整形を自動化する方法

当ページのリンクには広告が含まれています。
いずみ

こんな悩みを解決できる記事を書きました!

僕は現役フリーランスエンジニア(歴年)で、資格は個保有しています。

PythonのコードをRuffでリントし、整形まで自動化する方法を知りたい」とお考えではありませんか?

Flake8やBlack、isortを個別に入れて、設定がバラバラになって管理が面倒だと感じている方へ。

RuffはRust製のツールで、リントと整形を1つのコマンド体系にまとめられるのが特徴です。

いずみ

一度セットアップすれば保存時やコミット時に自動で走るので、あとは書くことに集中できます。

ということで、本記事ではPythonのコードをRuffでリント・整形して自動化する方法を解説します。

いずみ

すぐ読み終わるので、ぜひ最後まで読んでくださいませ。

スクロールできます
【当サイト】おすすめフリーランスエージェント3選
エージェント評価ポイント公式サイト
レバテックフリーランス

5.0
業界最大級のエージェント。
高単価案件が豊富。
公式
Midworks

4.8
満足度調査で
3年連続3冠を達成。
公式
ITプロパートナーズ

4.6
週2〜3向けの案件が豊富。公式
執筆者/監修者
  • フリーランスエンジニア(保有資格個、企業と直接契約
  • ブログ・アフィリエイト歴7年(2018年〜)
  • ブランドせどりで月利50万円⇨脱サラ
  • 投資(仮想通貨・FX)歴7年(2018年〜)
  • X(旧Twitter)フォロワー約1,900人
  • 運営者情報はこちら
いずみです
目次

【Python】Ruffでコードのリント・整形を自動化する

早速ですが、PythonのコードをRuffでリント・整形して自動化する手順を解説します。

Ruffとは何か

RuffはRust製のPython向けリンター兼フォーマッターです。

Flake8・Black・isort・pyupgradeなど、複数のツールが担っていた役割を1つに統合しています。

実行速度が非常に速く、大規模なコードベースでも待ち時間がほとんど発生しません。

導入するツールが1つで済むため、設定もpyproject.tomlへ集約できます。

いずみ

僕はFlake8とBlackを別々に入れていた頃の設定衝突から解放されました。

Ruffをインストールする

まずはRuffをインストールします。

STEP
uvかpipでインストールする

開発用の依存としてインストールします。

# uvを使う場合(開発用の依存として追加)
uv add --dev ruff

# pipを使う場合
pip install ruff
STEP
動作を確認する

ruff versionでインストール結果を確認します。

ruff version
いずみ

バージョンが表示されれば準備完了です。

基本の3コマンドを覚える

Ruffの操作は、コマンドを3つ覚えれば日常的な作業がまかなえます。

# リントだけ実行して違反を一覧表示する
ruff check .

# 自動修正できる違反をまとめて直す
ruff check --fix .

# Black互換のスタイルで整形する
ruff format .

# 整形による差分だけ先に確認する
ruff format --diff .

ruff checkはリントのみを行い、違反箇所とルールコードを一覧表示します。

ruff check –fixは、自動修正できる違反をその都度書き換えます。

ruff formatはBlack互換のスタイルでコードを整形します。

リント修正がimport行を削除したり文を1行にまとめたりするため、ruff check –fixを先、ruff formatを後に実行する順番が推奨されています。

いずみ

迷ったら「check –fixしてからformat」と覚えておけば大丈夫です。

pyproject.tomlで挙動を設定する

Ruffの設定は、pyproject.tomlの[tool.ruff]セクションにまとめます。

[tool.ruff]
line-length = 88
target-version = "py312"
exclude = ["migrations", ".venv"]

[tool.ruff.lint]
select = ["E", "F", "I", "UP", "B"]
ignore = ["E501"]

[tool.ruff.lint.per-file-ignores]
"__init__.py" = ["F401"]

[tool.ruff.format]
quote-style = "double"
indent-style = "space"

line-lengthは1行の最大文字数で、デフォルトは88です。

target-versionを指定すると、指定したPythonバージョンに合わせた書き換え提案が有効になります。

[tool.ruff.lint]のselectで、有効にするルールセットを選びます。

EとFはpycodestyleとpyflakes由来の基本ルール、Iはimportの並び替え、UPはpyupgrade相当、Bはバグを生みやすい書き方の検出です。

per-file-ignoresを使うと、特定のファイルだけ一部のルールを除外できます。

いずみ

最初はselectをEとFとIくらいから始めて、慣れたら少しずつ増やすのがおすすめです。

pre-commitでコミット前に自動実行する

コミットのたびにRuffを走らせるには、pre-commitフレームワークを使います。

STEP
設定ファイルを作成する

リポジトリ直下に.pre-commit-config.yamlを作成します。

repos:
  - repo: https://github.com/astral-sh/ruff-pre-commit
    rev: v0.14.0  # 最新のリリースタグを指定する
    hooks:
      - id: ruff-check
        args: [--fix]
      - id: ruff-format

revには必ず最新のリリースタグを固定で指定します。

ruff-checkをruff-formatより前に置くと、修正後のコードが整形される順番になります。

STEP
Gitフックに登録する
# pre-commit本体を追加する
uv add --dev pre-commit

# Gitフックを登録する
pre-commit install

# 全ファイルに対して手動で走らせる
pre-commit run --all-files
いずみ

登録後はコミット時に自動で走り、違反があるとコミットが止まります。

GitHub ActionsでCIに組み込む

プルリクエストごとにチェックしたい場合は、GitHub Actionsを使います。

Astralが公式のruff-actionを配布しているため、数行で導入できます。

name: Ruff

on: [push, pull_request]

jobs:
  ruff:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: astral-sh/ruff-action@v3
        with:
          args: check --output-format=github
      - uses: astral-sh/ruff-action@v3
        with:
          args: format --check

–output-format=githubを付けると、違反箇所がプルリクエストの差分にアノテーション表示されます。

format –checkは、整形が必要なファイルがあるとCIを失敗させ、コード自体は書き換えません。

いずみ

ローカルのpre-commitとCIの両方に入れておくと、チェック漏れがなくなります。

VS Codeで保存時に整形する

エディタ側でもRuffを動かすと、保存するだけで整形とimport整理が完了します。

拡張機能「Ruff」(charliermarsh.ruff)をインストールします。

settings.jsonに次の設定を追加します。

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

formatOnSaveで保存時の整形、codeActionsOnSaveで自動修正とimport整理が走ります。

いずみ

保存するたびに整うので、pre-commitで弾かれる回数がぐっと減ります。

スクロールできます
【当サイト】おすすめフリーランスエージェント3選
エージェント評価ポイント公式サイト
レバテックフリーランス

5.0
業界最大級のエージェント。
高単価案件が豊富。
公式
Midworks

4.8
満足度調査で
3年連続3冠を達成。
公式
ITプロパートナーズ

4.6
週2〜3向けの案件が豊富。公式

【厳選】フリーランスエンジニアにおすすめなエージェント3選

フリーランスエンジニアになるにはエージェントから案件をもらう必要があります。

僕が実際に利用しているおすすめエージェントを紹介しますね。

いずみ

エージェントは必ず複数登録してください。

担当者によっては「全然案件紹介してくれない…」みたいなこともあるので…

僕は実際に5つのエージェントを使い回していますよ。

フリーランスを始めるなら「

案件数マージン率単価
約88,000件非公開
初心者福利厚生申し込み
無料
Good Point
  • 業界最大級の案件数。
  • 業界トップクラスの高単価報酬、低マージン(平均年収862万円)。
  • 案件参画中のフォローの充実。

※詳細は「【業界最大手】レバテックフリーランスとは?メリットや利用手順を解説!」を参照。

は業界最大手のフリーランスエージェントです。

とにかく案件数が多いので、とりあえず登録しておけば間違いないエージェントです!

いずみ

僕もはじめてフリーランスの案件を貰ったのはです。

保有している案件数が多いので、業務経験がなくても何かしらの案件は紹介してもらえますよ(僕はJavaの経験3年でも案件を貰えました)。

手厚い保障を重視したいなら「

案件数マージン率単価
約10,000件非公開
初心者福利厚生申し込み
無料
Good Point
  • 手厚い保障で正社員並みの安心感。
  • 還元率60%超え&単価公開でクリアな契約。
  • 給与保障制度(審査あり)。

は手厚い保障が特徴のフリーランスエージェントです。

フリーランスを目指しているけど不安な方や保障を重視したい方におすすめです。

いずみ

僕も何度か案件を紹介してもらいました。

自分のスキルに合った案件を紹介してもらえましたし、電話のやり取りも非常に丁寧でした。

週2〜3日の案件探しなら「

案件数マージン率単価
約5,000件非公開
初心者福利厚生申し込み
経験者向け無料
Good Point
  • IT案件に特化したフリーランスエージェント。
  • 週2〜3日の案件が豊富。
  • リモート案件が多く、直エンドなので単価も高い。

※詳細は「【週2・3案件】ITプロパートナーズとは?メリットや利用手順を解説!」を参照。

はIT案件に特化したフリーランスエージェントです。

週2〜3日から参画できる案件が豊富なので、起業したい人にもおすすめです。

いずみ

週2〜3日の案件はある程度スキルがないと紹介してもらえない印象です。

とはいえ、週5の案件ももちろんありますし、僕が利用した時は迅速・丁寧に対応していただきました!

よくある質問

BlackやFlake8から乗り換えるべきですか?

Ruffはリント・整形・import整理をまとめて担えるため、導入するツールの数を減らせます。

整形結果はBlackとほぼ互換なので、差分を確認しながら段階的に移行できます。

ruff checkとruff formatはどちらを先に実行すべきですか?

ruff check –fixを先、ruff formatを後に実行します。

リント修正がコードの並びを変えることがあり、最後に整形をかけると仕上がりが安定します。

既存プロジェクトに入れたら大量の警告が出ました。

selectを最小限にして、ruff check –fixとruff formatで機械的に直せる分をまず処理します。

残った警告はper-file-ignoresやnoqaコメントで一時的に抑制し、少しずつ解消します。

まとめ

今回は、PythonのコードをRuffでリント・整形して自動化する方法について解説しました。

以下が本記事のまとめになります。

まとめ
  • RuffはRust製で、Flake8・Black・isortの役割を1つにまとめられる。
  • 日常の操作はruff check –fixとruff formatの2コマンドで足りる。
  • 設定はpyproject.tomlの[tool.ruff]に集約できる。
  • pre-commitとGitHub Actions、VS Codeに組み込めばリントと整形が自動で回る。
まとめ
  • おすすめ本
¥2,970 (2023/07/25 22:48時点 | Amazon調べ)

Pythonの勉強なら「」が体系的に学べるのでおすすめですよ♪

いずみ

最後までお読みいただき、ありがとうございました!

スクロールできます
【当サイト】おすすめフリーランスエージェント3選
エージェント評価ポイント公式サイト
レバテックフリーランス

5.0
業界最大級のエージェント。
高単価案件が豊富。
公式
Midworks

4.8
満足度調査で
3年連続3冠を達成。
公式
ITプロパートナーズ

4.6
週2〜3向けの案件が豊富。公式
  • クソおすすめ本
¥4,480 (2024/06/01 23:28時点 | Amazon調べ)
いずみ

海外のエンジニアがどういった思考で働いているかが理解できます。

海外に行く気はないけど海外エンジニアの動向が気になる雑魚エンジニアにおすすめです(本当におすすめな本しか紹介しないのでご安心を)。

この記事が気に入ったら
フォローしてね!

シェアしてね!
  • URLをコピーしました!
目次