コラム Claude Code入門 更新:

Claude CodeでAPIを設計・実装する方法!REST APIをゼロから構築する実践ガイド

Claude CodeでAPIを設計・実装する方法!REST APIをゼロから構築する実践ガイド
目次 (24項目)
  1. 1. はじめに
  2. 2. 目次
  3. 3. 1. API設計をClaude Codeに相談する
  4. 要件からAPI設計を生成する
  5. 既存APIの設計レビュー
  6. 4. 2. エンドポイントの実装
  7. FastAPIでのAPI実装
  8. Expressでの実装(Node.js)
  9. 5. 3. バリデーションの実装
  10. 入力バリデーションの追加
  11. カスタムバリデーターの実装
  12. 6. 4. 認証・認可の実装
  13. JWT認証の実装
  14. ロールベースアクセス制御(RBAC)
  15. 7. 5. エラーハンドリングの統一
  16. グローバルエラーハンドラーの実装
  17. 8. 6. OpenAPIドキュメントの自動生成
  18. Swagger UIの設定
  19. APIドキュメントの品質チェック
  20. 9. 7. APIテストの自動生成
  21. pytestまたはJestでのAPIテスト
  22. コントラクトテストの設定
  23. 10. 8. まとめ
  24. 11. よくある質問(FAQ)

はじめに

「REST APIの設計原則がよくわからない」

「認証・バリデーション・エラーハンドリングを毎回ゼロから書くのが面倒」

「APIドキュメントを自動生成したい」

REST APIの実装には多くのボイラープレートが必要です。Claude Codeを使えば、設計から実装・テスト・ドキュメント生成まで一貫して効率化できます。

目次

  1. API設計をClaude Codeに相談する
  2. エンドポイントの実装
  3. バリデーションの実装
  4. 認証・認可の実装
  5. エラーハンドリングの統一
  6. OpenAPIドキュメントの自動生成
  7. APIテストの自動生成
  8. まとめ

1. API設計をClaude Codeに相談する

要件からAPI設計を生成する

> 以下の要件でREST APIを設計してください。

  システム:タスク管理アプリ
  必要な機能:
  - ユーザー登録・ログイン
  - タスクのCRUD操作
  - タスクのカテゴリ管理
  - タスクの検索・フィルタリング

  以下を含むAPI設計書を作成してください:
  - エンドポイント一覧(メソッド・パス・説明)
  - リクエスト/レスポンスのJSON形式
  - ステータスコードの定義
  - 認証方式(JWTを想定)
  - ページネーション方式

既存APIの設計レビュー

> 現在のAPIエンドポイントを分析して、
  RESTの原則に反している箇所を指摘してください。

  チェック観点:
  - リソース指向の命名(動詞ではなく名詞)
  - HTTPメソッドの適切な使用
  - ステータスコードの適切な使用
  - 一貫性のない命名規則
  - バージョニング戦略

2. エンドポイントの実装

FastAPIでのAPI実装

> 以下の設計でFastAPIのAPIを実装してください。

  エンドポイント:
  - GET /tasks - タスク一覧(ページネーション対応)
  - POST /tasks - タスク作成
  - GET /tasks/{id} - タスク詳細
  - PUT /tasks/{id} - タスク更新
  - DELETE /tasks/{id} - タスク削除

  使用技術:
  - FastAPI + Pydantic v2
  - SQLAlchemy 2.0 + asyncpg(非同期)
  - Alembicでマイグレーション管理

  ディレクトリ構成も提案してください。

Expressでの実装(Node.js)

> TypeScriptを使ったExpress APIを実装してください。

  要件:
  - ルーターを機能単位でモジュール化
  - Zodによるバリデーション
  - Prismaによるデータベースアクセス
  - エラーハンドリングのミドルウェア
  - ロギングミドルウェア(morgan)

3. バリデーションの実装

入力バリデーションの追加

> このAPIエンドポイントに適切なバリデーションを追加してください。

  バリデーションルール:
  - title:必須・最大200文字・HTMLタグ不可
  - due_date:ISO 8601形式・過去日付不可
  - priority:1〜5の整数のみ
  - tags:配列・最大10件・各タグは最大30文字

  バリデーションエラーは具体的なメッセージでレスポンスに含めてください。

カスタムバリデーターの実装

> 以下のカスタムバリデーションを実装してください:
  - メールアドレスが既に登録済みでないか確認する非同期バリデーター
  - 日付の範囲チェック(開始日 < 終了日)
  - 相互依存フィールドのバリデーション

4. 認証・認可の実装

JWT認証の実装

> JWT認証をこのAPIに実装してください。

  要件:
  - アクセストークン(有効期限15分)
  - リフレッシュトークン(有効期限7日)
  - リフレッシュトークンのローテーション
  - ブラックリストによるトークン無効化
  - HTTPS専用のSecure Cookie設定

  セキュリティのベストプラクティスに従ってください。

