概要
長らくPythonを使ってきましたが、最近の開発環境構築はかなり変わってきているので、変遷を少し追いつつ、現在どのような構成が一番良さそうかというところを最後にまとめられればと思います
本題
開発環境で使ったことがある、聞き覚えのあるもの
最新のものを調査・調べる前にこれまでどのようなものを使って開発されてきたかを確認したいと思います
- パッケージ/バージョン管理
- pip + requirements.txt
- Poetry / Pipenv
- 仮想環境管理
- virtualenv / venv
- リンター / フォーマッター
- Black
- isort
- flake8
- 静的型判定
- mypy
基本的に使ったことがある・聞いたことがあるというものでいうと上の通りかと思います
設定ファイルがそれぞれで異なることもあり、環境統一をルールづけなければ揃った開発環境を作成するのはなかなか難しかったと思います
(どこまでいってもPoetry派、Pipenv派みたいなものがありますよね)
現在はどのような構成が良いらしいのか
ここまで使ったことがあるものと聞いたことがあるものをまとめましたが、現在最適そうな構成についても調べてみました(現在使っています)
| ジャンル | 名称 | 特徴 |
|---|---|---|
| パッケージ / バージョン管理 | uv | Pythonのインストール、ライブラリ管理、仮想環境の作成、スクリプト実行をこれ1つで完結 |
| リンター / フォーマッター | Ruff | 従来の Black / isort / flake8 を1つのツールに統合している |
| 静的型判定 | Ty | mypyなどよりも10倍くらい実行速度がある |
| ユニットテスト | pytest | 豊富なプラグインと簡潔な記法でテストを実装可能 |
大体使いそうなもののまとめとしてはこのような感じかと思われます
共通しているのはパッケージ管理、リンター、静的型判定どれについてもRust製となっているところが特徴的だと思います
Rust自体は速いという特徴を耳にしていましたが、mypyとの比較結果を見ても10倍の性能差があるというのはすごいなと思います
性能が良いものが出たと言っても、〇〇派閥という論争は無くならないかと思いますが
それでも性能が良いものを使える、管理しやすいものを使えるといったメリットがあると統一の意思決定がしやすいのでは?と個人的には思います
インストール方法
ついでなので、Macにインストールする場合をまとめて終わりにしようと思います
Mac
インストール手順
brew install uv
uv tool install ty
コマンドなど
# プロジェクト初期化
uv init
# 開発用ライブラリとして追加
uv add --dev ruff ty pytest
# 実行
uv run ruff check
uv run ty check
おわりに
ということで以上で、Pythonの開発環境の整理をまとめてみました
今後は自分の環境はこれで統一して開発していきたいと思います