【連載】Python FastAPI入門:第5回 APIのカスタマイズとデプロイ【実践・完結編】

この記事は約4分で読めます。

前回は、SQLAlchemyを使ってデータベース(SQLite)と連携し、データを永続化する方法を解説しました。

前回の記事はこちら:【連載】Python FastAPI入門:第4回 FastAPIでCRUD操作を実装する

全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)を利用する

最も手軽な方法です。RenderRailwayといったサービスを使えば、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. 第1回: FastAPIの特徴と環境構築。なぜ「速い」のかを理解。
  2. 第2回: パスとクエリ。データの受け取り方の基本。
  3. 第3回: Pydanticによる型安全なデータバリデーション。
  4. 第4回: SQLAlchemyによるデータベース連携(CRUD操作)。
  5. 第5回: ドキュメントのカスタマイズとデプロイの考え方。

FastAPIは、Pythonの「書きやすさ」と、GoやNode.jsのような「モダンな設計・速度」を両立させた、現時点で最高峰のフレームワークの一つです。

今回の連載で、API開発の「楽しさ」と「可能性」を感じていただけたら幸いです。ここから先は、認証機能(OAuth2)や非同期処理の深掘りなど、さらに面白い世界が待っています!

最後までお読みいただき、ありがとうございました。

コメント

タイトルとURLをコピーしました