Upgrade to Pro — share decks privately, control downloads, hide ads and more …

FastAPI+VercelでZennのバッジをお手軽に作る

9b929c02f59c1a5628f2004b850bb879?s=47 Ganariya
January 20, 2021

 FastAPI+VercelでZennのバッジをお手軽に作る

9b929c02f59c1a5628f2004b850bb879?s=128

Ganariya

January 20, 2021
Tweet

Transcript

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

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

    ganariya
  3. デモ FastAPI+Vercel -> Zenn-Badge ganariya

  4. FastAPI+Vercel -> Zenn-Badge ganariya

  5. FastAPI+Vercel -> Zenn-Badge ganariya

  6. FastAPI+Vercel -> Zenn-Badge ganariya

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

  8. FastAPI is 何 Python製REST Framework 似たものだと Flask 2018年にできており⾮常にモダンで⾼機能 (Python3.6〜) ASGI

    ⾮同期処理 GraphQL / WebSocket FastAPIのうれしさ3選について紹介 FastAPI+Vercel -> Zenn-Badge ganariya
  9. その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
  10. その2 OpenAPIとSwagger-UI FastAPIは⾃動でOpenAPIのフォーマットを吐き出す /docs にアクセスするとSwagger-UIが⾃動で作成される 型をPythonで書くとそのままSwaggerへ! FastAPI+Vercel -> Zenn-Badge ganariya

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

    Zenn-Badge ganariya
  12. Vercel FastAPI+Vercel -> Zenn-Badge ganariya

  13. Vercel もともとNow(Zeit社)というサービス そのため、ネットの記事の情報がかなり混在している 似たサービスだと Heroku GitHubから⾃動デプロイ 無料枠が⼤きい 無制限のWebサイト+API Go, Python,

    Node.jsなどのサーバーレス ただしデプロイ回数は1⽇あたり制限あり DBが使えない (サーバーレスなので) FastAPI+Vercel -> Zenn-Badge ganariya
  14. FastAPI+Vercel -> Zenn-Badge ganariya

  15. 設定ファイル {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
  16. FastAPI + Vercelまとめ FastAPI 型とともに過ごせる ⾮常に⾼機能でモダン Vercel 破格的無料枠 jsonファイルひとつで済む DBは外部を利⽤する

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

    ganariya2525 FastAPI+Vercel -> Zenn-Badge ganariya