Web API の開発を可能にする Python フレームワークである FastAPI は、ここ数年で人気が高まっています。

API (アプリケーション プログラミング インターフェイス) は現代のアーキテクチャの基礎です。これにより、アプリケーションをモジュール化して分離することができます。これにより、アプリケーションを迅速に作成し、保守が容易になります。

したがって、Python を使用して Web アプリケーションを開発する予定がある場合は、FastAPI を学習することをお勧めします。この記事では、FastAPI の基本について説明します。

FastAPIとは何ですか?

FastAPIは Python ベースの Web フレームワークです。近年非常に注目を集めています。その開発構造は、Python Web 開発を学びたい人にとって最も人気のある選択肢である Flask に似ています。

ファスタピ
ファスタピ

FastAPI は使い方が簡単で、そのドキュメントは明確で理解しやすいものです。 FastAPI は、Microsoft、Netflix、Uber などの大手テクノロジー企業によって使用されています。

FastAPI には、API ビルダーに期待されるすべての機能が備わっていますが、これらに限定されるわけではありません。これを使用して、ほとんどのユーザーが知らない後方 WSGI をマウントできます。

FastAPI の主な目的は、名前が示すように、API エンドポイントを構築することです。これは、Python 辞書データを JSON で返すか、OpenAPI の対話型 Swagger UI を使用するのと同じくらい効率的に実行できます。

FastAPI は API に限定されません。 Jinja2 テンプレート エンジンを使用した Web ページの配信から、WebSocket を利用したアプリケーションの提供まで、Web フレームワークが実行するほぼすべてのことに使用できます。

FastAPI の利点は次のとおりです。

  • FastAPI を使用すると、ネストされた JSON クエリを使用している場合でも、開発者のデータ型を検証できます。
  • オートコンプリート機能を備えているため、より短時間で、より少ない労力でアプリケーションを作成できます。
  • OpenAPI および JSON スキーマ ボキャブラリと互換性があるため、JSON ドキュメントを検証し、注釈を付けることができます。
  • FastAPI を使用すると、graphene–python と呼ばれる Python ライブラリを使用して GraphQL API を迅速に構築できます。
  • FastAPI は、OAuth 2.0 および外部プロバイダーと互換性があります。

FastAPI の欠点は次のとおりです。

  • FastAPI はまだ新しいフレームワークであるため、ガイドライン コミュニティはほとんどありません。書籍、コース、チュートリアルなどの外部教育情報が十分ではありません。
  • すべてのコンポーネントを FastAPI で結合する必要があるため、メイン ファイルが非常に大きくなったり、混雑したりする可能性があります。

FastAPI の独自の機能

これらの独自の機能により、FastAPI は現在最も人気のある Python Web フレームワークになっています。

  • 高パフォーマンス: FastAPI は他の Python フレームワークよりもパフォーマンスが優れています。 FastAPI は速度重視のフレームワークであるため、最優先の選択肢となっています。すべては、Starlette の機能を活用し、API を作成し、すぐに使用できるコードを生成することで、より高速でパフォーマンスが向上するということになります。
  • コードを迅速に作成できる:開発者は、実稼働対応のコードを使用して新しいものを作成する必要はありません。これにより、プロセスが約 200% ~ 30% 高速化されます。 FastAPI は Starlette 上で実行され、データ検証とシリアル化のための API の構築に使用できる機能がさらに多くあります。フレームワークには必要なコンポーネントがすべてあらかじめ用意されているため、コーディングにかかる​​時間が短縮されます。
  • 最小限のバグ:フレームワークには、ほとんどのコードを自動的に部分に挿入するオートコンプリート機能があります。これにより、エラーの可能性が最小限に抑えられ、出力品質が向上します。
  • 理解しやすい: FastAPI は、Modern Python 以外は何も行いません。これは Python 3.6 の修正バージョンであり、新しい構文は含まれていません。このフレームワークは、言語をよく理解している人なら誰でも使用できます。
  • 最小限の労力: FastAPI は、開発者の最小限の労力で OpenAPI ドキュメントを自動的に生成します。この情報は、アプリケーションの/doc ディレクトリにあります。このドキュメントには、API エンドポイント、戻りコード、応答パラメーター、その他の詳細に関する詳細情報が含まれています。
  • エディターのサポート:フレームワークのすべてのコンポーネントは、オートコンプリートを念頭に置いて設計されています。シンプルなので、開発者はすぐに使えるコードを作成できます。インタラクティブなドキュメントを使用して、ブラウザから直接コードをテストすることもできます。
  • オープンスタンダード: FastAPI の Python Web フレームワークは大きな利点です。このフレームワークは、API の作成を可能にする OpenAPI (旧名 Swagger) と互換性があります。

