モダンPython — 入門から FastAPI 実戦まで
Python 3.14 + uv + 型ヒント優先、一冊で完結するPython
本文と付録Aまで34章すべて、サイト上ですぐにお読みいただけます。どの章から始めても構いません。下の「どこから始めるか」で、ご自身の背景に合った出発点をご案内します。
この本が扱うこと #
- 現在のPython標準ワークフロー — pip + venv + pyenv の代わりに uv ひとつで環境・パッケージ・実行を統合します。pyproject.toml を中心に構成します。
- 型ヒント優先 — すべての例コードに型ヒントを併記します。mypy / pyright の支援を最初から受ける習慣を身につけます。
- 入門から実戦まで一本の流れでつなげます — 変数、FastAPI、SQLAlchemy、JWT 認証、デプロイを、実際のサービス開発の流れに沿って自然につなげます。
- 実務で必要になる運用領域まで扱います — ロギング・観測性・テスト・CI・ライブラリ公開のような領域を、後半の章でまとめて扱います。
この本が扱わないこと #
- データ分析・ML・ゲーム・GUI といったドメイン応用は別の本で扱います。
- 標準ライブラリの網羅 — 付録の30選のみ。
- 2017スタイルのコード(Python 2 互換、
%文字列、dict.has_keyなど) — 旧Python基礎講座 21編 がそのまま残っています。
想定読者 #
- Pythonを初めて学ぶ方 — 現在のツールと文法を基準に学びたい入門者。最初からモダンスタックで始めます。
- 旧 Python は知っているがモダンワークフローは知らない方 — 2.7 〜 3.5 の時代に学んでから止まっていた方。付録の旧コード移行ガイドが出発点になります。
- 他言語からPythonに移る方 — 入門部を素早く飛ばし、2 〜 5部で要点を吸収できます。型ヒント優先なので入り口の負担が低めです。
どこから始めるか #
34章すべてを自由にお読みいただけますが、「どこから始めればよいか」迷う方のために、3つの入り口をおすすめします。
- 1章 はじめにと uv セットアップ — 本書の出発点です。2017時代の pip + venv の代わりに、uv ひとつで環境・パッケージ・実行を統合する現在の標準ワークフローを身につけます。入門者の方が最初に開く章です。
- 2章 変数・基本型と型ヒント — 本書の核である「型ヒント優先」を最初から手に馴染ませる章です。モダンPythonの流れが気になる方に最も直接的な出発点です。
- 付録A 旧 Python コードの移行 — Python 2 互換コード・
%文字列・pip + venv を 3.14 + uv + 型ヒントのスタイルへ移すガイドです。旧 Python を使ってきた方が本書から最も大きな価値を得る章です。
この3章はそれぞれ入り口の役割を果たします。気に入った章から自由に開いてお読みください。
本書の元になるシリーズ #
本書は次の4シリーズ(計27編)+ 新規7章 + 全面改訂で一冊にまとめた本です。元になったシリーズは今もサイト上に無料で残っています。
本書は上のシリーズを、入門から実戦まで自然につながる形に再構成したものです。運用・テスト・総合実習の章を加え、一冊として読める構成にまとめました。
本書の運営について #
本書はサイトの広告(AdSense)と読者の応援によって運営されます。決済・購入手続きは設けておらず、34章の本文すべてをサイト上でそのままお読みいただけます。
本書のどこかが役に立ったと感じたら、Ko-fi で応援いただけると嬉しいです。応援は次の minor 改訂と後続の本を執筆する時間につながります。
よくある質問 #
学習環境には何が必要ですか #
Python 3.14 以上、uv、そしてコードエディタが一つあれば十分です。4部の FastAPI 章では、SQLite と無料枠で使えるデプロイサービスのみを使用します。決済が発生する段階は本文の中にありません。
本書のコードはどこで入手できますか #
各章の例コードは本文中のコードブロックに直接書かれているため、手で書き写しながら学ぶ方法をおすすめします。4部 総合実習 TODO API の完成版は、別途 GitHub リポジトリで提供する予定です。準備ができ次第、この本の紹介ページにリンクを追加します。
Python の次のバージョンが出たら本書は古くなりますか #
核となるモデル(uv ワークフロー、型ヒント優先、dataclass · Protocol、asyncio、FastAPI + Pydantic v2)は、少なくとも今後 2 〜 3年のバージョンの間はそのまま維持されると見ています。変更された文法やライブラリ API は本書の minor 改訂(例: v1.1)で反映し、大きな変化が積み重なった時点で v2 の本ラインを別途始めることがあります。
日本語以外の言語でも読めますか #
韓国語・日本語・英語の3言語すべてが同じ34章構成で公開されています。各言語の本の紹介からそのままお読みいただけます。
ある章がサイトの記事と70%以上同じではないですか #
一部の章はコンパイル元のシリーズ記事とトピックが同じです。ただし本書の章は、(1) 本書の流れに合わせた再叙述、(2) Python 3.14 + uv + 型ヒントを基準とした統一、(3) 本書内の他章とのcross-link、(4) 練習問題と一行まとめの追加によって書き直しているため、同じトピックでも結果は別の資料に近いものになります。新規7章と付録Aはコンパイル元のシリーズにありません。
応援・フィードバックはどう送りますか #
フィードバックは ブログのコメントまたはメール で歓迎します。章ごとの誤字・改善提案・コードの誤り報告は、次の minor 改訂に素早く反映します。応援は Ko-fi チャネルを設けており、$1 から自由にお送りいただけます。
次のステップ #
本書の ko · ja · en 34章はすべて公開されました。今後の更新は次のように進めます。
- v1 本文の安定化 — リリース後 4 〜 8週間、読者のフィードバックを受けて誤字・コードの誤り・説明の不足を minor 改訂(v1.x)で反映します。同じ改訂を3言語すべてに合わせて適用します。
- 4部 総合実習 GitHub リポジトリ — TODO API の完成版を別リポジトリにまとめ、この本の紹介ページにリンクを追加します。
- Python の定期更新 — 新しいマイナーバージョンとライブラリの変更を6か月周期で点検し反映します。大きな変化が積み重なった時点で v2 の本ラインを始めることがあります。
新しい章とメジャー改訂のお知らせは RSS フィード で受け取れます。
目次
Python・uv・最初のプロジェクトを扱います。変数と型ヒント、制御フロー、コレクション、関数、例外、モジュールまで、最新の標準ワークフローで進めます。
- 1. はじめ方とuvセットアップ 最新のPythonと uv で、最初のプロジェクトをそのまま作ります。
- 2. 変数、基本型と型ヒント Python は動的言語ですが、モダンPythonでは最初から型を書きます。int/str/bool/None と組み込みジェネリクス、int | None の短縮記法、mypy/pyright までまとめて整理します。
- 3. 制御フロー — if, while, for, match-case インデントでブロックを作る制御フロー、range/enumerate/zip、そして switch とは性格の異なる match-case のパターンマッチまで整理します。
- 4. コレクションと内包表記 list/tuple/dict/set の 4 コレクションの使いどころと、一行で新しいコレクションを作る内包表記・ジェネレータ式までまとめます。
- 5. 関数 — 引数パターン デフォルト値、*args/**kwargs、positional-only(/)、keyword-only(*) まで、関数シグネチャを表現力豊かに書くすべての道具を整理します。
- 6. エラーと例外処理 try/except/else/finally の役割、raise とユーザー定義例外、そして 3.11 がもたらした ExceptionGroup と except* までまとめます。
- 7. モジュール、パッケージと pyproject.toml import システム、モジュールとパッケージの違い、__init__.py と __main__、そして pyproject.toml で依存関係・ツール設定・配布まで一箇所に整理します。
dataclass・Protocol・コンテキストマネージャ・デコレータ・パターンマッチ・asyncio 入門をまとめます。小さなスクリプトから、保守しやすいコードへ進みます。
- 8. dataclass と __slots__ データを集めるクラスを短く安全に作るための @dataclass の全オプション — frozen、kw_only、field() と、メモリ節約ツールの __slots__ までを整理します。
- 9. typing 本格 — Generic、Protocol、TypedDict、Literal 基礎の型ヒントの次の段階 — 型をパラメータ化する Generic、ダックタイピングを正確に書く Protocol、dict の形を明示する TypedDict、狭い union の Literal までを整理します。
- 10. コンテキストマネージャ (with、contextlib) try/finally を一行にする with、__enter__/__exit__ による自作、@contextmanager で生成器のように短く作る方法、そして ExitStack/suppress などの実戦の道具まで整理します。
- 11. イテラブル、ジェネレータ、yield from for がどう動作するかを扱います。イテラブルプロトコル、ジェネレータ関数と式、yield from による委譲、send/throw までを整理します。
- 12. デコレータパターン 関数を包むデコレータのあらゆる形 — 基本形、引数を受け取るデコレータ、functools.wraps、クラスデコレータ、ParamSpec までを整理します。
- 13. パターンマッチング深掘り 基礎の match-case の次の段階 — クラスパターンと __match_args__、シーケンス/マッピングパターン、キャプチャとガード、そしてアンチパターンまでを整理します。
- 14. 非同期入門 (asyncio) async/await の意味、イベントループ、asyncio.gather と TaskGroup、同期コードとの混在まで、asyncio の最初の一歩を整理します。
マジックメソッド・ディスクリプタ・メタクラス・非同期の深層・GIL・高度な型付け・パフォーマンスプロファイリングを扱います。
- 15. マジックメソッドの深さとプロトコル Pythonオブジェクトが言語機能とつながるすべてのフック。__call__、__getitem__、__hash__、__format__、__getattr__ などをまとめます。
- 16. ディスクリプタと __set_name__ property が動作する原理 — __get__/__set__ プロトコルとデータ / 非データディスクリプタ、__set_name__ できれいなバリデーションフィールドを作るところまでまとめます。
- 17. メタクラス — いつ本当に必要か クラスを作るクラスを扱います。type の正体、__init_subclass__ との分担、クラスデコレータで解けるケース、そして本当にメタクラスが必要な狭い領域までまとめます。
- 18. 非同期の深さ — イベントループ、gather/wait、async generator 中級入門の次の段階として、イベントループの実際の動作、Future と Task の違い、gather vs wait、async generator と async iteration までまとめます。
- 19. GIL と並行性 — threading vs multiprocessing vs asyncio GIL の正体、threading/multiprocessing/asyncio の 3 つの道具の分担、そして Python 3.13〜3.14 の free-threaded ビルド (PEP 703/779) までをまとめます。
- 20. typing 上級 — Variance、ParamSpec、Self、overload 中級 typing の次の段階として、covariance/contravariance、ParamSpec と Concatenate、Self、TypeGuard/TypeIs、@overload までまとめます。
- 21. パフォーマンス — cProfile、py-spy、メモリプロファイリング 遅い Python コードを見つけて直す道具箱 — timeit、cProfile、py-spy、line_profiler、memray、そしてよくある最適化パターンまでまとめます。
FastAPI・Pydantic v2・SQLAlchemy 2.x・JWT 認証・バックグラウンドジョブ・テストとデプロイを扱います。最後は総合実習として TODO API を仕上げます。
- 22. FastAPI のはじめ方とセットアップ なぜ FastAPI なのか、uv で最初のプロジェクトをセットアップし、Hello FastAPI、OpenAPI/Swagger UI の自動生成までをまとめます。
- 23. ルーティング、Pydantic モデル、依存性注入 APIRouter でルートを分離し、Pydantic v2 スキーマで入出力を定義し、Depends で共通ロジックを分離するパターンまでまとめます。
- 24. Pydantic v2 の深層 — 検証、シリアライズ、カスタム validator FastAPI の核である Pydantic を独立した章で掘り下げます。v2 の性能と API の変化、model_validator/field_validator の使いどころ、シリアライズ制御、JSON Schema 生成までを扱います。
- 25. DB 連携 — SQLAlchemy 2.x + Alembic SQLAlchemy 2.x の新スタイル — Mapped/mapped_column、async セッション、FastAPI 依存性注入との接続、Alembic のマイグレーションまでまとめます。
- 26. 認証 — OAuth2 パスワードフロー + JWT パスワードハッシング(argon2/bcrypt)、OAuth2 パスワードフロー、JWT 発行/検証、そして current_user 依存性で認証フローを構成するパターンをまとめます。
- 27. 非同期とバックグラウンドジョブ async ルートの使いどき、BackgroundTasks でレスポンス後処理、外部キュー(Celery、ARQ)が必要になる境界、そして同期ライブラリと安全に混ぜる方法をまとめます。
- 28. テストとデプロイ — pytest、Docker、Railway/Fly pytest + httpx で FastAPI 統合テスト、依存性オーバーライドで隔離、Docker のマルチステージビルド、Railway/Fly クラウドデプロイまでまとめます。
- 29. 総合実習 — TODO API を完成させる 第1〜28章のパターンを 1 つの動作するサービスに編みます。認証されたユーザー別の TODO CRUD、タグフィルタ、ページネーション、バックグラウンド通知、テスト、デプロイまで。
型チェッカ・CI・構造化ロギング・観測性・uv でのライブラリ公開・Typer CLI を扱います。実務で必要になる領域をまとめます。
- 30. 型チェッカ設定と CI 統合 mypy / pyright / ruff の設定と衝突回避、pre-commit でローカル段階でブロック、GitHub Actions で PR 段階でブロックするまで。
- 31. logging と観測性 標準 logging の落とし穴、structlog などの構造化ロギング、OpenTelemetry での分散トレース、Sentry でのエラートラッキングまで。
- 32. uv でのライブラリ公開 — pyproject.toml と PyPI リリース pyproject.toml の意味を一度に整理し、uv build・uv publish で最初のライブラリを PyPI にリリースする手順を扱います。
- 33. CLI ツールの作成 (Typer) argparse ではなく Typer で型ヒント優先の CLI を作る方法。サブコマンド、自動補完、Rich 出力との統合まで扱います。
旧 Python コードをモダンスタイルへ移すためのガイドです。