0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

FastAPIって何?PythonでAPI開発を始める人向けにやさしく解説

0
Posted at

FastAPI Logo

画像出典: FastAPI公式

PythonでWeb開発をしていると、FastAPIという名前を見かける機会がかなり増えてきました。
でも、実際に触ったことがないと、何がそんなに良いのかは少しわかりにくいと思います。

この記事では、FastAPIがどんなフレームワークなのか、なぜ人気なのか、どんな人に向いているのかを、できるだけシンプルに整理していきます。
FastAPIは、Pythonの標準である型ヒントを活用してAPIを構築するための、モダンで高速なWebフレームワークとして公式でも紹介されています

FastAPIとは?

FastAPIは、PythonでWeb APIを作るためのフレームワークです。
特に、フロントエンドやスマホアプリ、外部サービスとやり取りするAPIサーバーを作る場面で強みを発揮します。

特徴をひと言でまとめるなら、Pythonらしく書けて、開発しやすくて、しかも速いフレームワークです。
公式では、高いパフォーマンス、型ヒントの活用、自動ドキュメント生成などが大きな特徴として挙げられています

FastAPIが人気な理由

FastAPIが人気の理由は、単純に書きやすいだけではありません。
実際の開発でうれしい機能が最初からかなり揃っています。

型ヒントを活かして開発できる

FastAPIでは、Pythonの型ヒントをそのまま活かしてAPIを定義できます。
たとえば、この値は文字列、この値は整数、といった情報を自然にコードへ書いておくと、それをもとに入力データの検証がしやすくなります。

公式でも、FastAPIは標準のPython型宣言に基づいており、検証はPydanticによって処理されると説明されています

これによって、受け取るデータの型違いや必須項目の漏れを見つけやすくなり、API開発でありがちなミスを減らしやすくなります。

APIドキュメントが自動生成される

FastAPIを触って最初に感動しやすいのが、APIドキュメントの自動生成です。
ルーティングや型定義をしておくと、Swagger UIやReDocベースのドキュメントが自動で用意されます。FastAPIはOpenAPIに基づいており、対話的なドキュメントをデフォルトで提供します

これが便利なのは、ブラウザからすぐにAPIを試せることです。
どんなエンドポイントがあるのか確認できて、パラメータを入れてそのまま実行もできます。初心者ほど、この機能のありがたさを実感しやすいと思います。

Swagger UI Example

画像出典: FastAPI公式

Pythonなのにかなり高速

FastAPIは、高速なPythonフレームワークとして知られています。
公式でも、NodeJSやGoと同等クラスの高いパフォーマンスを持つフレームワークの1つとして紹介されています

もちろん、実際の速度は処理内容やDB設計にも左右されます。
それでも、Python製のAPI基盤としてかなり実用的なパフォーマンスを出しやすいのは、大きな魅力です。

非同期処理と相性がいい

Web APIでは、通信待ちやデータベース待ちなど、処理の途中で待機が発生する場面がとても多くあります。
FastAPIは async / await を活かした非同期処理と相性がよく、そうした待ち時間を効率よく扱える設計になっています

公式でも、Web APIには非同期コードを使うのが理にかなっていると説明されています。FastAPIは内部的にその仕組みを活用しやすくなっているため、多くのリクエストを効率よくさばきやすいのが特徴です

FastAPIで何が作れるのか

FastAPIは、データをJSONで返す仕組みを作りたいときに特に向いています。
たとえば、次のような用途で使いやすいです。

フロントエンド向けのバックエンドAPI、スマホアプリ向けAPI、会員登録やログイン処理、商品一覧や注文処理、社内システム向けAPI、AIアプリの推論APIなどです。

画面を返すテンプレート中心のWebアプリというより、バックエンドのAPI基盤として使うと特に良さが出やすいフレームワークです。

FastAPIのコードはどれくらいシンプルか

たとえば、最小構成のFastAPIアプリは次のように書けます。

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Hello FastAPI"}

これだけで、ルートURLにアクセスしたときにJSONを返すAPIが作れます。

さらに、リクエストデータを受け取る場合も、Pydanticのモデルを使って比較的すっきり書けます。

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    name: str
    price: int

@app.post("/items")
def create_item(item: Item):
    return {
        "name": item.name,
        "price": item.price
    }

このように型を定義しておけば、FastAPI側が受け取ったデータを自動で検証してくれます。
データの形がズレていれば、エラーもわかりやすく返してくれるため、API開発の見通しがかなり良くなります

FastAPIは初心者にも向いているのか

結論としては、かなり向いています。

理由は、書き方が比較的シンプルで、型やバリデーションによってミスを減らしやすく、さらにAPIドキュメントが自動で生成されるからです。
書いたあとにすぐブラウザで動作確認できるので、学習のテンポが良くなります
最初はシンプルなJSON APIから始めて、慣れてきたら認証、DB連携、非同期処理、依存性注入といった実務寄りの内容へ広げていけます。
入りやすいのに、その先も深く学べるのがFastAPIの良いところです。

FastAPIを学ぶときのおすすめ順

これから学ぶなら、最初は次の流れがおすすめです。

まずはルーティングを書いて、GETやPOSTでデータを返す感覚をつかみます。
そのあとで、パスパラメータやクエリパラメータ、Pydanticモデル、バリデーションに進むと理解しやすいです。
さらに、自動ドキュメントの見方に慣れてから、非同期処理やDB連携に進むと、かなり自然に学べます。

最初から全部やろうとせず、まずはAPIを1本作って返してみるところから始めるのが一番おすすめです。

FastAPIまとめ

FastAPIは、PythonでAPIを作りたい人にとって非常に有力な選択肢です。

Pythonの型ヒントを活かして書けること。
Pydanticによるバリデーションが使いやすいこと。
Swagger UIやReDocによる自動ドキュメントが最初からあること。
そして、非同期処理とも相性がよく、高いパフォーマンスを目指しやすいこと。
こうした点が、FastAPIが支持されている大きな理由です

これからPythonでAPI開発を始めたいなら、まず触ってみる価値はかなりあります。
シンプルに始められて、そのまま実務レベルまで伸ばしていける、バランスの良いフレームワークです。


参考リンク


お知らせ

以下は自分が出しているUdemy講座で、30日間使える半額クーポン付きリンクです。
FastAPIを体系的に学びたい方は、よければこちらもどうぞ。

Udemy講座はこちら

※価格やクーポンの適用状況は、Udemy側の表示をご確認ください。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?