こんにちわー
— 広告データ収集×差分分析プロジェクトで実際に刺さったポイントまとめ —
最近 Python で API を作る機会が増えたのですが、その中でも FastAPI が圧倒的に便利 だったので Qiita にまとめます。
特に、私がいま開発している 広告データ収集 × 差分分析 × 再生数ランキングツール のように、
- 仕様が動く
- API が後から増える
- 外部サービス(YouTube / TikTok / Instagram / Facebook)と連携
- 毎日差分処理(再生数 / CTR / クリエイティブ情報)
- データ量が多い
といったプロジェクトでは FastAPI が“刺さりすぎる”フレームワークでした。
この記事では、
FastAPI を使って REST API を爆速構築しつつ、OpenAPI 仕様書まで自動生成される流れ
を、実務ベースの視点で紹介します。
なぜ FastAPI なのか?
■ API First が「できない現場」が多すぎる問題
業務ではよくあるケース:
- 「まずデータを集めてみないと要件が決まらない」
- 「スクレイピング・外部APIの仕様変更に追われてAPI設計どころじゃない」
- 「とにかく動くプロトタイプがほしい」
- 「クライアントの要望が毎週変わる」
= API First のドキュメントを書く暇がない。
でも、チーム開発では「仕様書がないと困る」と言われる…。
そこで FastAPI を使うと、
API を追加するだけで /docs と /openapi.json が自動更新される
→ ドキュメントを書く手間がゼロになる
という最高体験が手に入ります。
実務:広告データ分析ツールで FastAPI が刺さった瞬間
私が担当しているプロジェクトでは、
YouTube / TikTok / Instagram / Facebook の広告を毎日クロールし、以下を実装しています。
- 各広告の再生数を 毎日蓄積して差分計算
- クリエイティブを保存
- 「今日もっとも伸びた広告ランキング」を生成
- 外部API仕様が頻繁に変わる
- 内部APIがどんどん増える
こういう API仕様が完成しないまま増殖し続けるプロジェクト では FastAPI が最高です。
なぜなら、
- エンドポイントを追加 → swagger も openapi.json も自動更新
- レスポンス型を Pydantic で定義 → バグ減少
- uvicorn が軽くて反応が早い
- 非同期処理 async/await が自然に使える
- クライアントSDK を OpenAPI Generator で自動生成できる
FastAPI の最小実装例
まずは本当にシンプルな REST API を例に。
■ インストール
pip install fastapi
pip install uvicorn
■ API 本体(api.py)
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
app = FastAPI()
class Article(BaseModel):
id: int
title: str
url: str
year: int
articles = []
■ CRUD 実装
POST /articles
@app.post("/articles")
def create_article(article: Article):
articles.append(article)
return article
GET /articles
@app.get("/articles")
def get_articles():
return articles
GET /articles/{id}
@app.get("/articles/{article_id}")
def get_article(article_id: int):
for article in articles:
if article.id == article_id:
return article
raise HTTPException(status_code=404, detail="記事が見つかりません")
■ 起動
uvicorn api:app --reload
/docs を開くと Swagger UI が自動生成されている
FastAPI の真骨頂。
http://localhost:8000/docs
にアクセスすると、Swagger UI が勝手に完成してます。
さらに
/openapi.json
を叩くと OpenAPI v3 仕様が自動生成済み。
これをそのまま OpenAPI Generator に流して、
TypeScript / Python / Go / Java の API クライアントを自動生成できます。
Heroku へのデプロイも超簡単
requirements.txt を生成し、
pip install pipreqs
pipreqs
Procfile を置けば、
web: uvicorn api:app --host=0.0.0.0 --port=${PORT}
あとは
heroku login
heroku create
git push heroku main
でデプロイ完了。
Python 初心者でも冗談抜きで 10 分で終わります。
実務で FastAPI を使うべきケース
広告データプロジェクト以外でも、FastAPI が向いているのはこんな場面です。
✔ とにかく開発スピードが重要
✔ スクレイピング + API連携 + 分析がセットの案件
✔ 細かい API が大量に増えるプロジェクト
✔ OpenAPI を手書きしたくない
✔ 非同期処理が多い
✔ プロトタイプ→PoC→本番の流れが前提
このあたりに一つでも当てはまるなら FastAPI は本当におすすめです。
まとめ
FastAPI を使うことで
- 仕様書の更新負担がゼロに
- 開発スピードが爆速に
- 外部APIが多いプロジェクトに最適
- Swagger と openapi.json が完全自動
- Pydantic の型定義でバグが減る
というメリットが得られます。
広告データ分析ツールのような、
「仕様が先に固まらないタイプのプロダクト」 においては、
“FastAPI 一択” と感じました。
次のフェイズでは広告分析プロジェクトで使っている
- 非同期処理(async/await)
- バッチ処理
- DB 設計(差分保存・日次ロールアップ)
- キャッシュ戦略
- 大量データ収集を FastAPI で捌く構成
などをまとめてみようと思います。
ちょっとでもお役に立ててたら嬉しいです☺️🌟
