いずみこんな悩みを解決できる記事を書きました!
僕は現役フリーランスエンジニア(歴10年)で、資格は13個保有しています。
「PythonのコードをRuffでリントし、整形まで自動化する方法を知りたい」とお考えではありませんか?
Flake8やBlack、isortを個別に入れて、設定がバラバラになって管理が面倒だと感じている方へ。
RuffはRust製のツールで、リントと整形を1つのコマンド体系にまとめられるのが特徴です。



一度セットアップすれば保存時やコミット時に自動で走るので、あとは書くことに集中できます。
ということで、本記事ではPythonのコードをRuffでリント・整形して自動化する方法を解説します。



すぐ読み終わるので、ぜひ最後まで読んでくださいませ。
| 【当サイト】おすすめフリーランスエージェント3選 | |||
|---|---|---|---|
| エージェント | 評価 | ポイント | 公式サイト |
レバテックフリーランス | 5.0 | 業界最大級のエージェント。 高単価案件が豊富。 | 公式 |
Midworks | 4.8 | 満足度調査で 3年連続3冠を達成。 | 公式 |
ITプロパートナーズ | 4.6 | 週2〜3向けの案件が豊富。 | 公式 |
【Python】Ruffでコードのリント・整形を自動化する
早速ですが、PythonのコードをRuffでリント・整形して自動化する手順を解説します。
Ruffとは何か
RuffはRust製のPython向けリンター兼フォーマッターです。
Flake8・Black・isort・pyupgradeなど、複数のツールが担っていた役割を1つに統合しています。
実行速度が非常に速く、大規模なコードベースでも待ち時間がほとんど発生しません。
導入するツールが1つで済むため、設定もpyproject.tomlへ集約できます。



僕はFlake8とBlackを別々に入れていた頃の設定衝突から解放されました。
Ruffをインストールする
まずはRuffをインストールします。
開発用の依存としてインストールします。
# uvを使う場合(開発用の依存として追加)
uv add --dev ruff
# pipを使う場合
pip install ruffruff 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フレームワークを使います。
リポジトリ直下に.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-formatrevには必ず最新のリリースタグを固定で指定します。
ruff-checkをruff-formatより前に置くと、修正後のコードが整形される順番になります。
# 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つのエージェントを使い回していますよ。
フリーランスを始めるなら「レバテックフリーランス


」
- 業界最大級の案件数。
- 業界トップクラスの高単価報酬、低マージン(平均年収862万円)。
- 案件参画中のフォローの充実。
※詳細は「【業界最大手】レバテックフリーランスとは?メリットや利用手順を解説!」を参照。
レバテックフリーランス
![]()
![]()
とにかく案件数が多いので、とりあえず登録しておけば間違いないエージェントです!



僕もはじめてフリーランスの案件を貰ったのはレバテックフリーランス
![]()
![]()
保有している案件数が多いので、業務経験がなくても何かしらの案件は紹介してもらえますよ(僕はJavaの経験3年でも案件を貰えました)。
手厚い保障を重視したいなら「Midworks


」
- 手厚い保障で正社員並みの安心感。
- 還元率60%超え&単価公開でクリアな契約。
- 給与保障制度(審査あり)。
Midworks
![]()
![]()
フリーランスを目指しているけど不安な方や保障を重視したい方におすすめです。



僕も何度か案件を紹介してもらいました。
自分のスキルに合った案件を紹介してもらえましたし、電話のやり取りも非常に丁寧でした。
週2〜3日の案件探しなら「ITプロパートナーズ


」
- 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でリント・整形して自動化する方法について解説しました。
以下が本記事のまとめになります。
- おすすめ本
Pythonの勉強なら「独習Python



最後までお読みいただき、ありがとうございました!
| 【当サイト】おすすめフリーランスエージェント3選 | |||
|---|---|---|---|
| エージェント | 評価 | ポイント | 公式サイト |
レバテックフリーランス | 5.0 | 業界最大級のエージェント。 高単価案件が豊富。 | 公式 |
Midworks | 4.8 | 満足度調査で 3年連続3冠を達成。 | 公式 |
ITプロパートナーズ | 4.6 | 週2〜3向けの案件が豊富。 | 公式 |
- クソおすすめ本



海外のエンジニアがどういった思考で働いているかが理解できます。
海外に行く気はないけど海外エンジニアの動向が気になる雑魚エンジニアにおすすめです(本当におすすめな本しか紹介しないのでご安心を)。









