「FastAPI」は、PythonのWebアプリ、API開発のフレームワークとして近年注目度を高めているため、
・FastAPIでできることを具体的に知りたい
・FastAPIの使い方が知りたい
と考える方は多いのではないでしょうか。そこでこの記事では、
・FastAPIの概要
・特徴や機能
・使用手順
についてわかりやすく解説します。
INDEX
FastAPIとは:Pythonでアプリ開発するためのフレームワーク
FastAPI(ファストエーピーアイ)は、Python3.6以降で利用できるWebフレームワークです。公式サイトでは「APIを構築するためのモダンで高速(高パフォーマンス)なWebフレームワーク」と紹介されています。
FastAPIは直感的に操作できるように設計されており、シンプルなコードで開発を進められます。
詳しくは後述の「FastAPIの機能」で解説しますが、APIドキュメントの自動生成や、型ヒントを用いた効率的な開発が可能です。また、比較的新しいフレームワークですが、公式の日本語ドキュメントが充実しており、初心者でも理解しやすい点も魅力の一つです。
Pythonについては「Python(パイソン)とは?人気プログラミング言語の特徴・活用事例を解説!」、APIについては「Web開発に役立つAPI連携とは?利用するメリットや実装手順を紹介」で詳しく解説しているので、併せてご覧ください。
\文字より動画で学びたいあなたへ/
Udemyで講座を探す >FastAPIの特徴
FastAPIの主な特徴は次の3点です。
- 直感的に操作できる:設計がシンプルで初心者でも操作しやすい
- 動作が早い:軽量でPythonフレームワークのなかでも高速に動作する
- バグを減らせる:カスタムデータ検証をサポートし、人為的なバグを削減できる
また、FastAPIは新しいフレームワークであり、最新のASGI(Asynchronous Server Gateway Interface)をベースにしている点も注目のポイントです。
PythonのWebフレームワークは、FastAPIのほかにもDjangoやFlaskが有名であり、特にDjangoはFastAPIと同じくAPI開発で利用されます。
Djangoについては「Django(ジャンゴ)とは?Pythonのフレームワークを活用し、Web開発に役立てよう」、Flaskについては「【Flask入門】Python初心者でもわかるフレームワークを解説!」で解説していますので併せてご覧ください。
FastAPIの機能
FastAPIの注目機能は次の3つです。
これらの機能について、一つずつ見ていきましょう。
ドキュメントが自動生成される
FastAPIでコードを実行すると、OpenAPI標準に準拠したドキュメントが自動生成されます。そのため、APIの仕様や挙動を手動で記載する必要がなく、より開発に注力することが可能です。
ドキュメント内には、エンドポイント、応答、パラメータ、リターンコードなどの詳しい情報が自動的に記載されます。自動生成されたドキュメントは、対話形式でデータの取得や追加などが実施でき、デバッグの際や動作確認の際に役に立ちます。
実際にドキュメントからAPIを操作する手順は、後述の「FastAPIの使用手順」で解説します。
型ヒントを含められる
型ヒントとは、Pythonの変数や関数の引数、戻り値などに型情報を付与する機能です。
Python3.5から公式にサポートされるようになった機能であり、コードの可読性や安全性を向上させ、バグなどの早期発見に役立ちます。前述のドキュメントの自動生成にも型ヒントが活用されています。
型ヒントをもとにAPIの「バリデーション」や「シリアライゼーション」が可能です。バリデーションとは、データが特定の条件や制約を満たしているかをチェックすることを、シリアライゼーションは、オブジェクトをファイルや通信に適した形式に変換することを指します。
非同期処理ができる
FastAPIは、Pythonの非同期処理機能を最大限に活用できるWebフレームワークです。非同期処理とは、複数の処理を同時に実行してプログラムの効率と速度を向上させる処理方法を表します。
Pythonでは通常コードの上から順に実行され、前段の処理が終わってから次の処理を行います。しかし、非同期処理では、前段の処理の完了を待たずに次の処理を開始することが可能です。
この機能によってプロセスの実行時間を軽減したり、多くのジョブを実行したりできるようになります。
FastAPIの使用手順
FastAPIを利用するまでの手順を解説します。流れは次のとおりです。
- 動作環境を構築する(仮想環境)
- FastAPIをインストールする
- FastAPIのプログラムを実行する
- 動作確認する
前提として、Python3.6以降がインストールされているものとします。Pythonのインストールがまだの場合は、「Pythonのインストール方法は?Windows・Macをそれぞれ解説」を参考にインストールを進めてください。
以降の手順は、Windows11/Python3.10の環境下での手順です。
動作環境を構築する
はじめに、venvを使ってFastAPI用の仮想環境を構築します。ここでは、「c:\code\fastpi-test」に仮想環境を作っていきます。
1 2 |
cd c:\code python -m venv fastapi-test |
仮想環境用のディレクトリが作成できたら、移動して仮想環境を有効化します。
1 2 |
cd fastapi-test Scripts\activate |
以下のように、仮想環境の名前が表示されていることを確認してください。
現時点では必要最低限のパッケージしかインストールされていません。
FastAPIをインストールする
FastAPIのセットアップは非常に簡単です。仮想環境が有効化されている状態で、次のコマンドを入力してFastAPIをインストールします。
pip install fastapi
FastAPIと関連するパッケージがインストールされたことを確認します。
併せて、軽量で高速なASGIサーバーである「uvicorn」もインストールします。
pip install “uvicorn[standard]”
こちらも同様に「pip list」コマンドでインストールされたことを確認しておきます。
FastAPIのプログラムを実行する
次にFastAPIで実行するプログラムを作成しましょう。今回は、ユーザー情報を管理するAPIを例として利用します。以下のコードをコピー&ペーストし、「main.py」として保存してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
c:\code\fastapi-test\main.py from fastapi import FastAPI, HTTPException from pydantic import BaseModel app = FastAPI() class User(BaseModel): user_id: int name: str email: str users_db = { 1: User(user_id=1, name="Alice", email="alice@example.com"), 2: User(user_id=2, name="Bob", email="bob@example.com"), } @app.get("/users/{user_id}") async def get_user(user_id: int): if user_id not in users_db: raise HTTPException(status_code=404, detail="User not found") return users_db[user_id] @app.post("/users/") async def create_user(user: User): if user.user_id in users_db: raise HTTPException(status_code=400, detail="User already exists") users_db[user.user_id] = user return user |
こちらの内容については、自動生成されたドキュメントを見るとわかりやすいと思いますので、動作確認の内容と併せて確認することをおすすめします。
コードを保存したら、次のコマンドでWebサーバーを立ち上げます。
uvicorn main:app –reload
「–reload」オプションは、コードが変更された際に自動的に再起動するオプションです。開発時に便利なオプションであるため覚えておきましょう。
「Application startup complete.」と表示されたら準備完了です。
動作確認する
まずは自動生成されたドキュメントを確認してみましょう。ブラウザで「http://localhost:8000/docs」にアクセスします。
ドキュメントを見ると、このAPIはGETとPOSTの2種類が存在していることがわかります。
GETでは{user_id}に紐づいた情報をリターンコード200、JSON形式で出力することがわかりますね。
また、{user_id}がint型以外の場合はバリデーションエラーとして、リターンコード422、エラー内容をJSON形式で出力するものだとわかります。
実際にこの画面からユーザー情報を取得していましょう。はじめに左上の「Try it out」ボタンをクリックします。
「user_id」に「1」を入力し、「Execute」ボタンをクリックします。
user_idが1の情報が取得でき、その内容がJSON形式で出力されています。
もちろん、直接ブラウザで「http://localhost:8000/users/1」を実行しても同様の結果が確認できます。
今回の例では、「user_id」は「1」と「2」の2人分の情報だけがコードに記載されています。エラー時の処理についても記載されているため、いろいろと数値を変えて試してみると理解が深まるでしょう。
次に、POST側も試してみましょう。コードにはuser_idが3の情報は記載されていないため、直接アクセスしてもデータは確認できません。
GETのときと同様にドキュメントからuser_idが3の情報を追加してみます。
APIが実行され、情報が追加されたことがわかります。
URLを直接入力してもデータが追加されたことが確認できますね。
追加したデータは保存する作りになっていないため、サーバーを再起動すると削除されます。
FastAPIを活用してAPIを迅速かつ効率的に開発しよう!
FastAPIはPythonのWebフレームワークとして有名なDjangoやFlaskよりも新しいWebフレームワークです。WebアプリやAPI開発に利用されるフレームワークとして注目を集めています。
FastAPIは直感的に操作でき、動作が早くバグが減らせるという特徴があり、ドキュメントの自動生成という強力な機能も持っています。公式の日本語ドキュメントが充実していることからも、今後はPythonにおけるWebフレームワークの中心的な存在になるかもしれません。
この記事では、FastAPIのかんたんな実装から使い方を解説しましたが、より本格的に学びたい場合にはUdemyの動画講座がおすすめです。
現代的な開発手法を身につけたい方には、以下の講座がおすすめです。
PythonからFastAPIまで【初心者向け講座】モダンなAPIサーバを構築してみよう【わかりやすさ重視】
Python初歩からFastAPIまでを繋ぐように網羅しています。多次元の辞書型、パッケージ、クラスの初歩から、Pydanticを使った型ヒント、非同期処理、キュメント自動生成など現代的な開発方法を体験することができます。
\無料でプレビューをチェック!/
講座を見てみる評価:★★★★
コメント:FAST APIについての概要や使い方がわかりやすくて大変参考になりました。本講座の動画を参照しながら、FAST APIを学習していきたいと思います。
評価:★★★★
コメント:簡潔な説明でわかりやすかった。
FastAPIを活用してAPIサーバーを構築するスキルを身につけましょう。
最新情報・キャンペーン情報発信中