Python WebAcademy Blog

uvとは?Rust製の高速Pythonパッケージ管理ツールをpipやPoetryと比べて解説

|

Rustで書かれたPythonのパッケージ管理ツールuvについて、なぜ速いのか、pipやPoetryと何が違うのかをIT初心者向けにやさしく解説します。インストール方法や基本コマンド、1ファイルのスクリプトを配布する使い方、学習中の人が乗り換えるべきかの判断材料まで紹介します。

Pythonを学んでいると、ライブラリのインストールで待たされる場面によく出会います。

pip installと打ってエンターを押し、進捗の表示がじりじり進むのをただ眺める。あの数十秒、なんとなく手持ち無沙汰になりませんか。

その待ち時間をほとんど感じさせないツールが、ここ数年で一気に広まりました。名前をuvといいます。

読み方はそのまま、ユーブイです。pipやPoetryの代わりになるうえに、Python本体のインストールまで面倒を見てくれます。

この記事では、uvが何者なのか、なぜ速いのか、そして学習中のあなたが今から使うべきなのかを、順番にかみくだいて解説していきます。

uvとは何なのか

まずは正体をはっきりさせましょう。uvは、Pythonのパッケージとプロジェクトを管理するためのコマンドラインツールです。

公式のリポジトリでは、Rustで書かれた非常に高速なPythonのパッケージ/プロジェクト管理ツールだと説明されています。開発しているのはAstralという会社です。

この名前に聞き覚えがある方もいるかもしれません。高速なコードチェッカーとして人気のRuffを作ったのと、同じチームです。

【関連記事】Ruff(ラフ)とは?Pythonで綺麗なコードを書く初心者向けにわかりやすく解説

Ruffで見せた速さへのこだわりを、そのままパッケージ管理の世界に持ち込んだのがuvだと考えるとイメージしやすいです。

もうひとつの特徴は、守備範囲の広さにあります。公式は、pip・pip-tools・pipx・poetry・pyenv・twine・virtualenvなどを1本で置き換えるツールだと表現しています。

これまで用途ごとに使い分けていた道具が、uvひとつにまとまるわけです。覚えるコマンドが減るという意味でも、初心者にはうれしい話ではないでしょうか。

開発のペースもかなり速く、2026年7月28日にはバージョン0.12.0が公開されました。数日おきに更新が出るほど活発なプロジェクトです。

なぜuvはそんなに速いのか

速い速いと言われても、理由がわからないと納得しづらいですよね。ここは仕組みの話を少しだけします。

理由は大きく分けて2つあります。ひとつは書かれている言語、もうひとつは仕事の進め方の工夫です。

実行される言語そのものが違う

pip自体は、実はPythonで書かれたプログラムです。つまりPythonの上でPythonが動いて、その上でインストール作業をしています。

対してuvはRustで書かれ、コンパイル済みのプログラムとして配られます。処理が最初から機械語に近い形で走るので、同じ作業でも土台の速度が違います。

公式はこの差を、pipと比べて10〜100倍速いという言い方で表現しています。もちろん環境や条件によって幅はありますが、体感でもはっきり違いがわかるレベルです。

依存関係の解き方とキャッシュがうまい

ライブラリを入れるとき、裏側では意外と複雑な計算が走っています。あるライブラリが別のライブラリを必要とし、そのバージョンの組み合わせに矛盾がないかを調べる作業です。

これを依存関係の解決と呼びます。uvはこの計算を効率よく行い、ダウンロードも並行して進めます。

さらに効くのがキャッシュの使い方です。uvはパソコン全体で共有するキャッシュを持っていて、一度取得したライブラリの実体を複数のプロジェクトで使い回します。

同じライブラリを5つのプロジェクトで使っても、ディスク上の実体はひとつで済むということです。ダウンロードも展開も省けるので、2回目以降が劇的に速くなります。

私は10年ほどエンジニアとして開発に関わってきましたが、自動テストの実行時間の大半が依存ライブラリのインストールだった、という現場を何度も見てきました。テスト本体は30秒なのに、その準備に3分かかるのです。ここが数秒で終わるようになるインパクトは、想像以上に大きいものでした。

pipやPoetryと何が違うのか

似たようなツールがいくつもあって混乱しやすいところなので、代表的な3つを並べて整理します。

