- Claude CodeはPython開発の全フェーズ(設計・実装・テスト・デプロイ)を一貫してサポートする
- FastAPI・Django・Flask のAPI構築からデータ処理パイプラインまでプロンプト例付きで解説
- CLAUDE.mdにPythonプロジェクト規約を定義すればチーム開発の品質を大幅に向上できる
Pythonは2026年現在もSES案件で最も需要の高い言語の一つです。データ分析、バックエンドAPI、機械学習、自動化スクリプト——あらゆる領域でPythonスキルが求められています。結論から言うと、Claude Codeを活用すれば、Python開発の生産性を3〜5倍に向上させることが可能です。
この記事はClaude Code完全攻略シリーズの第33回として、Python開発に特化したClaude Codeの活用テクニックを実践的なプロンプト例とともに解説します。
- Claude Code × Pythonの相性が良い理由と基本セットアップ
- FastAPI/Djangoを使ったAPI開発の効率化テクニック
- pandasやPolarsを使ったデータ処理パイプラインの構築方法
- pytest × Claude Codeでテストカバレッジを飛躍的に上げる方法
- SES現場で即使えるPython開発プロンプトテンプレート集
Claude Code × Python開発が最強の組み合わせである理由
Pythonの特性とAIコーディングの親和性
Pythonはインデントベースのシンプルな構文を持ち、AIが生成するコードの精度が非常に高い言語です。Claude Codeは以下の点でPython開発に特に威力を発揮します。
1. 豊富なライブラリエコシステムへの対応
Claude Codeは主要なPythonライブラリ(pandas、NumPy、FastAPI、Django、SQLAlchemy、requestsなど)の使い方を深く理解しています。ライブラリの組み合わせパターンやベストプラクティスを踏まえたコードを一発で生成できます。
2. 型ヒントの自動付与
Python 3.10以降で主流となったtype hintsを自動的に付与し、mypyやpyrightと連携した静的型チェックまで考慮したコードを生成します。
3. 仮想環境・依存管理の理解
venv、poetry、uv、pipenvなどのパッケージ管理ツールの違いを理解し、プロジェクトに適した依存管理の設定を提案します。
CLAUDE.mdでPythonプロジェクト規約を定義する
Python開発でClaude Codeの精度を最大化するには、プロジェクトルートのCLAUDE.mdにPython固有の規約を明示することが重要です。
# CLAUDE.md - Python プロジェクト設定
## 技術スタック
- Python 3.12
- FastAPI + Uvicorn
- SQLAlchemy 2.0 (async)
- Alembic (マイグレーション)
- pytest + pytest-asyncio
- Ruff (linter/formatter)
## コーディング規約
- type hints必須(戻り値含む)
- docstring: Google style
- 非同期処理: async/awaitを標準で使用
- import順序: stdlib → third-party → local(isortに準拠)
## ディレクトリ構成
- app/ - メインアプリケーション
- app/api/ - APIエンドポイント
- app/models/ - SQLAlchemyモデル
- app/schemas/ - Pydanticスキーマ
- app/services/ - ビジネスロジック
- tests/ - テストコード
この設定により、Claude Codeはプロジェクトのコンテキストを正確に把握し、規約に沿ったコードを一貫して生成するようになります。詳しくはCLAUDE.md書き方完全ガイドをご覧ください。
FastAPIを使ったAPI開発をClaude Codeで加速する
プロジェクト初期セットアップの自動化
FastAPIプロジェクトの初期構築は、Claude Codeに任せることで大幅に時間短縮できます。
Claude Codeプロンプト例:
「FastAPIプロジェクトを初期構築して。以下の要件で:
- async SQLAlchemy 2.0 + PostgreSQL
- Alembicマイグレーション設定込み
- JWT認証ミドルウェア
- CORSミドルウェア
- 環境変数管理(pydantic-settings)
- Docker Compose(app + db + redis)
- pyproject.toml(uv対応)」
Claude Codeはこのプロンプト1つで、10〜15ファイルの完全なプロジェクトスケルトンを生成します。手動で構築すれば2〜3時間かかる作業が、数分で完了します。
CRUDエンドポイントの一括生成
実務で最も時間がかかるのがCRUDエンドポイントの実装です。Claude Codeなら、モデル定義からエンドポイントまで一気に生成できます。
Claude Codeプロンプト例:
「Userモデルに対するCRUDエンドポイントを作成して。
- Pydanticスキーマ(Create/Update/Response)
- SQLAlchemyモデル
- リポジトリパターンのService層
- APIルーター(/api/v1/users)
- ページネーション対応(limit/offset)
- 入力バリデーション
- エラーハンドリング(404/409)
- pytestテスト(各エンドポイント)」
このアプローチにより、1つのリソースに対するCRUDが15〜20分で完成します。従来の手作業では半日以上かかることも珍しくありませんでした。
認証・認可の実装
JWT認証やOAuth2の実装は複雑になりがちですが、Claude Codeは FastAPI のセキュリティ機能を熟知しています。
# Claude Codeが生成するJWT認証の例
from fastapi import Depends, HTTPException, status
from fastapi.security import HTTPAuthorizationCredentials, HTTPBearer
from jose import JWTError, jwt
from datetime import datetime, timedelta
security = HTTPBearer()
async def get_current_user(
credentials: HTTPAuthorizationCredentials = Depends(security),
db: AsyncSession = Depends(get_db),
) -> User:
"""JWTトークンからユーザーを取得する."""
try:
payload = jwt.decode(
credentials.credentials,
settings.SECRET_KEY,
algorithms=[settings.ALGORITHM],
)
user_id: int = payload.get("sub")
if user_id is None:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="トークンが無効です",
)
except JWTError:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="トークンの検証に失敗しました",
)
user = await user_service.get_by_id(db, user_id)
if user is None:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail="ユーザーが見つかりません",
)
return user
データ処理パイプラインの構築
pandasからPolarsへの移行支援
SES案件ではデータ処理の高速化ニーズが高まっており、pandasからPolarsへの移行案件が増えています。Claude Codeはこの移行を強力にサポートします。
Claude Codeプロンプト例:
「このpandasコードをPolarsに書き換えて。パフォーマンスが最大化されるようにlazy evaluationを活用して。
元コード: [pandasコードを貼り付け]」
Claude Codeは単純な構文変換だけでなく、Polarsのlazy API(scan_csv → filter → group_by → collect)を活用した最適なクエリプランを生成します。
ETLパイプラインの構築
# Claude Codeが生成するETLパイプラインの例
import polars as pl
from pathlib import Path
def build_sales_pipeline(input_dir: Path, output_path: Path) -> pl.DataFrame:
"""売上データETLパイプライン."""
result = (
pl.scan_csv(input_dir / "*.csv")
.filter(pl.col("status") == "completed")
.with_columns(
pl.col("created_at").str.to_datetime("%Y-%m-%d %H:%M:%S"),
(pl.col("unit_price") * pl.col("quantity")).alias("total_amount"),
)
.group_by(
pl.col("created_at").dt.month().alias("month"),
"category",
)
.agg(
pl.col("total_amount").sum().alias("revenue"),
pl.col("order_id").n_unique().alias("order_count"),
pl.col("total_amount").mean().alias("avg_order_value"),
)
.sort("month", "category")
.collect()
)
result.write_parquet(output_path)
return result

