Skip to content

FastAPI環境構築完全ガイド

FastAPIの環境構築から、実務で使えるベストプラクティスまで詳しく解説します。

FastAPIは、PythonのモダンなWebフレームワークです。高いパフォーマンスと開発効率を両立しています。

FastAPIの特徴
├─ 高速なパフォーマンス(Node.jsやGoに匹敵)
├─ 自動APIドキュメント生成
├─ 型安全性(Pydantic)
└─ 非同期処理のサポート

問題のある構成(FastAPIなし):

# 問題: 低レベルのHTTP処理を手動で実装
from http.server import HTTPServer, BaseHTTPRequestHandler
import json
class Handler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'application/json')
self.end_headers()
self.wfile.write(json.dumps({"Hello": "World"}).encode())
# 問題点:
# 1. ルーティングの実装が必要
# 2. リクエスト/レスポンスの処理が複雑
# 3. 型安全性がない
# 4. APIドキュメントの生成が必要

解決: FastAPIによる高速なAPI開発

# 解決: FastAPIがすべてを提供
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
# メリット:
# 1. 自動ルーティング
# 2. 自動APIドキュメント生成
# 3. 型安全性
# 4. 高速なパフォーマンス

FastAPIは、Python 3.8以上をサポートしています。最新の安定版を使用することを推奨します。

Terminal window
# Pythonのバージョン確認
python --version
# または
python3 --version
# 推奨: Python 3.11以上

pyenvを使用したPythonバージョン管理(推奨)

Section titled “pyenvを使用したPythonバージョン管理(推奨)”
Terminal window
# pyenvのインストール(macOS)
brew install pyenv
# pyenvのインストール(Linux)
curl https://pyenv.run | bash
# Python 3.11のインストール
pyenv install 3.11.5
# プロジェクトディレクトリでPythonバージョンを設定
pyenv local 3.11.5

仮想環境は、プロジェクトごとに独立したPython環境を作成する仕組みです。

Terminal window
# プロジェクトディレクトリの作成
mkdir myproject
cd myproject
# 仮想環境の作成
python -m venv venv
Terminal window
# macOS / Linux
source venv/bin/activate
# Windows (コマンドプロンプト)
venv\Scripts\activate
# Windows (PowerShell)
venv\Scripts\Activate.ps1
Terminal window
deactivate
Terminal window
# FastAPIのインストール
pip install fastapi
# Uvicornのインストール(標準オプション付き)
pip install "uvicorn[standard]"
Terminal window
# requirements.txtの作成
pip freeze > requirements.txt
# 他の環境でのインストール
pip install -r requirements.txt
requirements/base.txt
fastapi==0.104.1
uvicorn[standard]==0.24.0
pydantic==2.5.0
pydantic-settings==2.1.0
# requirements/dev.txt
-r base.txt
pytest==7.4.3
pytest-asyncio==0.21.1
httpx==0.25.2
black==23.11.0
flake8==6.1.0
mypy==1.7.1
# requirements/prod.txt
-r base.txt
gunicorn==21.2.0

5. 基本的なアプリケーションの作成

Section titled “5. 基本的なアプリケーションの作成”
main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
Terminal window
# 開発サーバーの起動
uvicorn main:app --reload
# カスタムホストとポート
uvicorn main:app --host 0.0.0.0 --port 8000 --reload
# 本番環境での起動
uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4
Terminal window
# サーバー起動後、ブラウザでアクセス
http://localhost:8000/docs
Terminal window
# サーバー起動後、ブラウザでアクセス
http://localhost:8000/redoc

7. 実務でのベストプラクティス

Section titled “7. 実務でのベストプラクティス”
myproject/
├── app/
│ ├── __init__.py
│ ├── main.py
│ ├── api/
│ │ ├── __init__.py
│ │ └── v1/
│ │ ├── __init__.py
│ │ ├── endpoints/
│ │ │ ├── __init__.py
│ │ │ ├── users.py
│ │ │ └── items.py
│ │ └── api.py
│ ├── core/
│ │ ├── __init__.py
│ │ ├── config.py
│ │ └── security.py
│ ├── models/
│ │ ├── __init__.py
│ │ └── user.py
│ ├── schemas/
│ │ ├── __init__.py
│ │ └── user.py
│ └── services/
│ ├── __init__.py
│ └── user_service.py
├── tests/
│ ├── __init__.py
│ └── test_api.py
├── requirements.txt
├── .env
└── .gitignore
Terminal window
# .envファイルの作成
pip install python-dotenv
app/core/config.py
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
app_name: str = "My FastAPI App"
debug: bool = False
database_url: str
class Config:
env_file = ".env"
settings = Settings()

問題1: モジュールが見つからない

Section titled “問題1: モジュールが見つからない”

原因:

  • 仮想環境が有効化されていない
  • パッケージがインストールされていない

解決策:

Terminal window
# 仮想環境の確認
which python # macOS/Linux
where python # Windows
# パッケージの再インストール
pip install -r requirements.txt

問題2: ポートが既に使用されている

Section titled “問題2: ポートが既に使用されている”

原因:

  • 他のアプリケーションが同じポートを使用している

解決策:

Terminal window
# 別のポートを使用
uvicorn main:app --port 8001
# ポートの使用状況を確認
lsof -i :8000 # macOS/Linux
netstat -ano | findstr :8000 # Windows

これで、FastAPIの環境構築の基礎知識と実務での使い方を理解できるようになりました。