FastAPIは、PythonでWeb APIを構築するための高性能なフレームワークです。FastAPIはオープンソースのプロジェクトとして、多くの開発者に利用されています。本文では、FastAPIについて詳しく皆さんに紹介した上、その使い方をも皆さんに紹介していきたいと思います。
FastAPIとは
FastAPIは、高性能なAPI開発を実現するためのPythonフレームワークで、StarletteとPydanticライブラリーに基づいています。REST API開発における新しいスタンダードとして、Pythonコミュニティで急速に注目を集めているフレームワークです。 機械学習プロジェクト等での利用に適している点が大きな特徴です。
公式サイト:https://fastapi.tiangolo.com/ja/
FastAPIの特徴と実現できること
FastAPIの特徴は何ですか?FastAPIを通じて実現できることは何ですか?この部分では、これらの問題について回答しようと思います。FastAPIの特徴と実現できることといえば、主に次のようなものがあります:
- シンプルで直感的な設計:ルーティング、リクエスト、レスポンスなどの機能がよく構造化されている
- 超高速:他のPythonフレームワークよりもはるかに高速に動作する
- 自動生成されるインタラクティブドキュメント:OpenAPI標準に準拠したドキュメントが自動生成される
- データ検証:Pydanticを利用したデータ検証機能
- シンプルなデプロイ: ASGIサーバーとの親和性が高い
- 機械学習対応:TensorFlowやPyTorchとのインテグレーションが容易
- セキュリティ機能:OAuth2、JWT認証、HTTPBasic認証などのセキュリティ機能を簡単に実装
- WebSocketsサポート:FastAPIでWebSocketを利用してリアルタイム通信を簡単に実装可能
- GrahQLサポート:GraphQLサーバーを簡単に実装
- 多言語へのサポート:国際化(i18n)を簡単に実装
これらの機能により、FastAPIは幅広いアプリケーションの開発に適しており、特にマイクロサービスやRESTful APIの構築に強力なツールとなっています
FastAPIの動作環境
それでは、FastAPIを利用するために、動作要件は何ですか?次はFastAPIの実行に不可欠な要件を紹介するので、次の内容を参照して、FastAPIの動作環境を整えましょう。
Python 3.7+
FastAPIはPython 3.7以上が必要です。型ヒント機能等を利用するため、3.7以上のバージョンが推奨されます。
ASGIサーバー
FastAPIはASGI(Asynchronous Server Gateway Interface)に準拠したサーバー上で動作します。代表的なのはUvicornですが、Hypercorn等のASGIサーバーも利用できます。
pip install uvicorn
Pydantic
リクエストとレスポンスのデータ検証にPydanticライブラリが利用されます。FastAPIはPydanticに依存しているため、インストールが必要です。
pip install pydantic
Starlette
FastAPIはStarletteと呼ばれるWSGI/ASGIフレームワークの上に構築されています。直接は必要ありませんが、内部的にはStarletteに依存関係があります。
(オプション) SQLAlchemy, Keras, PyTorch等
機械学習や大規模なデータ処理を行う場合、これらのライブラリとの連携が可能です。アプリケーション次第で必要になる場合があります。
- SQLAlchemy (オプション)
pip install sqlalchemy
- Keras (オプション)
pip install keras
- PyTorch (オプション)
pip install torch
FastAPIの使い方:インストールして利用する
それでは、次は基本的なFastAPIの使い方を皆さんに紹介します。次のステップを参照して、FastAPIで簡単なWebアプリを構築しましょう。
FastAPIのインストール
次のコマンドラインを使って、FastAPIをインストールすることができます:
pip install fastapi
そして、uvicornをインストールします。
FastAPIのアプリを作成
そして、Pythonファイルを新しく作成して、たとえば、demo.py。次のコードをそこにコピーします。
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
上記のコードでは、appと名付けられたFastAPIの使用例を作成して、ルートルーディングを定義し、JSONフォーマットのレスポンスも定義しました。
FastAPIアプリを実装
次のようなコマンドでFastAPIアプリを実装することができます。
uvicorn main:app --reload
ここで、FastAPIはローカルでサーバーを立ち上げ、デフォルトポート(8,000)を監視できます。http://127.0.0.1:8000
をブラウザで開くと、 {"Hello": "World"}
のレスポンスを見ることができます。
より多くのルーディングと機能を追加
上記のコードに基づき、より多くのルーディングと機能を追加することができます。ここで自分のニーズに従って追加することができます。
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
たとえば:上記のコードに read_item
の新しいルーディングを追加し、 item_id
というパラメータと q
というオプションのプラメータを受けとり、JSON形式のレスポンスを返します。
FastAPIの他の機能の使い方をも確認
サンプル:FastAPIの使用例
次は、FastAPIの実の使用例を皆さんに紹介します。次は、直接に実装可能なコードで、IDEエディターにコピーして実行してください。
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": f"APIのid:{item_id}"}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="127.0.0.1", port=8000)
そして、ブラウザで http://localhost:8000/
にアクセスすると、 {"Hello": "World"}
というレスポンスのコンテンツを見れるようになります。
また、 http://localhost:8000/items/42?q=somequery
のようなURLにアクセスして、パラメータ付きのレスポンスを確認することができます。
APIドキュメントの確認
また、FastAPIはSwaggerのドキュメントの自動生成をサポートしています。FastAPIが自動生成したAPIドキュメントを確認するには、http://localhost:8000/docs
にアクセスしてください。
Apidogでより便利にFastAPIを取り扱う
APIをテストしたりする必要がある場合、Apidogはこちらのおすすめのツールになります。Apidogは、APIの設計、仕様書生成、テスト自動化、APIモックなどの機能にも完璧に対応できるAPI管理ツールとして、FastAPIを利用して作成したAPIをテストする必要がある場合、特にお勧めしたいツールになります。
ApidogでFastAPIで作成したAPIをテスト
FastAPIで作成したAPIをより直感的で効率的にテストしたりするには、次のようにApidogを使用することがお勧めです。
ApidogのAPIデバッグモードでは、APIをテストすることが非常に便利になります。新しいAPIを作成して、「デバッグ」モードに切り替えると、アドレスバーでAPIのエンドポイントURLを入力して、必要なパラメータを記入することで、「送信」ボタンをクリックしたら、直ちにレスポンスを取得できます。
ここで、レスポンスにおいて、スターテスコードに異常があるかどうかを自動的に検証することもあるので、非常に直感で便利です。
FastAPIで作成したAPIのドキュメンテーションを生成
上記のように、FastAPIで作成されたAPIをテストして問題がないことを確認した上、右上の「保存」ボタンをクリックして、そのAPIの仕様を簡単に保存することができます。そして、Apidogという便利なツールを利用して、簡単に綺麗で直感的なAPIドキュメンテーションを生成することができます。
ステップ1. 左側メニューから「共有」をクリックして、「新しい共有」を選択すると、次のような共有設定が表示されます。
ここで、共有するAPIを選択して、必要に応じてセキュリティ設定や言語の設定を終えて、「保存」をクリックします。
ステップ⒉ 新しい共有項目が表示されます。「開く」をクリックすると、API仕様書がブラウザに表示されます。
生成されたAPIドキュメンテーション例:
Apidogによって保存されたAPI仕様を利用して、次のような綺麗なAPIドキュメンテーションを生成できます:
まとめ
本文では、FastAPIの概要、特徴、動作環境、基本的な使い方、そしてサンプルコードについて詳しく解説しました。FastAPIは高性能で使いやすいPythonフレームワークであり、RESTful APIやマイクロサービスの開発に適しています。主な特徴として、高速な処理、自動ドキュメント生成、データ検証機能、セキュリティ機能の容易な実装などが挙げられます。また、Python 3.7以上の環境で動作し、ASGIサーバーやPydanticなどの依存関係があります。
基本的な使い方としては、FastAPIとuvicornをインストールし、Pythonファイルでアプリケーションを作成、ルーティングを定義し、uvicornを使用して実行するという流れになります。
さらに、ApidogというツールをFastAPIと組み合わせることで、APIのテストやドキュメント生成をより効率的に行うことができます。Apidogを使用することで、APIのデバッグ、テスト、そして綺麗で直感的なAPIドキュメントの生成が可能になります。
FastAPIは、その高性能と使いやすさから、多くの開発者に支持されており、今後さらに普及していくことが予想されます。APIの開発を効率化したい場合や、高性能なWebアプリケーションを構築したい場合には、FastAPIは非常に有力な選択肢となるでしょう。