uv は、Astral が開発している Python 向けのパッケージ・プロジェクト管理ツールです。 依存のインストールに加えて、仮想環境の作成、Python 本体のバージョン管理、単発スクリプトの実行までを1つのコマンドで扱えます。
「1つで足りる」ことが最大の価値
従来の Python 開発では、役割ごとに別々の道具が必要でした。
| 役割 | 従来 | uv |
|---|---|---|
| パッケージを入れる | pip | uv |
| 環境を分ける | venv | uv |
| 依存をロックする | Poetry など | uv |
| Python 本体を切り替える | pyenv など | uv |
新規プロジェクトで uv が選ばれるのは、覚える道具と壊れる箇所が減るからです。速度が注目されがちですが、実務で効くのはむしろこちらです。
速さの理由と、その効き方
Rust で書かれており、依存解決とインストールが既存ツールより大幅に速く動きます。ただし個人の作業で体感が変わる場面は限られます。効くのは CI です。プッシュのたびに依存を入れ直す環境では、この差がそのままビルド時間に乗ります。
既存プロジェクトへ入れるときの判断
便利でも、チームの手順まで自動で置き換わるわけではありません。判断の順番はこうです。
- 新規プロジェクト → 素直に uv でよい
- requirements.txt だけの既存 → 移行コストは低い
- Poetry で回っていて CI も組んである → 壊す価値があるか見てから
なお PEP 751 が2025年3月に Final となり pylock.toml が共通のロックファイル形式として標準化されたため、ツール間の移動は今後さらにやりやすくなります。「今どれを選ぶか」で一生を決める必要はありません。
(出典:PEP 751)