フリーキーズ | 独学プログラミング

イマドキのPython開発環境を求めてuv/ruffをインストールするチュートリアル

【画像】イマドキのPython開発環境を求めてuv/ruffをインストールするチュートリアル

こんにちは、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 | sh

PowerShellの場合

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

ruffのインストール

uv tool install ruff

Macでのインストール

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 -V

uvの使い方

まずは、uvの基本的な使い方を見ていきます。

プロジェクトの作成

mkdir uv-sample
cd uv-sample
uv init

これにより、README.mdhello.pypyproject.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.py

uvを使うことで、プロジェクトごとに独立した環境を簡単に作成し、管理することができます。
また、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 uvicorn

hello.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 pygame

game.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を使いやすくするための設定を行いましょう。

  1. ruff拡張機能をインストール
  2. settings.jsonに以下の設定を追加
{
    "ruff.lint.enable": true,
    "ruff.lint.run": "onSave",
    "ruff.importStrategy": "fromEnvironment"
}

これにより、ファイルを保存するたびにruffが自動的にコードをチェックし、問題があれば指摘してくれます。

まとめ

uvとruffを使うことで、Pythonの開発環境がより高速かつ効率的になります。
uvはパッケージ管理とプロジェクト管理を、ruffはコードの品質管理を担当し、両者を組み合わせることで開発者体験が大幅に向上します。

特に注目すべき点は、これらのツールの「超高速」な処理速度です。
大規模なプロジェクトや複雑な依存関係を持つプロジェクトでも、ストレスなく開発を進められるようになります。

ただし、これらのツールはまだ発展途上であり、実際のプロダクション環境での使用には慎重な検討が必要かもしれません。
一方で、個人プロジェクトや新規プロジェクトでの採用は、非常に有益な経験になるでしょう。

Pythonの開発環境は日々進化しています。
新しい技術に触れ、自分の開発スタイルに合った最適な環境を見つけていくことが、より楽しくて効率的なプログラミング体験につながります。

ぜひuvとruffを試してみて、あなたのPython開発をより快適なものにしてください!

関連するコンテンツ