Slide 1

Slide 1 text

FastAPI+VercelでZennのバッジをお⼿軽に作る ganariya FastAPI+Vercel -> Zenn-Badge ganariya

Slide 2

Slide 2 text

ganariyaの⾃⼰紹介 普段は競技プログラミングをしています そのためバックエンドやAPIは初⼼者です 温かい⽬で⾒守ってやってください 履歴書はGitHubのGanariyaリポジトリにあります ⻑期インターンが終わり、アルバイトを探しています (もしよければぜひ...)(ぜひ...) FastAPI+Vercel -> Zenn-Badge ganariya

Slide 3

Slide 3 text

デモ FastAPI+Vercel -> Zenn-Badge ganariya

Slide 4

Slide 4 text

FastAPI+Vercel -> Zenn-Badge ganariya

Slide 5

Slide 5 text

FastAPI+Vercel -> Zenn-Badge ganariya

Slide 6

Slide 6 text

FastAPI+Vercel -> Zenn-Badge ganariya

Slide 7

Slide 7 text

FastAPIのご紹介 FastAPI+Vercel -> Zenn-Badge ganariya

Slide 8

Slide 8 text

FastAPI is 何 Python製REST Framework 似たものだと Flask 2018年にできており⾮常にモダンで⾼機能 (Python3.6〜) ASGI ⾮同期処理 GraphQL / WebSocket FastAPIのうれしさ3選について紹介 FastAPI+Vercel -> Zenn-Badge ganariya

Slide 9

Slide 9 text

その1 型ヒントとバリデーション Type Hintsを積極的に利⽤したフレームワーク username:str と引数で指定すると ⾃動で引数の型をバリデーション 型が正しいかなどの確認ロジックをコードで書かなくてよい 返り値なども型の指定が可能 型 -> IDEの恩恵を受けられる @app.get("/{username}/liked", response_class=HTMLResponse) def get_liked(username: str): user: User = scrape_user(username) badge = make_badge(username, 'Zenn liked', str(user.total_liked_count)) return HTMLResponse(content=badge, status_code=200, media_type='image/svg+xml') FastAPI+Vercel -> Zenn-Badge ganariya

Slide 10

Slide 10 text

その2 OpenAPIとSwagger-UI FastAPIは⾃動でOpenAPIのフォーマットを吐き出す /docs にアクセスするとSwagger-UIが⾃動で作成される 型をPythonで書くとそのままSwaggerへ! FastAPI+Vercel -> Zenn-Badge ganariya

Slide 11

Slide 11 text

その3 ドキュメント ドキュメントがとても丁寧 TutorialからAdvancedまで体系的に書かれている ファイル分割 , モジュールのプラクティス なども触れられている FastAPI+Vercel -> Zenn-Badge ganariya

Slide 12

Slide 12 text

Vercel FastAPI+Vercel -> Zenn-Badge ganariya

Slide 13

Slide 13 text

Vercel もともとNow(Zeit社)というサービス そのため、ネットの記事の情報がかなり混在している 似たサービスだと Heroku GitHubから⾃動デプロイ 無料枠が⼤きい 無制限のWebサイト+API Go, Python, Node.jsなどのサーバーレス ただしデプロイ回数は1⽇あたり制限あり DBが使えない (サーバーレスなので) FastAPI+Vercel -> Zenn-Badge ganariya

Slide 14

Slide 14 text

FastAPI+Vercel -> Zenn-Badge ganariya

Slide 15

Slide 15 text

設定ファイル {now, vercel}.json リポジトリのルートに置いてプッシュすると、Vercelが⾃動デプロイ { "version": 2, "builds": [ { "src": "zenn_badge/app.py", "use": "@now/python" } ], "routes": [ { "src": "/.*", "dest": "zenn_badge/app.py" } ] } FastAPI+Vercel -> Zenn-Badge ganariya

Slide 16

Slide 16 text

FastAPI + Vercelまとめ FastAPI 型とともに過ごせる ⾮常に⾼機能でモダン Vercel 破格的無料枠 jsonファイルひとつで済む DBは外部を利⽤する FastAPI + Vercel 開発が楽しい! FastAPI+Vercel -> Zenn-Badge ganariya

Slide 17

Slide 17 text

ご清聴ありがとうございました! GitHub: ganariya Qiita: ganariya Twitter: ganariya Zenn: ganariya AtCoder: ganariya2525 FastAPI+Vercel -> Zenn-Badge ganariya