観点 pip + venv Poetry uv
おもな役割 ライブラリの導入 プロジェクト全体の管理 管理+Python本体まで
書かれている言語 Python Python Rust
仮想環境の用意 venvで別途つくる 自動でつくる 自動でつくる
ロックファイル 標準では作らない poetry.lock uv.lock
Python本体の導入 できない できない できる
設定ファイル requirements.txt pyproject.toml pyproject.toml

ロックファイルという言葉が出てきました。これは、実際に入れたライブラリのバージョンを1つ残らず記録しておくファイルのことです。

これがあると、別のパソコンでもまったく同じ環境を再現できます。動かないという相談の原因が、実はバージョン違いだったというのはよくある話です。

uvが作るuv.lockは、OSやPythonのバージョンをまたいで使える形式になっているのが特徴です。WindowsとMacが混ざったチームでも、同じ1ファイルを共有できます。

pipやPoetryそのものの使い方は、以下の記事でくわしく解説しています。

【関連記事】Pythonのpipとは?Pythonのライブラリを管理するコマンド

【関連記事】Poetryとは?pipとの違いと使い方をやさしく解説

uvを実際に使ってみる

理屈がわかったところで、手を動かしてみましょう。導入はとても簡単です。

インストールする

uvはPythonがなくても入ります。Rustで作られた単体のプログラムなので、Python環境とは切り離してインストールできるためです。

MacやLinuxなら、ターミナルで次のコマンドを実行します。

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

Windowsの場合はPowerShellから入れます。

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

すでにPythonが入っている方なら、pipから入れる方法もあります。まずはこれが手軽かもしれません。

pip install uv

入ったかどうかは、バージョンを表示させれば確認できます。

uv --version

プロジェクトを作って動かす

uvの気持ちよさは、プロジェクトを作るところから始まります。まずは新しいプロジェクトを用意しましょう。

uv init myapp
cd myapp
uv add requests
uv run main.py

この4行で何が起きたのかを説明します。uv initがプロジェクトの雛形とpyproject.tomlを作り、uv addがrequestsを追加してuv.lockに記録しました。

そしてuv runが、仮想環境をその場で用意したうえでスクリプトを実行します。仮想環境を作るコマンドも、有効化するコマンドも打っていない点に注目してください。

仮想環境の有効化を忘れて、うっかりパソコン全体にライブラリを入れてしまった経験はありませんか。uvはそこを自動でやってくれるので、この事故が起きません。

【関連記事】Pythonの仮想環境(venv)って何のためにある?プロジェクトごとに混ぜない管理法

よく使うコマンドを表にまとめておきます。最初はこれだけ覚えれば十分です。

コマンド 何をするか
uv init 新しいプロジェクトを作る
uv add requests ライブラリを追加してlockに記録する
uv remove requests ライブラリを取り除く
uv run main.py 環境を整えてから実行する
uv sync lockのとおりに環境をそろえる
uv python install 3.13 Python本体を入れる
uvx ruff check 入れずにツールを実行する

pipに慣れている方向けの逃げ道も用意されています。uv pip installと書けば、pipとほぼ同じ感覚で使えます。

1ファイルのスクリプトが、そのまま配れるようになる

ここからがuvのおもしろいところです。ちょっとした便利スクリプトを人に渡したいとき、困ったことはないでしょうか。

このファイルを動かすにはrequestsを入れてください、と口頭で伝えるあれです。受け取った側は環境を作るところから始めることになり、地味に面倒です。

その悩みを解決するのが、PEP 723というPythonの仕様です。スクリプトの先頭にコメントの形で必要なライブラリを書いておける、という決まりごとになっています。

実際に書いてみると、こんな見た目になります。

# /// script
# requires-python = ">=3.11"
# dependencies = [
#     "requests",
# ]
# ///

import requests

response = requests.get("https://api.github.com/repos/astral-sh/uv")
data = response.json()

print(f"リポジトリ名: {data['full_name']}")
print(f"スター数: {data['stargazers_count']}")

先頭のコメント部分が目印です。requires-pythonで必要なPythonのバージョンを、dependenciesで必要なライブラリを宣言しています。

このファイルを保存したら、あとは次のコマンドを打つだけです。

uv run check_stars.py

uvがコメントを読み取り、必要なPythonとrequestsを用意し、その場限りの環境で実行してくれます。受け取った人は事前準備を何もしなくていいわけです。

社内向けのちょっとしたツールを配るとき、この形式は本当に助かります。動かない、という問い合わせが目に見えて減りました。