ロールベースアクセス制御(RBAC)

> このAPIにロールベースのアクセス制御を追加してください。

  ロール定義:
  - admin:すべての操作が可能
  - manager:チームのリソースのみ操作可能
  - user:自分のリソースのみ操作可能

  デコレーターまたはミドルウェアで実装してください。
  各エンドポイントに必要な権限をコメントで明記してください。

5. エラーハンドリングの統一

グローバルエラーハンドラーの実装

> APIのエラーレスポンスを統一してください。

  統一フォーマット:
  {
    "error": {
      "code": "RESOURCE_NOT_FOUND",
      "message": "指定されたタスクが見つかりません",
      "details": {...},
      "request_id": "uuid"
    }
  }

  対応するエラー:
  - バリデーションエラー(422)
  - 認証エラー(401)
  - 認可エラー(403)
  - リソース未発見(404)
  - レートリミット(429)
  - サーバーエラー(500)

  エラーコードの一覧表もドキュメント化してください。

6. OpenAPIドキュメントの自動生成

Swagger UIの設定

> このAPIのOpenAPI 3.0ドキュメントを自動生成する設定を行ってください。

  要件:
  - /docs でSwagger UIにアクセスできる
  - /redoc でReDocにアクセスできる
  - /openapi.json でOpenAPIスキーマを取得できる
  - すべてのエンドポイントに説明・例・レスポンス定義を追加
  - 認証方法をドキュメントに記載

APIドキュメントの品質チェック

> 現在のOpenAPIドキュメントを分析して、
  ドキュメントが不足・不正確な箇所を指摘して修正してください。

  チェック項目:
  - すべてのエンドポイントに説明があるか
  - リクエスト例が提供されているか
  - エラーレスポンスが定義されているか
  - deprecated(非推奨)なエンドポイントが適切にマークされているか

7. APIテストの自動生成

pytestまたはJestでのAPIテスト

> このAPIの統合テストを作成してください。

  使用ツール:pytest + httpx(FastAPIの場合)

  テストシナリオ:
  - 正常系:各エンドポイントの通常操作
  - 認証エラー:トークンなし・無効なトークン
  - バリデーションエラー:不正な入力値
  - 権限エラー:権限のないユーザーによるアクセス
  - 404エラー:存在しないリソースへのアクセス

  テスト用データベースはSQLiteを使ってCI環境でも動くようにしてください。

コントラクトテストの設定

> PactまたはDreddを使ってAPIのコントラクトテストを設定してください。
  フロントエンドとバックエンドのAPI仕様の乖離を自動検出できるようにしてください。

8. まとめ

Claude CodeでのAPI開発の効率化ポイント:

  • 要件からエンドポイント設計を自動生成できる
  • バリデーション・認証・エラーハンドリングのボイラープレートを自動作成
  • OpenAPIドキュメントを自動生成・検証できる
  • 統合テストをエンドポイントから自動生成できる

フレームワーク別推奨:

  • Python系:FastAPI + Pydantic v2(型安全でドキュメント自動生成)
  • Node.js系:Express + TypeScript + Zod

次回の第23回:データベースのマイグレーションでは、スキーマ変更を安全に管理する方法を解説します。

よくある質問(FAQ)

Q. GraphQLのAPI設計にも対応できますか?

A. はい。「FastAPIでGraphQLのAPIを実装してください。Strawberryを使ってください」のように指定することで対応できます。スキーマファーストの設計も相談できます。

Q. APIのバージョニングはどう設計すればいいですか?

A. URLパス(/api/v1/)・ヘッダー(Accept-Version)・クエリパラメータの3方式があります。Claude Codeに「このAPIにバージョニングを追加してください。ユースケースを教えてから最適な方式を提案してください」と相談することをお勧めします。

この記事はClaude Code入門シリーズ(第3部)の第22回です。← 第21回:Python開発第23回:DBマイグレーション →

ご質問はお問い合わせページからお気軽にどうぞ。

著者:R-LLM 開発者

フォロー

Webエンジニアとして10年以上のキャリアがあり、現在はWordPressとLLM(大規模言語モデル)の連携、および生成AIを活用した課題解決のための開発に日々取り組んでいます。

私の信条は、クライアントに寄り添った伴走支援と、最後まで責任を持ってやり遂げる「遂行力」です。これまでの膨大なトライ&エラーの蓄積により、自身の領域内であれば不具合も迅速に解決できる現場の知見を積み上げてきました。

このブログでは、一人のエンジニアとして私自身がAI技術に抱いている純粋な興味をベースに、日々の探求プロセスを発信しています。

生成AILLMをどのように実務に組み込み、価値へ繋げていくか。自身の検証結果だけでなく、実務者としての視点に基づいた「考察や推察」も含めて共有することで、同じように試行錯誤を続ける方々と知見を繋げていければと考えています。

関連記事

SHARE Xでシェア
← 前の投稿
投稿一覧に戻る
次の投稿 →