フレームワークの向こう側 Vol.2 — Django/FastAPI の内部構造を読む

フレームワークの向こう側 Vol.2 — Django/FastAPI の内部構造を読む

艶雨

【Django・FastAPI のソースコードを逐語で読み解き、「リクエストがビューに届くまで」を完全に理解する】

@app.get("/users/{user_id}") と書けばルーティングが動く——でも、その裏で何が起きているか説明できますか?

本書の最大の特徴は、Django・Starlette・FastAPI が内部で実際に何をしているのかを、版を固定した実物のソースコードの逐語抜粋+注釈で読み解くことです。「概念的にはこうなっている」という再構成コードではなく、あなたが pip install で手にするのと同じ実物のコードを、出典付きで引用しながら追います。枝葉は省き、リクエストがビューに届くまでの本筋だけをたどります。

対象バージョン:Django 5.2.15(LTS)/ FastAPI 0.136.3 / Starlette 1.2.1 / asgiref 3.11.1(Python 3.12)

■ 本書で学べること ・Django の入口 get_wsgi_application() から WSGIHandler、django.setup() までの起動フロー ・HttpRequest/HttpResponse オブジェクトの解剖と、URLResolver による URL 解決の全行程 ・load_middleware が組むミドルウェアのタマネギ構造とその実行(CSRF を核例に) ・FBV/CBV の呼び出し、テンプレートエンジン、フォームと full_clean による検証 ・ORM:QuerySet の遅延評価、Query 構築、SQLCompiler による SQL コンパイル、リレーションとトランザクション ・FastAPI の HTTP 機構の実体が Starlette であること——Router/Route の入口とルーティング ・Request/Response と ASGI プロトコル(scope・receive・send)、例外の二層と BackgroundTask ・FastAPI が型検証と DI を差し込む継ぎ目 get_dependant と、実行時 DI の中核 solve_dependencies ・jsonable_encoder による直列化と get_openapi による OpenAPI 自動生成 ・Django の ASGIHandler と、同期・非同期を橋渡しする asgiref(sync_to_async/async_to_sync)

■ 本書の構成(序章2本+全17章+付録2本/3部構成)

【第1部 Django を WSGI から読む】 第1部 序章:Django のモジュール地図(リクエストが通る経路の図式目次) 第1章:入口と起動——get_wsgi_application()/WSGIHandler/django.setup() 第2章:HttpRequest と HttpResponse オブジェクトの解剖 第3章:URL 解決の全行程(URLResolver) 第4章:ミドルウェアチェーンの構築と実行(CSRF を核例に) 第5章:ビューの呼ばれ方(FBV/CBV) 第6章:テンプレートエンジン(django.template) 第7章:フォームとバリデーション(django.forms) 第8章:ORM ①——QuerySet の遅延評価と Query 構築 第9章:ORM ②——SQL コンパイル、リレーション、トランザクション

【第2部 Starlette と FastAPI を ASGI から読む】 第2部 序章:Starlette/FastAPI のモジュール地図 第10章:Starlette の入口とルーティング 第11章:Request と Response の ASGI プロトコル 第12章:例外の二層と BackgroundTask 第13章:FastAPI の継ぎ目と起動時解析(get_dependant) 第14章:実行時 DI の中核 solve_dependencies 第15章:直列化と OpenAPI 自動生成

【第3部 同期と非同期の境界】 第16章:Django の ASGI 対応と ASGIHandler 第17章:asgiref ブリッジの芯(sync_to_async/async_to_sync/run_in_threadpool)

付録A:フレームワークのソースを手元で読む準備 付録B:contrib の内部——セッション、認証、メッセージ

■ こんな方におすすめ ・django-admin startproject で始めたが、フレームワークの内側を覗いたことがない方 ・FastAPI を使っているが、Starlette や ASGI との関係がよくわからない方 ・デバッグ中にフレームワークのコードへ踏み込んでも、何が起きているかわからなくなる方 ・「ミドルウェアを書く」「カスタムルーターを作る」といった一歩進んだ実装をしたい方 ・LLM が生成したコードの妥当性を自分で判断できるようになりたい方

■ 前提知識 Django または FastAPI でシンプルな Web アプリを動かした経験があれば読み進められます。 Vol.1 を読んでいなくても、HTTP リクエスト/レスポンスの構造、WSGI(application(environ, start_response) という callable)、ASGI(scope・receive・send の3要素)の役割を大まかに知っていれば問題ありません。

■ 著者プロフィール 40 年以上のプログラミング経験を持つエンジニア。LLM を開発パートナーとして活用しながら、フレームワークの内部を実際のコードで丁寧に解説します。

本シリーズは全3巻構成です。 Vol.1「HTTP/WSGI/ASGI 基礎」では HTTP と TCP ソケットから WSGI/ASGI 仕様まで扱います。 Vol.3「Web システム設計と運用」では Gunicorn 選定・並行処理・本番デプロイ・セキュリティを扱います。

有償章を読むには

有償章の閲覧には書籍のご購入が必要です。

Amazon で購入する

目次

  • 1 第1部 序章 Django のモジュール地図 — リクエストが通るコードと、受け渡されるデータ 無料
  • 2 第1章 入口と起動:`get_wsgi_application` / `WSGIHandler` / `django.setup` 無料
  • 3 第2章 HttpRequest と HttpResponse オブジェクトの解剖 無料
  • 4 第3章 URL 解決の全行程 有料
  • 5 第4章 ミドルウェアチェーンの構築と実行(CSRF を核例に) 有料
  • 6 第5章 ビューの呼ばれ方(FBV / CBV) 有料
  • 7 第6章 テンプレートエンジン(`django.template`) 有料
  • 8 第7章 フォームとバリデーション(`django.forms`) 有料
  • 9 第8章 ORM ①:QuerySet の遅延評価と Query 構築 有料
  • 10 第9章 ORM ②:SQL コンパイル、リレーション、トランザクション 有料
  • 11 第2部 序章 Starlette / FastAPI のモジュール地図 — リクエストが通るコードと、受け渡されるデータ 有料
  • 12 第10章 Starlette の入口とルーティング 有料
  • 13 第11章 Request と Response の ASGI プロトコル 有料
  • 14 第12章 例外の二層と BackgroundTask 有料
  • 15 第13章 FastAPI の継ぎ目と起動時解析(`get_dependant`) 有料
  • 16 第14章 実行時 DI の中核 `solve_dependencies` 有料
  • 17 第15章 直列化と OpenAPI 自動生成 有料
  • 18 第16章 Django の ASGI 対応と ASGIHandler 有料
  • 19 第17章 asgiref ブリッジの芯 有料
  • 20 付録A: フレームワークのソースを手元で読む準備 有料
  • 21 付録B contrib の内部:セッション、認証、メッセージ 有料