Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

第1章 モダン Python 開発の全体像

Python は学びやすく柔軟なプログラミング言語として、Web 開発、データ分析、AI・機械学習、スクリプト自動化など幅広い分野で利用されています。

しかし、長年にわたりツールの乱立や仮想環境管理の複雑さ、実行速度の遅さが開発者の課題となってきました。本章では、現代の Python 開発がどのように進化し、どのような標準構成が採用されているのか、全体像を整理します。

1.1 Python 開発環境の変遷と課題

従来の Python 開発では、プロジェクトごとに複数の異なるツールを組み合わせて利用することが一般的でした。

パッケージのインストールには pip、仮想環境の作成と分離には venv や virtualenv、パッケージの依存関係解決と固定には pip-tools や Poetry、Pipenv などが用いられてきました。また、コードスタイルの統一には black、インポート文の整列には isort、構文やバグのチェックには flake8、静的型検査には mypy といったように、多数の個別ツールをインストールし、それぞれ個別に設定する必要がありました。

このようなツールの乱立は、セットアップ手順の複雑化、チーム開発における環境差分の発生、CI/CD パイプラインでの実行時間の長期化といった問題を生んでいました。

1.2 pyproject.toml による設定の一元化

以前の Python プロジェクトでは、setup.py、setup.cfg、requirements.txt、.flake8、pyproject.toml など、設定ファイルが複数に分散していました。

これに対し、PEP 517、PEP 518、および PEP 621 によって、プロジェクトのメタデータやビルド設定、各種開発ツールの設定を単一の pyproject.toml に集約する標準化が進められました。

[project]
name = "my-project"
version = "0.1.0"
description = "モダン Python プロジェクトのサンプル"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
    "httpx>=0.27.0",
]

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

現在では、プロジェクトの依存関係だけでなく、フォーマッターやリンター、型チェッカーの設定も pyproject.toml に集約することが業界標準となっています。

1.3 現代の 3 本柱:uv、Ruff、型システム

現代の Python 開発において、開発体験と信頼性を飛躍的に高めているのが以下の 3 つの要素です。

1. 超高速パッケージマネージャー uv

Astral 社によって開発された uv は、Rust で書かれた非常に高速な Python パッケージマネージャーです。従来の pip や Poetry に比べて 10 倍から 100 倍高速に依存関係を解決・インストールします。さらに、Python 本体のバージョン管理、仮想環境の作成、プロジェクト管理、スクリプト単体の直接実行まで、包括的な機能を単一のバイナリで提供します。

2. 超高速リンター・フォーマッター Ruff

同じく Astral 社によって開発された Ruff は、Rust 製のオールインワン静的解析ツールです。従来の Flake8、Black、isort、pylint などの主要な機能を 1 つの高速なコマンドで代替します。従来のツールより数十倍から百倍以上高速に動作し、大規模なコードベースでも瞬時に検証と自動整形を完了します。

3. 静的型システムと型ヒント

Python は動的型付け言語ですが、Python 3.5 以降、型アノテーション(型ヒント)の仕組みが導入・強化されてきました。コード内に型情報を明記することで、エディタ(VS Code や PyCharm)による自動補完やリファクタリングが正確になり、実行前に静的解析ツール(ty など)で不整合やバグを検知できるようになります。

graph LR
    subgraph Modern["モダン Python 開発環境"]
        UV["uv<br/>(環境・依存関係・実行)"]
        RUFF["Ruff<br/>(リント・自動整形)"]
        TYPE["型情報・型ヒント<br/>(静的解析・安全性)"]
    end

    UV -->|快適な実行基盤| Project["堅牢で高品質な<br/>Python プロジェクト"]
    RUFF -->|品質維持| Project
    TYPE -->|不具合抑止| Project

1.4 本書で目指す開発環境のゴール

本書では、以下の目標を達成するための知識と実践手順を習得します:

  • uv を用いて、迷わず迅速にプロジェクトを作成・管理・実行できること。
  • Ruff を用いて、チーム全員で統一された美しいコードスタイルと品質基準を保てること。
  • Python の型ヒントを基礎から応用まで理解し、バグの少ない安全なコードを設計できること。
  • これらを有機的に結合し、pyproject.toml を中心とした洗練されたモダン Python 開発を実現できること。