前回は、SQLAlchemyを使ってデータベース(SQLite)と連携し、データを永続化する方法を解説しました。
全5回にわたる連載の最終回となる今回は、作成したAPIをより実践的にするための「ドキュメントのカスタマイズ」と、世界中に公開するための「デプロイ」の入り口について解説します。
自動ドキュメントを「製品レベル」に仕上げる
FastAPIの大きな魅力であるSwagger UI(/docs)ですが、デフォルトのままだと少し味気ないですよね。数行のコードを追加するだけで、誰が見ても分かりやすい「仕様書」に変えることができます。
メタデータの追加
FastAPIのインスタンスを作成する際に、タイトルや説明文、バージョンを指定できます。
app = FastAPI(
title="にいやんの爆速API",
description="FastAPI連載で作成したサンプルAPIです。ユーザー管理ができます。",
version="1.0.0",
)タグによる整理
エンドポイントが増えてくると、ドキュメントが乱雑になります。tagsを使うことで、機能ごとにグループ分けが可能です。
# tags=["ユーザー管理"] を追加
@app.post("/users/", response_model=database.User, tags=["ユーザー管理"])
def create_user(name: str, email: str, db: Session = Depends(get_db)):
db_user = database.User(name=name, email=email)
db.add(db_user)
db.commit()
db.refresh(db_user)
return db_user
これだけで、一気に「プロが作ったAPI」のような見た目になります。
APIを公開する(デプロイ)
自分のPC(ローカル環境)で動くようになったら、次はインターネット上に公開してみましょう。FastAPI(Python)を公開する方法はいくつかあります。
1. クラウドサービス(PaaS)を利用する
最も手軽な方法です。RenderやRailwayといったサービスを使えば、GitHubにコードをプッシュするだけで自動的に公開(デプロイ)してくれます。
- メリット: インフラの知識が少なくても公開できる。
- デメリット: 無料枠には制限がある場合が多い。
2. Dockerを使って構築する
組み込みエンジニアの方なら、環境の「ポータビリティ」の重要性はよくご存知かと思います。Dockerを使えば、本番サーバーでも自分のPCと同じ環境を瞬時に構築できます。
# シンプルなDockerfileの例
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]3. VPS(Linuxサーバー)に構築する
自分でLinuxサーバーを借りて、Nginxなどをリバースプロキシとして立てる方法です。自由度が最も高く、運用の勉強にもなります。
実践的な一歩:CORSの設定
APIを公開して、別のサイト(フロントエンド)から呼び出そうとすると「CORSエラー」に直面することがあります。これはセキュリティ上の制限ですが、FastAPIでは数行で許可設定が可能です。
from fastapi.middleware.cors import CORSMiddleware
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # 全てのドメインからのアクセスを許可(本番は制限推奨)
allow_methods=["*"],
allow_headers=["*"],
)連載のまとめ:FastAPIを学んで得られたもの
全5回を通して、以下のステップを駆け抜けました。
- 第1回: FastAPIの特徴と環境構築。なぜ「速い」のかを理解。
- 第2回: パスとクエリ。データの受け取り方の基本。
- 第3回: Pydanticによる型安全なデータバリデーション。
- 第4回: SQLAlchemyによるデータベース連携(CRUD操作)。
- 第5回: ドキュメントのカスタマイズとデプロイの考え方。
FastAPIは、Pythonの「書きやすさ」と、GoやNode.jsのような「モダンな設計・速度」を両立させた、現時点で最高峰のフレームワークの一つです。
今回の連載で、API開発の「楽しさ」と「可能性」を感じていただけたら幸いです。ここから先は、認証機能(OAuth2)や非同期処理の深掘りなど、さらに面白い世界が待っています!
最後までお読みいただき、ありがとうございました。

コメント