fastapi-templates について
fastapi-templates は、FastAPI で API を開発する人向けのスキルです。プロジェクト構成、非同期処理、依存性注入、テストの指針を示し、コードの代筆ではなく設計と実装方法を案内します。
主な機能
- 01FastAPI のプロジェクト構成ガイド
- 02非同期ルートと DB のパターン
- 03Depends による依存性注入
- 04ミドルウェアとエラー処理の指針
- 05テスト設定とパターン
活用シーン
- 01FastAPI アプリの新規開発
- 02非同期 REST API とマイクロサービスの構築
- 03テストを含む API プロジェクトの設計
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ full-stack-skills/ python-skills --skill fastapi-templatesインストール後、Claude Code で/fastapi-templatesを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSE.txtagents/openai.yamlexamples/advanced-usage.mdbasic-usage.mdintegration.mdreferences/details.md詳細
出典に関する声明:本スキルの内容は wshobson/agents を出典としています(MIT License, Copyright (c) 2024 Seth Hobson。ライセンス全文は同じディレクトリの
LICENSE.txtを参照してください)。 使用、改変、再配布は当該 MIT ライセンスの条項に従い、著作権表示を保持する必要があります。
日本語の説明
本スキルでは、フルスタック開発に関するベストプラクティスとパターンを案内します。
name: fastapi-templates description: Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.
FastAPI プロジェクトテンプレート
非同期パターン、依存性注入、ミドルウェアを取り入れ、高性能 API を構築するためのベストプラクティスを備えた、本番環境ですぐに使える FastAPI プロジェクト構成です。
このスキルを使用する場面
- FastAPI プロジェクトをゼロから開始するとき
- Python で非同期 REST API を実装するとき
- 高性能な Web サービスやマイクロサービスを構築するとき
- PostgreSQL や MongoDB を使った非同期アプリケーションを作成するとき
- 適切な構成とテストを備えた API プロジェクトをセットアップするとき
基本概念
1. プロジェクト構成
推奨レイアウト:
app/
├── api/ # API routes
│ ├── v1/
│ │ ├── endpoints/
│ │ │ ├── users.py
│ │ │ ├── auth.py
│ │ │ └── items.py
│ │ └── router.py
│ └── dependencies.py # Shared dependencies
├── core/ # Core configuration
│ ├── config.py
│ ├── security.py
│ └── database.py
├── models/ # Database models
│ ├── user.py
│ └── item.py
├── schemas/ # Pydantic schemas
│ ├── user.py
│ └── item.py
├── services/ # Business logic
│ ├── user_service.py
│ └── auth_service.py
├── repositories/ # Data access
│ ├── user_repository.py
│ └── item_repository.py
└── main.py # Application entry
2. 依存性注入
FastAPI に組み込まれている Depends を使った DI システム:
- データベースセッションの管理
- 認証/認可
- 共通のビジネスロジック
- 設定の注入
3. 非同期パターン
async/await の適切な使用:
- 非同期のルートハンドラー
- 非同期のデータベース操作
- 非同期のバックグラウンドタスク
- 非同期のミドルウェア
詳細な作業例とパターン
詳細なセクション(## Implementation Patterns から始まります)は references/details.md にあります。上記の概要だけでは不十分な場合は、このファイルを読んでください。
テスト
# tests/conftest.py
import pytest
import asyncio
from httpx import AsyncClient
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
from sqlalchemy.orm import sessionmaker
from app.main import app
from app.core.database import get_db, Base
TEST_DATABASE_URL = "sqlite+aiosqlite:///:memory:"
@pytest.fixture(scope="session")
def event_loop():
loop = asyncio.get_event_loop_policy().new_event_loop()
yield loop
loop.close()
@pytest.fixture
async def db_session():
engine = create_async_engine(TEST_DATABASE_URL, echo=True)
async with engine.begin() as conn:
await conn.run_sync(Base.metadata.create_all)
AsyncSessionLocal = sessionmaker(
engine, class_=AsyncSession, expire_on_commit=False
)
async with AsyncSessionLocal() as session:
yield session
@pytest.fixture
async def client(db_session):
async def override_get_db():
yield db_session
app.dependency_overrides[get_db] = override_get_db
async with AsyncClient(app=app, base_url="http://test") as client:
yield client
# tests/test_users.py
import pytest
@pytest.mark.asyncio
async def test_create_user(client):
response = await client.post(
"/api/v1/users/",
json={
"email": "[email protected]",
"password": "testpass123",
"name": "Test User"
}
)
assert response.status_code == 201
data = response.json()
assert data["email"] == "[email protected]"
assert "id" in data
能力の範囲
✅ 得意なこと
- フルスタック開発に関するベストプラクティス
- コードアーキテクチャ設計の指針
- パフォーマンス最適化の提案
⚠️ 情報が必要なこと
- 具体的なプロジェクトの背景
- 技術スタックの情報
❌ 対応範囲外
- 技術分野以外のビジネス上の意思決定
- 具体的なコードの実装(指針のみを提供)
ワークフロー
Step 1: 要件分析
プロジェクトの要件と技術的な制約を理解します。
Step 2: アーキテクチャ設計
システムアーキテクチャとコンポーネントの分割を設計します。
Step 3: 実装の指針
具体的な実装の提案とコードパターンを提示します。
Step 4: コードレビュー
コードの品質とベストプラクティスへの準拠状況を確認します。
Step 5: 最適化の提案
パフォーマンスの最適化と改善案を提示します。
注意点
1. 過剰設計
単純な場面で複雑な設計パターンを使わないようにします。
2. パフォーマンスの軽視
特に本番環境では、パフォーマンスの最適化を軽視しないでください。
3. セキュリティ上の考慮事項
セキュリティとデータ保護を常に考慮してください。
4. テストカバレッジ
特に境界条件について、十分なテストカバレッジを確保してください。
5. ドキュメントの保守
ドキュメントをコードと同期させて更新してください。