FastAPI のインストール

Linux または Windows に FastAPI をインストールする簡単な手順は次のとおりです。

#1. Linux への FastAPI のインストール

以下のコマンドを使用して、Linux に Python 3 をインストールします。

 sudo apt install python3 
Python Linuxをインストールする
Python Linuxをインストールする

以下のコマンドを使用して Linux に pip をインストールします。

 sudo apt install python3-pip 
Python Pip Linux をインストールする
Python Pip Linux をインストールする

次に、Linux に FastAPI をインストールします。

 pip install fastapi 
FastAPI Linux をインストールする
FastAPI Linux をインストールする

ASGI サーバーも必要です。そこで、pip を使用して uvicorn をインストールします。

 pip install "uvicorn[standard]" 
ユービコーン Linux をインストールする
ユービコーン Linux をインストールする

#2. Windows への FastAPI のインストール

Microsoft ストアを使用して Windows に Python 3 をインストールします。これにより、pip もインストールされます。

Python Windows をインストールする
Python Windows をインストールする

次に、Windows に FastAPI をインストールします。

 pip install fastapi 
FastAPI Windows をインストールする
FastAPI Windows をインストールする

最後に、ASGI サーバー uvicorn をインストールします。

 pip install "uvicorn[standard]" 
Uvicorn Windows をインストールする
Uvicorn Windows をインストールする

FastAPI の新時代の使用法

FastAPI の新時代の用途をいくつか紹介します。

自動ドキュメント

API タイプとエンドポイントに関するドキュメントは必須です。この問題は、OpenAPI、Swagger UI、および ReDoc を使用して解決できます。これらは FastAPI で自動的にパックされます。これにより、ツールをセットアップせずにコードに集中できます。

型付き Python

FastAPI は Python 3.6 の型宣言を使用します (Pydantic のおかげで)。これは、変数の型と型を指定できる Python 機能を使用することを意味します。このフレームワークはそれを最大限に活用し、優れたエディターのサポートを提供します。オートコンプリートは驚くほどうまく機能します。

検証

Pydantic はすでに検証をこのフレームワークに統合しています。標準の Python 型の検証とカスタム フィールドの検証を実行できます。

セキュリティと認証

これはあらゆる API の重要な部分です。多くの場合、単にコードを繰り返すだけなので、その一部をフレームワークに組み込んでみてはいかがでしょうか。 FastAPI はまさにこれを行います。

このライブラリは、HTTP Basic、OAuth2 トークン (JWT トークン)、およびヘッダー API キーをサポートします。

非同期の性質

FastAPI はデフォルトで非同期エンドポイントをサポートし、コードをよりシンプルかつ効率的にします。これは Flask に比べて大きな利点です。

FastAPI と Flask: 主な違い

使用法の違い

API の構築に必要なすべてを提供するフルスタック プラットフォームである FastAPI が利用可能です。一方、Flask はマイクロ フレームワークであり、FastAPI と同じ機能をすべて提供するわけではありません。 Flask は、アイデアのプロトタイプを作成する必要がある場合や、簡単な Web アプリを迅速に作成する必要がある場合に役立ちます。

