1
6

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の開発環境を2年ぶりにアップデート【uv+ruffに移行】

Posted at

はじめに

Python ⇒ C/C++ ⇒ System Verilog を経て、約2年ぶりに Python へ戻ってきました。

ということで、自分の知識を更新するために Python の開発環境を2024年版にアップデートします🎉

結論
Poetry から uv に移行、Flake8, Black, isortruff に一本化しました。

新しい開発環境(2024年~)

エディタは、VSCodeを使用する。
パッケージマネージャーは、 uv を使用する。

開発用のツールとしては以下を使用する。

  • ruff:リンター
  • mypy:型ヒントを利用した静的型チェックツール
  • pytest:テストフレームワーク
  • Sphinx:ReStructuredText を使用したドキュメント生成ツール

これまでの開発環境(2022年)

エディタは、VSCodeを使用していました。
パッケージマネージャーは、 Poetry を使用していました。

開発用のツールとしては以下を使用していました。

  • Flake8PyFlakes, pycodestyle, McCabeなどのラッパー
  • Black:すべてが決まっているフォーマッター
  • isort:import 文を自動的に整理・最適化するツール
  • mypy:型ヒントを利用した静的型チェックツール
  • pytest:テストフレームワーク
  • Sphinx:ReStructuredText を使用したドキュメント生成ツール

エディタ

と思いきや、

お金がないので、コーディングにAIを雇うことはまだできないです。
PerplexityDeepL だけで家計の予算をオーバー中。

拡張機能の豊富さとデファクトスタンダードであることから、最適な選択と判断しました。

VSCodeの拡張機能

パッケージマネージャ

image.png

uvの主な特徴

  • 🚀 pip, poetry, pipx などを単一ツールで置き換え
  • ⚡️ pip と比較して 10~100 倍高速
  • 🐍 Python のバージョン管理も可能
  • 🛠️ プロジェクト管理機能が充実

インストール方法

基本的にdevcontainerを使用するため、以下のDockerfileで環境を用意しています。

Dockerfile
FROM python:3.12-slim-bookworm
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/

執筆時点(2024/11/13)では最新リリースが 0.5.1 なので、時期尚早かと思いましたが、使用してみて問題はなかったので採用です!

Poetry から uv に移行した理由は以下です。

  • PEP 621 に準拠しているから
  • 高速に動作するから
  • 同じ Astral 社製の ruff を使用するため

開発支援ツール

image.png

ruffの主な特徴

  • ⚡️ 既存のリンターやフォーマッターより 10~100 倍高速
  • 🛠️ pyproject.tomlをサポート
  • 🔧 800以上の組み込みルール
  • 📦 キャッシュ機能

インストール方法

開発環境にのみインストールするので、--devオプションをつけます。

uv add --dev ruff

Flake8, Black, isortruff に一本化したした理由は以下です。

  • 依存パッケージが減らせるから
  • 既存のリンター、フォーマッターと比較して圧倒的に高速だから
  • 800以上の組み込みルールがあり、かなり網羅しているから
  • 主要なリンターをほぼ含んでいるから

https://docs.astral.sh/ruff/faq/ にFAQがあるので興味がある方はご一読ください。

その他(継続採用)

  • mypy:型ヒントを利用した静的型チェックツール
  • pytest:テストフレームワーク
  • Sphinx:ReStructuredText を使用したドキュメント生成ツール

Python のドキュメント生成ツールとして Sphinx は確固たる地位を築いていますが、MkDocs も選択肢として検討中です。reStructuredText が苦手で Markdown で全部やりたい人は、すでに MkDocs を採用しているでしょう。
MkDocs のプラグインの充実度次第で移行したいなぁと思っています。

おわりに

2年見ないうちに ruff, uv なるものが出てきていて驚きました。浦島太郎状態
進化が速くていいですね!

1
6
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
1
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?