はじめに
Python ⇒ C/C++ ⇒ System Verilog を経て、約2年ぶりに Python へ戻ってきました。
ということで、自分の知識を更新するために Python の開発環境を2024年版にアップデートします🎉
結論
Poetry
から uv
に移行、Flake8
, Black
, isort
を ruff
に一本化しました。
新しい開発環境(2024年~)
エディタは、VSCodeを使用する。
パッケージマネージャーは、 uv を使用する。
開発用のツールとしては以下を使用する。
これまでの開発環境(2022年)
エディタは、VSCodeを使用していました。
パッケージマネージャーは、 Poetry を使用していました。
開発用のツールとしては以下を使用していました。
-
Flake8:
PyFlakes
,pycodestyle
,McCabe
などのラッパー - Black:すべてが決まっているフォーマッター
- isort:import 文を自動的に整理・最適化するツール
- mypy:型ヒントを利用した静的型チェックツール
- pytest:テストフレームワーク
- Sphinx:ReStructuredText を使用したドキュメント生成ツール
エディタ
と思いきや、
お金がないので、コーディングにAIを雇うことはまだできないです。
Perplexity と DeepL だけで家計の予算をオーバー中。
拡張機能の豊富さとデファクトスタンダードであることから、最適な選択と判断しました。
VSCodeの拡張機能
パッケージマネージャ
uvの主な特徴
- 🚀
pip
,poetry
,pipx
などを単一ツールで置き換え - ⚡️
pip
と比較して 10~100 倍高速 - 🐍 Python のバージョン管理も可能
- 🛠️ プロジェクト管理機能が充実
インストール方法
基本的にdevcontainerを使用するため、以下の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
を使用するため
開発支援ツール
ruffの主な特徴
- ⚡️ 既存のリンターやフォーマッターより 10~100 倍高速
- 🛠️ pyproject.tomlをサポート
- 🔧 800以上の組み込みルール
- 📦 キャッシュ機能
インストール方法
開発環境にのみインストールするので、--dev
オプションをつけます。
uv add --dev ruff
Flake8
, Black
, isort
を ruff
に一本化したした理由は以下です。
- 依存パッケージが減らせるから
- 既存のリンター、フォーマッターと比較して圧倒的に高速だから
- 800以上の組み込みルールがあり、かなり網羅しているから
- 主要なリンターをほぼ含んでいるから
https://docs.astral.sh/ruff/faq/ にFAQがあるので興味がある方はご一読ください。
その他(継続採用)
おわりに
2年見ないうちに ruff
, uv
なるものが出てきていて驚きました。浦島太郎状態
進化が速くていいですね!