Pythonの開発環境構築って、地味にストレスが溜まりませんか? pipでパッケージを入れて、venvで仮想環境を作って、pyenvでバージョンを切り替えて……。ツールが分散していて、どれが何の役割なのかわかりにくいと感じたことがある方も多いのではないでしょうか。

そんな状況を一変させるかもしれないのが、uvというツールです。Rust言語で書かれた超高速のPythonパッケージマネージャーで、pip・venv・pyenvの機能を一つにまとめた「オールインワン」な存在として急速に普及が進んでいます。

uvとは何か

uvは、Astral社が開発しているRust製のPythonパッケージマネージャーです。もともとRuff(超高速Pythonリンター)を作ったチームが手がけていて、「Pythonのツールチェインを根本から速くする」という思想で設計されています。

一言でいうと、pip + venv + pyenv + pip-tools + poetry の機能を一つのバイナリに詰め込んだツールですね。しかも、それぞれの機能が既存ツールの10〜100倍速いという、かなりインパクトのあるプロジェクトです。

uvが速い理由

uvの圧倒的な速度の秘密は、いくつかの技術的な工夫にあります。

Rustによるネイティブ実装

pipはPythonで書かれているため、Python自体の起動やインタープリタのオーバーヘッドがあります。uvはRustでネイティブコンパイルされた単一バイナリなので、起動時間がほぼゼロです。これだけでも体感速度がかなり変わります。

並列ダウンロードと依存関係解決

pipが基本的にパッケージを順番にダウンロード・インストールするのに対し、uvは依存関係の解決とダウンロードを並列で行います。特に依存パッケージが多いプロジェクトでは、この差が顕著に出ますね。

グローバルキャッシュ

一度ダウンロードしたパッケージはグローバルキャッシュに保存され、別のプロジェクトでも再利用されます。同じパッケージを何度もダウンロードする無駄がなくなるので、2回目以降のインストールは驚くほど速くなります。

uvの基本的な使い方

uvの導入と基本操作を見ていきましょう。インストールはワンライナーで完了します。

curl -LsSf https://astral.sh/uv/install.sh | sh

プロジェクトの初期化

新しいPythonプロジェクトを始める時は、uv initを使います。

uv init my-project
cd my-project

これでpyproject.tomlが生成されて、プロジェクトの設定が整います。仮想環境も自動で作成されるので、手動でpython -m venvを実行する必要がありません。

パッケージの追加

uv add requests flask numpy

パッケージの追加はuv addで行います。依存関係がpyproject.tomlに記録され、ロックファイル(uv.lock)も自動で更新されます。

Pythonバージョンの管理

pyenvの代わりに、uvでPythonのバージョンも管理できます。

uv python install 3.12
uv python pin 3.12

複数のPythonバージョンを切り替えながら開発する場面でも、uvだけで完結するのは楽ですね。

スクリプトの実行

uv run python main.py
uv run pytest

uv runを使えば、仮想環境のアクティベートを意識せずにスクリプトを実行できます。裏側で自動的に正しい環境が使われるので、source .venv/bin/activateを忘れて「モジュールが見つからない」と悩むことがなくなります。

pipからの移行のしやすさ

既存のpipユーザーにとって嬉しいのが、uvはpip互換のインターフェースも提供しているという点です。

uv pip install requests
uv pip freeze
uv pip install -r requirements.txt

既存のrequirements.txtをそのまま使えるので、段階的に移行できます。いきなり全部切り替えるのが不安な方でも、まずはuv pipから始めてみるのが良いかもしれません。

uvとpoetryの違い

Pythonのパッケージ管理ツールとしてはpoetryも有名ですが、uvとの大きな違いは速度とスコープです。

poetryは依存関係の解決が遅いことで知られていて、大規模プロジェクトでは数分かかることもあります。uvなら同じ処理が数秒で終わるケースが多いです。また、poetryにはPythonバージョン管理の機能がないので、pyenvとの併用が必要になります。uvはその点も一つでカバーしているのが強みですね。

一方で、poetryはパッケージの公開(PyPIへのアップロード)機能が充実しているので、ライブラリ開発者にとってはpoetryの方が便利な場面もまだありそうです。

CI/CDでの活用

uvの速度はCI/CDパイプラインでも大きなメリットになります。GitHub Copilot AgentのようなAIツールと組み合わせた開発フローでも、依存パッケージのインストール時間が短縮されることで全体のフィードバックループが速くなります。

GitHub Actionsでの利用も簡単で、公式のsetup-uvアクションが提供されています。キャッシュとの相性も良く、2回目以降のビルドが劇的に速くなるのを実感できるはずです。

コミュニティの反応と普及状況

uvは2024年の公開以来、Python開発者コミュニティで急速に支持を集めています。GitHubスターは急増を続けていて、多くのOSSプロジェクトが開発環境をuvに移行しています。

Rustで書かれたPythonツールという点では、リンターのRuffと同じ流れですね。「Pythonのエコシステムの遅い部分をRustで高速化する」というAstral社のビジョンが、着実に実を結んでいる印象を受けます。

まとめ

uvは、Pythonの開発体験を根本から変える可能性を持ったツールだと感じました。pip + venv + pyenvの機能を一つにまとめ、しかも10〜100倍速いというのは、一度体験すると元に戻れなくなります。

特に、複数のプロジェクトを並行して開発している方や、CI/CDの高速化を求めている方には強くおすすめできます。まだ試していない方は、既存のプロジェクトでuv pip install -r requirements.txtを一回実行してみてください。速度の違いを体感できるはずです。