Flask と FastAPI は使用方法が大きく異なります。 Flask フレームワークは新しいアイデアやアプリケーションのプロトタイプを作成するために使用でき、FastAPI フレームワークは API を構築するために使用できます。コーディングの知識がなくても、これを使用してバックエンド サーバーを迅速に構築できます。

小規模な Web サイトおよび Web アプリケーション

FastAPI は使いやすく軽量で、小規模な Web およびアプリケーション開発に使用できます。これには、アプリケーション内でデータ オブジェクトを処理するオブジェクト リレーショナル層 (ORM) が含まれているため、コーディングを通じてデータ オブジェクトにすばやくアクセスできます。

ORM レイヤーはデータベースを追跡するため、Web サイトやアプリケーションに新しい情報が追加、変更、または削除されたときにデータベースを手動で更新する必要がなくなります。

WSGI 対 ASGI

基本的な違いに気づいたかもしれません。Flask は標準インターフェイスに WSGI を使用しますが、FastAPI は ASGI を使用します。前述したように、WSGI はリクエストを同期的に処理します。リクエストは順番に処理されます。最後のタスクが完了するまでは開始できません。

ASGI はリクエストを非同期的に処理します。これにより、タスクを自分のペースで完了できるようになり、他のタスクを待つ必要がなくなります。

コミュニティ

もう一つの違いはコミュニティです。 Flask は FastAPI よりも古くから存在するコミュニティです。これは、優れたドキュメントと、Flask について書いている他の人からの外部支援を意味します。

FastAPI はまだ新しいプロジェクトであるため、コミュニティはまだそれほど成長していません。これは、十分な文書はあるものの、外部からの支援があまりないことを意味します。

以下は、FastAPI と Flask の要約表です。

ファストAPIフラスコ
データ検証が組み込まれています。データ検証はありません。
非同期タスクのサポートが利用可能です非同期タスクのサポートは利用できません
ASGI仕様を実装WSGIアプリケーションをサポート
自動ドキュメントサポートマニュアルドキュメントのサポート
エラーメッセージはJSON形式で表示されますエラーメッセージがHTMLページに表示される
小規模なコミュニティのサポート豊富なコミュニティサポート

FastAPI と Flask: どちらを選択するべきですか?

FastAPI と Flask を使用すると、Python Web サーバーとデータ サイエンス アプリケーションを迅速にセットアップできます。どちらもデプロイメントに同じ労力が必要ですが、次のプロジェクトにはどのフレームワークが最適ですか?

速度とパフォーマンスが最も重要な場合は、FastAPI が最適なオプションです。このフレームワークは、CDN を構築していて大量のトラフィックが予想される場合に最適です。 FastAPI を使用すると、フレームワークをダウンロードしてすぐに使用できます。プロジェクト テンプレートを使用すると、時間を節約できます。

API を構築する場合は、Flask よりも FastAPI の方が良いオプションです。これは、マイクロサービスやその他の考慮事項を考慮する場合に特に当てはまります。 Flask は、このフレームワークを中心に構築されたツールをすでに多数持っている場合に最適な選択肢です。

結論

以上、FastAPI についてでした。 FastAPI は優れた速度とパフォーマンスを提供します。このフレームワークは、コンテンツ配信ネットワークを構築していてトラフィックが予想される場合に最適です。 FastAPI の革新的なフレームワークとプロジェクト テンプレートは、時間を節約するのに役立ちます。

API、特にマイクロサービスの作成には Flask の方が適している可能性があります。 FastAPI は Flask よりも優れています。すでに頻繁に使用している場合は、Flask を選択することをお勧めします。

API を構築するために、いくつかの人気のある Python フレームワークを調べることもできます。

「 5 分以内で解説する FastAPI」についてわかりやすく解説!絶対に観るべきベスト2動画

[PyCon JP 2022] Fast API と学ぶ WebRTC (Takayuki Kawazoe)
How to Use FastAPI: A Detailed Python Tutorial

Share via
Copy link