Abstract
PythonにはASGIと呼ばれる非同期Webインターフェース仕様があり、FastAPI、Django、Starletteなど多くのWebアプリケーションフレームワークはこのASGIの仕様に沿ったASGIアプリケーションとして動作しています。そのため、Pythonで本格的なWebアプリケーションを開発するためには、ASGIに対する理解は極めて重要です。
本発表で取り上げるASGIミドルウェアは、すべてのリクエストに対する共通処理を実装できるASGIのサブ仕様のひとつです。ASGIサーバに対してASGIアプリケーションのように振る舞い、ASGIアプリケーションに対してASGIサーバのように振る舞うASGIミドルウェアは、ASGIの全てが詰まっていると言っても過言ではありません。
本発表ではシンプルながらも奥が深いASGIミドルウェアについて、実践的なコード例を交えて解説します。現時点では以下の流れを想定していますが、具体的なパターンの詳細などは一部変更する可能性もあります。
- ASGIの概要
- ASGIミドルウェアの定義
- ASGIミドルウェアの実装パターンと実装時の注意点
- 基本編
- エンドポイントの処理時間計測: シンプルな例
- ヘルスチェックへの応答: ミドルウェアでのレスポンス返却
- HTTPヘッダーを用いた認証: リクエストの検証、リクエストハンドラとのデータ共有
- 応用編
- HTTPボディの利用: ストリームの再構築
- アプリケーション起動時、終了時の処理: Lifespan
- WebSocketの利用
- 基本編
- まとめ
ASGIミドルウェアはアイディア次第で用途が広がります。 そのしくみを正確に理解し、使いこなしていきましょう。
About the speaker
Rei Suyama
尾道が好きになり東京から尾道の向島に引っ越してきたフルリモートのプログラマ。学生時代からずっとPython好き。シンプルなコード、シンプルな設計を目指してます。最近はRustもよく書いてる。「Python実践入門」の著者。
- X: rhoboro
- GitHub: rhoboro
- ブログ: https://www.rhoboro.com/