FastAPI チュートリアル

FastAPI は、API を構築するための現代的で高速(高性能)な Python Web フレームワークであり、RESTful API の構築専用に設計されています。

FastAPI は Python 3.8+ を使用し、標準の Python 型ヒントに基づいて、Starlette と Pydantic を使って構築されており、API ドキュメントの自動生成とデータ検証を行うことができます。


このチュートリアルは誰向けですか?

このチュートリアルは、Python の基礎知識がある開発者向けです。Python の基本文法と型アノテーションを理解していれば、FastAPI をすぐに使い始めることができます。


このチュートリアルを学ぶ前に知っておくべきこと

このチュートリアルを学ぶ前に、基礎的な Web 知識とPython 3.x 基礎チュートリアル。HTTP リクエストメソッド(GET、POST など)に馴染みがない場合は、先に読むことをお勧めします:HTTP チュートリアル。


FastAPI の特徴

FastAPI が Python Web フレームワークの中で特に際立っているのは、主に以下の特徴によるものです:

特徴説明
高性能Starlette と Pydantic に基づいており、NodeJS や Go に匹敵する性能を持ち、最速の Python フレームワークの一つです。
高速開発開発速度が約 200%~300% 向上し、標準的な型宣言だけでデータ検証とドキュメント生成が完了します。
エラー削減人為的エラーを約 40% 削減し、型システムが一般的な問題を自動的に検出します。
自動ドキュメント対話型 API ドキュメント(Swagger UI と ReDoc)を自動生成し、手動でのメンテナンスは不要です。
型安全性標準の Python 型ヒントに基づいており、エディタは包括的なオートコンプリートとエラーチェックを提供します。
非同期サポートasync/await をネイティブにサポートし、IO 集中型タスクを効率的に処理できます。

FastAPI の適用シーン

シーン説明
API バックエンドの構築RESTful API の構築に使用され、フロントエンドとバックエンドを分離した Web アプリケーションをサポートします。
マイクロサービスアーキテクチャ軽量で効率的であり、マイクロサービスのバックエンドフレームワークとして適しています。
データ処理 APIJSON データを受け取り、返すデータ処理サービスに適しています。
リアルタイム通信WebSocket をサポートし、リアルタイム通信のシーンに適しています。
機械学習サービストレーニング済みモデルを API としてラップし、フロントエンドや他のサービスから簡単に呼び出せます。

FastAPI の技術スタック

FastAPI は、2つのコアライブラリの上に構築されています:

コンポーネント役割説明
StarletteWeb フレームワーク層ルーティング、ミドルウェア、WebSocket などの基本的な Web 機能を提供します。FastAPI は Starlette を直接継承しています。
Pydanticデータ検証層Python の型ヒントに基づいて、データ検証、シリアライズ、ドキュメント生成を行います。
UvicornASGI サーバーuvloop と httptools に基づく高性能な ASGI サーバーで、FastAPI アプリケーションを実行するために使用されます。
FastAPI は Starlette のサブクラスであるため、Starlette のすべての機能を使用できます。また、FastAPI は Pydantic と完全に互換性があり、Pydantic ベースの ORM(SQLModel など)などの外部ライブラリも含まれます。

なぜ FastAPI を選ぶのか?

比較軸FastAPIFlaskDjango
性能高(非同期、ASGI)中(同期、WSGI)中(同期、WSGI)
自動ドキュメント内蔵(Swagger UI + ReDoc)サードパーティ製拡張機能が必要サードパーティ製拡張機能が必要
型検証内蔵(Pydantic)手動実装が必要手動実装が必要
非同期サポートネイティブサポート拡張機能が必要3.1+ でサポート
学習曲線低低やや高い
適用規模中小規模 / マイクロサービス中小規模大規模 / フルスタック

関連リンク

リソースアドレス
FastAPI 公式ドキュメントhttps://fastapi.tiangolo.com/zh/
FastAPI ソースコードhttps://github.com/tiangolo/fastapi
Starlette ドキュメントhttps://www.starlette.dev/
Pydantic ドキュメントhttps://docs.pydantic.dev/
その他の拡張機能