こんにちは、Python大好きエンジニアのたなべです!
この記事では、Pythonの開発環境を最新かつ効率的なものにするために、「uv」と「ruff」というツールを使った環境構築方法を紹介します。
Pythonを取り巻く環境は日々進化しています。pipやpoetry、ryeなど、さまざまなパッケージ管理ツールが登場してきましたが、今回紹介する「uv」と「ruff」は、その進化の最前線にいるツールです。
この記事は、Pythonを学び始めた方から、すでにPythonに慣れ親しんでいるエンジニアの方まで、幅広い読者を対象としています。
新しい技術に触れることで、より楽しくて効率的なPython開発環境を体験してみましょう!
ちなみに、YouTubeでも紹介していますので、「動画のほうがいいよ」という方はぜひ↓からご覧ください。
uvとruffの紹介
uv
uvは、Rustで書かれた高速なPythonパッケージ管理・プロジェクト管理ツールです。
主な特徴は以下の通りです。
- パッケージのインストールが従来のツールより10〜100倍高速
- 複数のPythonバージョン管理
- 仮想環境の作成と管理
- プロジェクト依存関係の効率的な管理
uvの登場により、pipやvirtualenv、poetry、ryeなどの既存ツールの機能を、より高速かつ効率的に利用できるようになりました。
ruff
ruffも同じくRustで書かれた高速なPythonコードリンター・フォーマッターです。
特徴としては以下の通りです。
- 従来のツール(flake8, black等)より10〜100倍高速な処理
- 多様なコードスタイルの強制と修正
- Visual Studio Code等のエディタと統合可能
- 豊富なカスタマイズオプション
ruffの「超高速」な処理は、特に大規模なプロジェクトでコードの品質を維持する際に大きな助けとなります。
開発環境の準備
uvとruffをインストールする前に、現在の開発環境を確認しておきましょう。
この記事では、WindowsとMacの両方の環境でのセットアップ方法を紹介します。
Windowsユーザーの方で、WSL2 (Windows Subsystem for Linux 2) を使用していない場合は、WSL2の導入を検討することをおすすめします。
WSL2を使うことで、LinuxベースのPython開発環境をWindows上で快適に利用できます。
まずは、現在のPythonバージョンを確認しておきましょう。
ターミナルで以下のコマンドを実行します。
python -Vこの記事の作成時点では、Python 3.12.6が最新のメジャーバージョンです。
ただし、Pythonは毎年10月に新しいバージョンがリリースされるので、最新バージョンはPythonの公式サイトで確認することをおすすめします。
uvとruffのインストール
Windowsでuvのインストール
WSL2を使用している場合
curl -LsSf https://astral.sh/uv/install.sh | shPowerShellの場合
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"ruffのインストール
uv tool install ruffMacでのインストール
Macでのインストールも非常に簡単です。
curl -LsSf https://astral.sh/uv/install.sh | sh
uv tool install ruffインストール後、 not on yout PATH のように警告が出たら、以下のコマンドでパスを通します。
uv tool update-shellインストールが完了したら、以下のコマンドでバージョンを確認し、正しくインストールされたことを確認しましょう!
uv -V
ruff -Vuvの使い方
まずは、uvの基本的な使い方を見ていきます。
プロジェクトの作成
mkdir uv-sample
cd uv-sample
uv initこれにより、README.md、hello.py、pyproject.tomlというファイルが作成されます。
Pythonバージョンの指定
uv python pin 3.12.6これにより、.python-versionファイルが生成され、プロジェクトで使用するPythonのバージョンが指定されます。
パッケージのインストール
先ほどの uv tool install とは違い、Pythonのuvプロジェクトに依存関係として外部パッケージを追加する場合は uv add を使います。
uv add fastapi # 例としてfastapiを追加する場合スクリプトの実行
uv run python hello.pyuvを使うことで、プロジェクトごとに独立した環境を簡単に作成し、管理することができます。
また、uv syncコマンドを使えば、他の人のプロジェクトの依存関係を簡単に自分の環境に再現することも可能です。( pip install -r requirements.txt のようなもの)
ruffの使い方
続いて、ruffを使ってコードをきれいにする方法を見ていきましょう。
コードのチェック
uv run ruff check 対象のファイル.py自動修正
uv run ruff check --fix 対象のファイル.py例として、以下のようなコードをhello.pyに書いてみましょう。
import os, sys, time
def main():
print("プログラムの時間を計測します...")
current_dir = os.getcwd()
if os.path.exists(current_dir):
print("現在のディレクトリのパス: ", current_dir)
else:
print("ディレクトリが存在しません")
for i in range(5):
time.sleep(1)
if not i == 0:
print(f"{i}秒経過")
if i == 3:
break
if __name__ == "__main__":
main()このコードに対してuv run ruff check hello.pyを実行すると、importの問題と未使用のモジュールについての警告が表示されます。
--fixオプションを使用すると、これらの問題が自動的に修正されることがわかります。
FastAPIの実行例
FastAPIを使って簡単なWebアプリケーションを作成してみましょう。
必要なパッケージのインストール
uv add fastapi uvicornhello.pyの修正
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def index():
return {"Hello": "World"}アプリケーションの実行
uv run uvicorn hello:appブラウザでhttp://localhost:8000にアクセスすると、JSON形式で"Hello World"が表示されます。
Pygameの実行例
次に、Pygameを使って簡単なウィンドウを作成してみましょう。
Pygameのインストール
uv add pygamegame.pyの作成
import pygame
pygame.init()
screen = pygame.display.set_mode((400, 300))
pygame.display.set_caption("Pygameやってみるよ!")
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill("skyblue")
pygame.draw.rect(screen, "white", (20,20,100,40))
pygame.draw.rect(screen, "white", (150,40,190,50))
pygame.display.flip()
pygame.quit()ゲームの実行
uv run python game.pyこれにより、空の水色の画面に白い長方形が表示され、空っぽい画面となります。
Visual Studio Codeの設定
最後に、Visual Studio Codeでruffを使いやすくするための設定を行いましょう。
- ruff拡張機能をインストール
settings.jsonに以下の設定を追加
{
"ruff.lint.enable": true,
"ruff.lint.run": "onSave",
"ruff.importStrategy": "fromEnvironment"
}これにより、ファイルを保存するたびにruffが自動的にコードをチェックし、問題があれば指摘してくれます。
まとめ
uvとruffを使うことで、Pythonの開発環境がより高速かつ効率的になります。
uvはパッケージ管理とプロジェクト管理を、ruffはコードの品質管理を担当し、両者を組み合わせることで開発者体験が大幅に向上します。
特に注目すべき点は、これらのツールの「超高速」な処理速度です。
大規模なプロジェクトや複雑な依存関係を持つプロジェクトでも、ストレスなく開発を進められるようになります。
ただし、これらのツールはまだ発展途上であり、実際のプロダクション環境での使用には慎重な検討が必要かもしれません。
一方で、個人プロジェクトや新規プロジェクトでの採用は、非常に有益な経験になるでしょう。
Pythonの開発環境は日々進化しています。
新しい技術に触れ、自分の開発スタイルに合った最適な環境を見つけていくことが、より楽しくて効率的なプログラミング体験につながります。
ぜひuvとruffを試してみて、あなたのPython開発をより快適なものにしてください!





