Python応用

FastAPIで4プロジェクトを2週間で作ってわかった「最初に知りたかった」こと

「FastAPIって簡単そうだし、サクッと複数プロジェクト作れるんじゃないか?」

そう思って走り出すと、意外なところで時間を溶かしてしまう——そんな経験、ありませんか?

海外の開発者が2週間で4本のFastAPIバックエンドを連続で構築した体験談がdev.toで話題になっています。REST API・Webスクレイパー+ダッシュボード・ReactのAdminパネル・CrewAIを使ったAIワークベンチ。合計134のPythonファイル・38テスト・CIが15回連続で失敗というリアルな数字が並んでいます 😅

この記事では、その体験談をベースに「FastAPIを本格的に使う前に知っておくと差がつくポイント」を日本語で整理してお届けします!

🐳 Docker Composeの構成を毎回コピペしていませんか?

FastAPI python backend
FastAPI python backend / Photo by Nemuel Sereti via Pexels

話題の投稿でまず指摘されていたのがDocker Composeの沼です。

プロジェクトごとに apipostgresrediscelerynginx という同じ5コンテナ構成を使い回すことになりがち。3プロジェクト目には「docker-compose.ymlを丸ごとコピーして変数を3つ変えるだけ」という状態になったそうです。

つまり、「コピペ=技術的負債の積み上げ」になっているわけです。

対策としておすすめなのが、共通設定をComposeのextends機能や環境変数テンプレートで分離しておくこと。こんなイメージです。

# base.docker-compose.yml(共通設定をここにまとめる)
services:
  api:
    build: .
    env_file: .env  # プロジェクトごとに .env だけ変える
    ports:
      - "${API_PORT:-8000}:8000"

  postgres:
    image: postgres:15
    environment:
      POSTGRES_DB: ${POSTGRES_DB}
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}

ポイントをまとめるとこんな感じです。

  • ✅ 変わる値はすべて環境変数(.env)に切り出す
  • ✅ プロジェクトごとに .env だけ差し替えて使い回せるようにする
  • ✅ CIで毎回ビルドし直すよりベースイメージをキャッシュしておくと時短になる

⚡ FastAPIで「最初に知りたかった」3つの教訓


体験談から見えてきた、FastAPI開発でハマりやすいポイントを整理しました。

① 非同期(async)の使いどころを最初に決める

FastAPIは非同期処理(async/await)をサポートしていますが、DBアクセスに同期ドライバを使いつつ async def で書くと、むしろパフォーマンスが落ちることがあります。「asyncを使うならDB接続ライブラリも非同期対応のものに揃える」が鉄則です。

② テストはできるだけ早い段階で書く

今回の体験でも「38テスト・CI15回失敗」という数字が出ていましたよね。FastAPIにはTestClientという便利なテストツールが標準で用意されています。

from fastapi.testclient import TestClient
from main import app

client = TestClient(app)

def test_read_root():
    # GETリクエストを送ってステータスコードを確認
    response = client.get("/")
    assert response.status_code == 200
    assert response.json() == {"message": "Hello World"}

エンドポイントを追加するたびにテストも一緒に書く習慣をつけておくと、CIで大量失敗…という悲劇を防げます 😌

③ プロジェクト構成(ディレクトリ設計)を最初に決めておく

FastAPIはファイル構成に制約がないぶん、後から「あのロジックどこに書いたっけ?」となりがちです。最初から routers/schemas/services/models/ のような役割別ディレクトリを用意しておくのが◎。

まとめ

FastAPIは学習コストが低く、手軽に始められる優れたフレームワークですが、プロジェクトを重ねると「最初の設計」の差が大きく効いてきます

  • 🐳 Docker Composeは環境変数テンプレートで使い回せる形にする
  • ⚡ 非同期ライブラリは統一しておく
  • 🧪 TestClientでこまめにテストを書く
  • 📁 ディレクトリ構成は最初に決める

「むずかしそう」と思っていたFastAPIの本格運用も、最初のひと手間で「できそう!」に変わるはずです。ぜひ自分のプロジェクトに取り入れてみてください 🚀

📚 関連商品・おすすめ書籍

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

もしも

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

初心者に定番のPython入門書

Amazonで見る

徹底攻略! 電子工作&プログラミング Arduinoで学ぶ電子工作完全ガイド

もしも

徹底攻略! 電子工作&プログラミング Arduinoで学ぶ電子工作完全ガイド

電子工作とプログラミングを同時に学べる

Amazonで見る

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

もしも

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

AIコーディングの現場活用法を学ぶ一冊

Amazonで見る

※本記事にはアフィリエイトリンクが含まれます。

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 Pythonを用いたアプリ開発、ウェブアプリケーションの開発で業務の効率化をサポートしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です