バッチ処理の並列化
大量データのバッチ処理では、concurrent.futuresやasyncioを使った並列処理が必要です。Claude Codeは適切な並列化パターンを選択してくれます。
Claude Codeプロンプト例:
「このバッチ処理を並列化して。I/Oバウンドな処理なのでasyncioベースで。
エラーハンドリングとリトライ機能も入れて。
進捗表示(tqdm)も追加して。」
Webスクレイピングの効率化
Beautiful Soup + httpxによるスクレイピング
SES案件ではデータ収集タスクも多く、Webスクレイピングのスキルが求められます。
# Claude Codeが生成する非同期スクレイピングの例
import asyncio
import httpx
from bs4 import BeautifulSoup
from dataclasses import dataclass
@dataclass
class JobPosting:
title: str
company: str
salary_range: str
skills: list[str]
url: str
async def scrape_job_listings(
urls: list[str],
max_concurrent: int = 5,
) -> list[JobPosting]:
"""求人情報を非同期で収集する."""
semaphore = asyncio.Semaphore(max_concurrent)
results: list[JobPosting] = []
async def fetch_one(client: httpx.AsyncClient, url: str) -> JobPosting | None:
async with semaphore:
try:
response = await client.get(url, timeout=30.0)
response.raise_for_status()
soup = BeautifulSoup(response.text, "html.parser")
return parse_job_posting(soup, url)
except httpx.HTTPError as e:
logger.warning(f"Failed to fetch {url}: {e}")
return None
async with httpx.AsyncClient() as client:
tasks = [fetch_one(client, url) for url in urls]
for result in await asyncio.gather(*tasks):
if result:
results.append(result)
return results
pytest × Claude Codeでテスト品質を劇的に向上させる
テスト駆動開発(TDD)のワークフロー
Claude Codeを使ったTDDは非常に効率的です。まずテストを書かせ、次に実装を生成する流れで進めます。
Claude Codeプロンプト例:
「UserServiceクラスのテストをpytestで書いて。
以下のメソッドをカバーして:
- create_user(正常系・重複メール・バリデーションエラー)
- get_user_by_id(存在する・しない)
- update_user(正常系・権限なし・楽観ロック)
- delete_user(ソフトデリート確認)
fixtureはconftest.pyに分離して。
async対応でお願い。」
テストカバレッジの向上
Claude Codeプロンプト例:
「coverage reportを分析して、カバレッジが低いモジュールの
テストを追加して。特にエッジケースとエラーパスを重点的に。
目標カバレッジ: 85%以上」
Claude Codeは既存のテストコードとカバレッジレポートを読み取り、不足しているテストケースを特定して自動生成します。詳しいテスト生成手法はClaude Codeテスト生成ガイドをご覧ください。
モック戦略の最適化
外部API呼び出しやデータベースアクセスのモック戦略もClaude Codeに任せられます。
# Claude Codeが生成するモック戦略の例
import pytest
from unittest.mock import AsyncMock, patch
from httpx import Response
@pytest.fixture
def mock_external_api():
"""外部APIのモック."""
with patch("app.services.payment.httpx.AsyncClient") as mock:
client = AsyncMock()
mock.return_value.__aenter__.return_value = client
client.post.return_value = Response(
status_code=200,
json={"transaction_id": "txn_123", "status": "success"},
)
yield client
@pytest.mark.asyncio
async def test_process_payment_success(mock_external_api, db_session):
"""決済処理の正常系テスト."""
service = PaymentService(db_session)
result = await service.process_payment(
user_id=1,
amount=10000,
currency="JPY",
)
assert result.status == "success"
assert result.transaction_id == "txn_123"
mock_external_api.post.assert_called_once()
CLIツール・自動化スクリプトの開発
Typerを使ったCLIツール構築
SES現場では運用自動化のCLIツール開発が求められることが多く、Claude Codeはtyperやclickを使ったCLI構築を得意としています。
Claude Codeプロンプト例:
「Typerを使ったCLIツールを作って。
機能:
- DBバックアップ(PostgreSQL pg_dump → S3アップロード)
- ログローテーション
- ヘルスチェック(複数エンドポイント)
- レポート生成(CSV/Excel出力)
各コマンドに--dry-runオプション付き。
Rich で見やすいテーブル出力にして。」
定期実行スクリプトの構築
# Claude Codeが生成する運用スクリプトの例
import typer
from rich.console import Console
from rich.table import Table
from datetime import datetime
app = typer.Typer(help="SES運用自動化ツール")
console = Console()
@app.command()
def healthcheck(
endpoints: list[str] = typer.Argument(..., help="チェック対象のURL"),
timeout: int = typer.Option(10, help="タイムアウト秒数"),
dry_run: bool = typer.Option(False, help="実行せずに確認のみ"),
) -> None:
"""複数エンドポイントのヘルスチェックを実行する."""
table = Table(title="ヘルスチェック結果")
table.add_column("エンドポイント", style="cyan")
table.add_column("ステータス", justify="center")
table.add_column("応答時間", justify="right")
for endpoint in endpoints:
if dry_run:
table.add_row(endpoint, "⏭️ SKIP", "-")
continue
status, response_time = check_endpoint(endpoint, timeout)
status_icon = "✅" if status == 200 else "❌"
table.add_row(
endpoint,
f"{status_icon} {status}",
f"{response_time:.0f}ms",
)
console.print(table)
SES現場で使えるPython開発プロンプトテンプレート集
テンプレート1: 既存コードのリファクタリング
このPythonコードをリファクタリングして。
改善ポイント:
1. type hintsを全関数に追加
2. 関数の責務を分割(1関数1責務)
3. エラーハンドリングを適切に追加
4. docstring(Google style)を追加
5. マジックナンバーを定数に置換
品質基準: ruff + mypy strict で警告ゼロ
テンプレート2: パフォーマンス最適化
このPythonスクリプトのパフォーマンスを改善して。
現状: [処理内容と実行時間を記載]
目標: 実行時間を50%以下に短縮
手法の優先度:
1. アルゴリズム改善
2. データ構造の最適化
3. 並列/非同期処理の導入
4. キャッシュの活用
ベンチマーク結果も出力して。
テンプレート3: API統合
以下の外部APIとの統合コードを書いて。
API仕様: [OpenAPI specまたはドキュメントURL]
要件:
- httpx async client使用
- リトライ機能(exponential backoff)
- レート制限の遵守
- レスポンスのPydanticモデルでのバリデーション
- 包括的なエラーハンドリング
- pytest テスト(モック使用)
Python開発でClaude Codeを使う際の注意点
1. ライブラリバージョンの確認
Claude Codeが生成するコードは最新バージョンのAPIを使用していることが多いため、プロジェクトで使用しているバージョンとの互換性を確認しましょう。CLAUDE.mdに使用バージョンを明記することで、この問題を軽減できます。
2. セキュリティの考慮
特にWebアプリケーションでは、生成されたコードのセキュリティをレビューすることが重要です。SQLインジェクション、XSS、CSRF対策が適切に実装されているか確認しましょう。セキュリティ面の詳細はClaude Codeセキュリティガイドを参照してください。
3. 非同期処理のデッドロック
async/awaitのコードでは、asyncio.gatherとasyncio.Semaphoreの組み合わせでデッドロックが発生する場合があります。Claude Codeが生成したコードでも、並行数の制限やタイムアウトの設定を必ず確認しましょう。
まとめ
Claude CodeはPython開発のあらゆるフェーズで威力を発揮する強力なパートナーです。特にFastAPIを使ったAPI開発、pandasやPolarsを使ったデータ処理、pytestを使ったテスト自動化において、開発速度を飛躍的に向上させます。
Claude Code × Python開発で押さえるべきポイント:
CLAUDE.mdにPython固有の規約を定義して精度を最大化する- CRUDエンドポイントやテストコードなど定型作業はClaude Codeに任せる
- TDD(テスト駆動開発)のワークフローでコード品質を担保する
- パフォーマンス最適化もAIに分析・提案させる
- セキュリティ面は必ず人間がレビューする
SES案件でPython開発に携わるエンジニアは、Claude Codeの活用スキルを身につけることで、単価アップと案件獲得の両方に大きなアドバンテージを得られるでしょう。