第3章:開発環境とツールチェーン
更新日:2025年12月9日
1. パッケージ管理
1.1 pip/Poetry/uv
Pythonのパッケージ管理は長年の課題であり、ツールの変遷が続いている。Table 1に主要なパッケージマネージャの比較を示す。
Table 1. パッケージマネージャの比較
| ツール | 特徴 | ロックファイル | 速度 |
|---|---|---|---|
| pip + venv | 標準ツール、シンプル | requirements.txt(手動) | 遅い |
| Poetry | 依存解決、ビルド統合 | poetry.lock | 中程度 |
| uv | Rust製、pipの高速代替 | uv.lock | 非常に速い |
| rye | Python自体の管理も含む | requirements.lock | 速い |
1.1.1 pip + venv:標準ライブラリのみで動作する最もシンプルな構成。
# 仮想環境の作成と有効化
python -m venv .venv
source .venv/bin/activate # Linux/macOS
# .venv\Scripts\activate # Windows
# パッケージのインストール
pip install requests pandas
# 依存関係の固定
pip freeze > requirements.txt
# 再現
pip install -r requirements.txt
1.1.2 Poetry:依存関係の解決、ロックファイル、ビルド・公開までを統合[1]。
# プロジェクト初期化
poetry init
# パッケージ追加
poetry add requests
poetry add pytest --group dev
# 依存関係インストール
poetry install
# 仮想環境内でコマンド実行
poetry run python main.py
poetry run pytest
1.1.3 uv:Astral社(ruff開発元)によるRust製パッケージマネージャ[2]。pipの10-100倍の速度を実現。
# インストール
curl -LsSf https://astral.sh/uv/install.sh | sh
# プロジェクト初期化
uv init myproject
cd myproject
# パッケージ追加
uv add requests
uv add pytest --dev
# 同期(ロックファイルから環境を再現)
uv sync
# スクリプト実行
uv run python main.py
# pip互換モード(既存プロジェクト向け)
uv pip install -r requirements.txt
1.2 rye
ryeはPythonインタプリタ自体の管理も含む統合ツール[3]。pyenv + poetry + pip-toolsの機能を1つのツールで提供する。
# インストール
curl -sSf https://rye.astral.sh/get | bash
# プロジェクト初期化(Pythonバージョン指定)
rye init --py 3.12 myproject
cd myproject
# Pythonバージョン固定
rye pin 3.12
# パッケージ追加
rye add requests
rye add pytest --dev
# 同期
rye sync
# スクリプト実行
rye run python main.py
1.2.1 2024-2025年の推奨:新規プロジェクトではuvまたはryeの採用を推奨する。既存のPoetryプロジェクトは無理に移行する必要はないが、CI/CDでの速度改善を目的にuvへの移行を検討する価値がある。Fig. 1にツール選択のフローを示す。
2. Linter/Formatter
2.1 ruff統合時代
ruffは、Rust製の超高速Linter/Formatterであり、flake8、isort、black、pyupgradeなど複数のツールを統合・置換する[4]。
Table 2. ruffが置換するツール
| 従来ツール | 機能 | ruffでの対応 |
|---|---|---|
| flake8 | スタイルチェック | ruff check |
| black | コードフォーマット | ruff format |
| isort | import文の整理 | ruff check --select I |
| pyupgrade | 構文のモダン化 | ruff check --select UP |
| autoflake | 未使用import削除 | ruff check --select F401 |
# インストール
pip install ruff
# または
uv add ruff --dev
# リントチェック
ruff check .
# 自動修正
ruff check --fix .
# フォーマット
ruff format .
# チェックとフォーマットを同時に
ruff check --fix . && ruff format .
2.2 設定ファイル
ruffはpyproject.tomlまたはruff.tomlで設定する。
# pyproject.toml
[tool.ruff]
target-version = "py312"
line-length = 88
indent-width = 4
[tool.ruff.lint]
select = [
"E", # pycodestyle errors
"W", # pycodestyle warnings
"F", # Pyflakes
"I", # isort
"B", # flake8-bugbear
"C4", # flake8-comprehensions
"UP", # pyupgrade
"ARG", # flake8-unused-arguments
"SIM", # flake8-simplify
]
ignore = [
"E501", # line too long (formatterに任せる)
]
[tool.ruff.lint.per-file-ignores]
"tests/*" = ["ARG"] # テストでは未使用引数を許可
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
docstring-code-format = true
2.2.1 pre-commitとの統合:コミット時に自動でチェックを実行。
# .pre-commit-config.yaml
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.8.0
hooks:
- id: ruff
args: [--fix]
- id: ruff-format
# pre-commitのセットアップ
pip install pre-commit
pre-commit install
pre-commit run --all-files
3. 型チェッカー
型ヒント(第2章参照)を静的に検証するツールとして、mypyとpyrightが主流である。
Table 3. 型チェッカーの比較
| ツール | 開発元 | 特徴 |
|---|---|---|
| mypy | Python公式 | デファクトスタンダード、プラグイン豊富 |
| pyright | Microsoft | 高速、VSCode/Pylance統合、厳格 |
| pytype | 推論が強力、型注釈なしでも動作 |
3.1 mypy:
# インストールと実行
pip install mypy
mypy src/
# pyproject.toml設定
[tool.mypy]
python_version = "3.12"
strict = true
warn_return_any = true
warn_unused_ignores = true
disallow_untyped_defs = true
[[tool.mypy.overrides]]
module = "tests.*"
disallow_untyped_defs = false
3.2 pyright:VSCodeのPylance拡張に組み込まれており、エディタ統合が優れている。
# インストールと実行
pip install pyright
pyright src/
# pyrightconfig.json
{
"pythonVersion": "3.12",
"typeCheckingMode": "strict",
"reportMissingImports": true,
"reportMissingTypeStubs": false,
"exclude": ["**/__pycache__", "**/node_modules", ".venv"]
}
# または pyproject.toml
[tool.pyright]
pythonVersion = "3.12"
typeCheckingMode = "strict"
3.3 選択指針:チームで統一することが重要。VSCodeユーザーが多いチームではpyright、CIでの標準化を重視する場合はmypyが適している。両方を併用するプロジェクトも存在する。
4. Docker開発環境
Dockerによるコンテナ化は、環境の再現性とチーム間の統一に有効である。
4.1 開発用Dockerfile:マルチステージビルドで本番と開発を分離。
# Dockerfile
FROM python:3.12-slim as base
WORKDIR /app
# 依存関係のインストール(キャッシュ効率化)
COPY pyproject.toml uv.lock ./
FROM base as development
RUN pip install uv && uv sync --frozen
COPY . .
CMD ["uv", "run", "python", "-m", "pytest"]
FROM base as production
RUN pip install uv && uv sync --frozen --no-dev
COPY src/ ./src/
CMD ["uv", "run", "python", "-m", "src.main"]
4.2 docker-compose.yml:ローカル開発環境の定義。
# docker-compose.yml
version: "3.9"
services:
app:
build:
context: .
target: development
volumes:
- .:/app
- /app/.venv # .venvはマウントしない
ports:
- "8000:8000"
environment:
- PYTHONDONTWRITEBYTECODE=1
- PYTHONUNBUFFERED=1
command: uv run uvicorn src.main:app --reload --host 0.0.0.0
db:
image: postgres:16
environment:
POSTGRES_USER: dev
POSTGRES_PASSWORD: dev
POSTGRES_DB: myapp
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
4.3 Dev Containers:VSCodeのDev Containers拡張により、コンテナ内で直接開発可能。
// .devcontainer/devcontainer.json
{
"name": "Python Dev",
"dockerComposeFile": "../docker-compose.yml",
"service": "app",
"workspaceFolder": "/app",
"customizations": {
"vscode": {
"extensions": [
"ms-python.python",
"ms-python.vscode-pylance",
"charliermarsh.ruff"
],
"settings": {
"python.defaultInterpreterPath": "/app/.venv/bin/python"
}
}
}
}
5. GPU環境構築
機械学習・深層学習ではGPU(CUDA)環境が必須となる。
5.1 ローカル環境:NVIDIAドライバとCUDA Toolkitのインストール。
# Ubuntuでの手順
# 1. NVIDIAドライバのインストール
sudo apt update
sudo apt install nvidia-driver-550
# 2. CUDA Toolkitのインストール(PyTorchは独自にCUDAを持つため不要な場合も)
# https://developer.nvidia.com/cuda-downloads から取得
# 3. PyTorchのインストール(CUDA付き)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
# 動作確認
python -c "import torch; print(torch.cuda.is_available())"
5.2 Docker + GPU:NVIDIA Container Toolkitを使用。
# NVIDIA Container Toolkitのインストール
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt update
sudo apt install nvidia-container-toolkit
sudo systemctl restart docker
# GPU対応Dockerfile
FROM nvidia/cuda:12.1-runtime-ubuntu22.04
RUN apt-get update && apt-get install -y python3.12 python3-pip
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "train.py"]
# docker-compose.yml(GPU対応)
services:
training:
build: .
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
5.3 クラウド環境:Table 4に主要なGPUクラウドサービスを示す。
Table 4. GPUクラウドサービス
| サービス | 特徴 | 用途 |
|---|---|---|
| Google Colab | 無料枠あり、Jupyter環境 | 実験、学習 |
| AWS EC2 (p4d, g5) | スケーラブル、高性能 | 本番学習 |
| GCP Vertex AI | マネージド環境 | MLOps統合 |
| Lambda Labs | 低コスト、シンプル | 研究開発 |
| RunPod | オンデマンド、低コスト | バッチ学習 |
References
[1] Poetry, "Poetry - Python packaging and dependency management made easy," python-poetry.org, 2024.
[2] Astral, "uv: An extremely fast Python package installer," github.com/astral-sh/uv, 2024.
[3] Astral, "Rye: A Hassle-Free Python Experience," rye.astral.sh, 2024.
[4] Astral, "Ruff: An extremely fast Python linter," github.com/astral-sh/ruff, 2024.
本コンテンツは2025年12月時点の情報に基づいて作成されている。Python開発ツールのエコシステムは急速に変化しており、特にuv/ryeは活発に開発が進んでいる。最新の機能や推奨事項については、各ツールの公式ドキュメントを参照されたい。