Pythonのバージョン管理まで任せられる

uvの守備範囲は、ライブラリだけにとどまりません。Python本体の導入と切り替えもできます。

これまでこの役割はpyenvなどが担ってきました。学習中に別のバージョンが必要になって、慌てて調べた方もいるのではないでしょうか。

【関連記事】pyenvの使い方をわかりやすく解説!Pythonのバージョンを変える

uvなら、次の1行でPython本体が手に入ります。

uv python install 3.13

さらに便利なのが、プロジェクト側で必要なバージョンを宣言しておく使い方です。pyproject.tomlにrequires-pythonを書いておけば、uv runの時点で条件に合うPythonを自動で選んでくれます。

入っていなければ、その場で取ってきて使ってくれます。バージョンの違いで動かない、という初心者がつまずきやすいポイントが、まるごと消えるわけです。

実務で使うときに気をつけたいこと

ここまで良いことばかり書いてきましたが、注意点にも触れておきます。使う前に知っておくと安心です。

いちばん大事なのは、uvがまだバージョン1.0に達していないという事実です。2026年7月末の時点で0.12.0であり、開発の途中段階にあたります。

0から始まるバージョンは、仕様がまだ変わりうるという合図です。実際に0.12.0では、uv initで作るプロジェクトの初期設定が見直されています。

私自身、まだ0.x台だったツールをチームに導入して痛い目を見たことがあります。メンバーごとに入れた時期が違い、少し古いバージョンの人だけ挙動が変わってしまったのです。原因の切り分けに半日かかりました。

チームで使うなら、uvのバージョン自体も合わせておくのが安全です。CIの設定ファイルなどに使うバージョンを書いておけば、この手の食い違いは防げます。

もうひとつ、pyproject.tomlという設定ファイルの中身は理解しておきたいところです。uvが自動で書いてくれるとはいえ、読めないままだと細かい調整ができません。

学習中の人はuvに乗り換えるべき?

さて、いちばん気になる話です。今まさにPythonを勉強しているなら、どうするのがよいのでしょうか。

私の考えは、まずpipとvenvで基本を体験してから、uvへ移るのがおすすめというものです。理由は単純で、uvは便利すぎるからです。

仮想環境を自動で作ってくれるということは、仮想環境が何なのかを知らないまま先へ進めてしまうということでもあります。トラブルが起きたときに、どこを見ればいいのかがわからなくなります。

一度でいいので、venvで環境を作り、有効化し、pip installでライブラリを入れる流れを自分の手でなぞってみてください。裏側の仕組みが腹落ちします。

そのうえでuvに移れば、何が自動化されたのかがはっきり見えます。ありがたみも段違いです。

学習の段階ごとの目安を、表にまとめておきます。

段階 おすすめの道具 理由
文法を学んでいる 標準のPythonだけ 環境の話は後回しでよい
ライブラリを使い始めた pip + venv 仕組みを手で覚える
自分の作品を作り始めた uv 速さと再現性の恩恵が大きい
チーム開発に参加した チームの方針に合わせる 統一されていることが最優先

最後の行が案外重要です。ひとりで開発するなら好きな道具を選べますが、チームでは道具がそろっていることのほうが価値を持ちます。

まとめ

uvについて、ここまで見てきた内容を振り返ります。

uvはRustで書かれた高速なパッケージ管理ツールで、pipやPoetry、pyenvの役割をまとめて引き受けてくれます。仮想環境の用意もPython本体の導入も自動で、PEP 723に対応したスクリプトなら1コマンドで実行できます。

一方でまだ0.x系という若いツールでもあるため、チームで使うならバージョンをそろえる配慮が要ります。学習中の方は、pipとvenvで基本を押さえてから移るのが遠回りに見えて近道です。

道具が速くなると、試す回数が増えます。試す回数が増えると、上達も速くなります。

待ち時間が減ることの本当の価値は、そこにあるのかもしれません。気になった方は、ぜひ一度uvを触ってみてください。

ここまでお読みいただきありがとうございました。

参考情報

次のアクション

記事で学んだ内容を実際に動かしてみよう

Python WebAcademyでは、ブラウザ上でコードを書きながら基礎から実践まで体系的に学べます。

Python WebAcademyの学習画面

あわせて読む

関連記事

ブログ一覧へ

Python学習ロードマップ

まずはこの3講座から

記事で気になったテーマを、順番に手を動かしながら学べます。

ロードマップを見る