0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python開発】uv × Ruff × Mypy × Black で最強の開発環境を構築する

Posted at

コード品質・整形・型安全をすべて自動化。
しかも「爆速」&「シンプル」。
uv + Ruff + Mypy + Black で、Python開発の生産性を最大化しよう。


🧠 この記事でわかること

  • 「uv」「Ruff」「Black」「Mypy」の役割
  • 各ツールのインストールと設定
  • 実際の開発で使うコマンド例
  • VSCode・pre-commitとの統合方法

⚡️ 1. uvとは?

まず最初に、uv について。
uvは「Ruff」を開発している Astral社製のRust実装Pythonツールチェーンです。

pip, pipx, venv, poetry を全部まとめた、
次世代の超高速ツール

🚀 特徴

項目 内容
速度 pipの10〜20倍。Rust実装で高速依存解決
統合管理 venv・依存管理・ツール管理を1コマンド化
pip互換 既存のプロジェクトとも完全互換
一時実行 uv run で仮想環境を意識せず実行できる
依存の固定 lockファイル生成で再現性が高い

🧰 2. 導入するツール(黄金トリオ)

ツール 主な役割 概要
Ruff Lint(構文・スタイル・import順など) Flake8, isort, pycodestyleなどを統合したLintツール
Black コードフォーマッタ 見た目を完全に統一するフォーマッタ
Mypy 静的型チェック type hintsを解析して型の整合性を検証

⚙️ 3. プロジェクトの初期化とインストール

🔹 プロジェクト作成

uv init my_project
cd my_project

🔹 Ruff / Black / Mypy を導入

uv add ruff black mypy

🔹 依存をロック(再現性を確保)

uv lock

これで .venvpyproject.toml / uv.lock が作成され、
仮想環境と依存関係を自動で管理してくれます。


📁 4. 設定:pyproject.toml

以下の設定を追加して、すべてのツールを一元管理します。

[project]
name = "my_project"
version = "0.1.0"
requires-python = ">=3.11"

[tool.black]
line-length = 88
target-version = ["py311"]

[tool.ruff]
line-length = 88
target-version = "py311"

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

[tool.mypy]
python_version = "3.11"
ignore_missing_imports = true
disallow_untyped_defs = true
warn_return_any = true
strict_optional = true

💻 5. よく使うuvコマンドまとめ(実戦編)

開発中によく使う実行パターンを一覧で紹介します👇

🧩 Lint(構文チェック + 軽微な自動修正)

uv run ruff check . --fix
  • import順や未使用変数、PEP8違反を高速チェック
  • 自動修正できる箇所は即修正

🎨 コード整形(見た目を統一)

uv run black .
  • Blackが自動整形(改行・インデント・括弧位置などを統一)
  • チーム全員がまったく同じフォーマットを共有可能

🧠 型チェック(type hintsの整合性)

uv run mypy .
  • 型ミスや戻り値の不一致を静的解析で検出
  • 実行前にバグの温床を潰せる

⚡️ まとめ実行(ワンライナー)

uv run ruff check . --fix && uv run black . && uv run mypy .

→ 一発で「Lint → 整形 → 型検証」まで完了!
CI/CDでもこの1行を使うだけでOKです。


🧠 6. Ruff + Black + Mypy の役割の違い

目的 担当ツール 説明
コード品質 Ruff 未使用importやPEP8違反などを発見&修正
見た目の統一 Black コード全体の整形を完全自動化
安全性保証 Mypy 型ヒントを利用してバグを事前検出

Ruffは「コードの健康診断」
Blackは「美容整形」
Mypyは「安全検査」

と覚えると分かりやすいです。


🧩 7. VSCode設定例(保存時自動実行)

.vscode/settings.json

{
  "python.defaultInterpreterPath": ".venv/bin/python",
  "editor.formatOnSave": true,
  "python.formatting.provider": "black",
  "ruff.lintOnSave": true,
  "mypy.enabled": true
}

これで「保存するたびに」:

  • Ruffがチェック
  • Blackが整形
  • Mypyが型エラーを通知

完全自動でクリーンな状態を維持できます。


🔄 8. pre-commit連携で自動チェック

.pre-commit-config.yaml

repos:
  - repo: https://github.com/charliermarsh/ruff-pre-commit
    rev: v0.7.0
    hooks:
      - id: ruff
        args: [--fix]

  - repo: https://github.com/psf/black
    rev: 24.10.0
    hooks:
      - id: black

  - repo: https://github.com/pre-commit/mirrors-mypy
    rev: v1.11.2
    hooks:
      - id: mypy

インストール:

uv tool install pre-commit
pre-commit install

git commit 時に自動で Ruff・Black・Mypy を実行。
コミット時の品質漏れを防げます。


⚖️ 9. Ruffだけではダメなの?

確かに、Ruffにも ruff format や簡易型チェック機能があります。
でも現時点(2025年)では以下の理由でBlack / Mypy併用が推奨

機能 Ruff Black / Mypy
コード整形 一部対応(β) 完全対応・安定
型チェック 簡易(Lintレベル) 厳密な静的解析

Ruffは万能ではなく、
「品質」と「スタイル」と「型安全」は分業がベスト。


⚙️ 10. CI/CD 例(GitHub Actions)

name: Code Quality

on: [push, pull_request]

jobs:
  lint-type-format:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: astral-sh/setup-uv@v1
      - run: uv sync
      - run: |
          uv run ruff check . --fix
          uv run black .
          uv run mypy .

🧩 11. 実際の開発ワークフロー

# 1️⃣ コードを書く
vim app/main.py

# 2️⃣ 保存 → RuffがLint、Blackが整形、Mypyが補完チェック

# 3️⃣ 手動で実行するなら
uv run ruff check . --fix
uv run black .
uv run mypy .

# 4️⃣ 問題なければコミット
git add .
git commit -m "✨ clean and type-safe update"

🏁 12. まとめ

目的 ツール コマンド例
品質チェック Ruff uv run ruff check . --fix
コード整形 Black uv run black .
型安全性 Mypy uv run mypy .
一括実行 全部 uv run ruff check . --fix && uv run black . && uv run mypy .

💡 Ruff(品質) × Black(整形) × Mypy(安全)
そしてそれらを統べる uv(速度と統一性)。

これが2025年の “Python開発の黄金トリオ構成” です。


🔗 参考リンク


🧩 Ruffが健康を守り、Blackが美しさを整え、Mypyが安全を保証する。
そして、それらを束ねる「uv」があなたの開発を加速させる。

🚀 今すぐこの構成で、最速でクリーンなPython開発を始めよう。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?