所要時間: 約45分 | 難易度: ★★★☆☆
この記事で作るもの
FastAPIを使用した、テストコード完結型の「タスク管理API」を構築します。 Claude Codeにバックエンドのロジックとテストを爆速で生成させ、Cursorで細かなリファクタリングとドキュメント整備を行うハイブリッドな開発フローを体験してもらいます。 単にコードを書くだけでなく、Claude Codeに「テストが通るまで修正を繰り返させる」という実務直結のエージェント機能を使いこなすのがゴールです。
先に確認するスペック・料金
AIコーディングを本格化させるなら、マシンスペック以上に「APIへの投資」が成否を分けます。 まず、Claude Codeを利用するにはAnthropicのAPIキー(Tier 2以上を推奨)が必要です。 Tier 1でも動きますが、レートリミット(利用制限)にすぐ引っかかるため、仕事で使うなら最低$50以上をデポジットしてTier 2に上げておくのが現実的です。
ハードウェアに関しては、メモリ16GB以上のMacBook(M1以降)または、WindowsならWSL2環境が必須です。 Claude Codeはローカルファイルをスキャンしてインデックスを作成するため、ディスク読み書きが速いNVMe SSDであることも重要になります。 私はRTX 4090を2枚挿した自作PCで検証していますが、Claude Code自体はクラウド側のモデル(Claude 3.5 Sonnet)を使うため、手元のGPU性能は不要です。
コストの目安として、1時間の集中した開発で$2〜$5程度のAPI使用料が発生します。 「高い」と感じるかもしれませんが、時給換算で数万円相当の働きを数ドルで買えると割り切れるかどうかが、AI時代のエンジニアの分かれ道です。
なぜこの方法を選ぶのか
現在、AIコーディングツールはCursor一強の時代が終わろうとしています。 Cursorの「Composer」機能は非常に強力ですが、複数のファイルにまたがる大規模なリファクタリングや、ターミナルでのテスト実行を伴う自律的なデバッグにおいては、Claude Codeの方が一枚上手です。 Claude Codeは単なるエディタ補助ではなく、シェルの操作権限を持つ「エージェント」だからです。
一方で、Claude Codeには「コードの視認性」という弱点があります。 ターミナル上のUI(TUI)は、コードの全体像を把握したり、細かなインデントを微調整したりするのには向いていません。 そこで、構造構築やテスト駆動開発は「Claude Code」に任せ、人間による最終確認と細かなUI修正は「Cursor」で行う。 この「ターミナルとエディタの役割分担」が、2024年末時点での開発効率を最大化させるベストプラクティスだと私は確信しています。
Step 1: 環境を整える
まずはClaude Codeをグローバルにインストールします。 これはnpm経由で提供されているため、Node.js(v18以上)が必要です。
# Claude Codeのインストール
npm install -g @anthropic-ai/claude-code
# インストール確認
claude --version
次に、作業用ディレクトリを作成してCursorで開きます。
私は常にプロジェクトのルートに.cursorrulesを配置してAIの挙動を縛りますが、Claude Codeもこれとは別に.claudecodeディレクトリを作成します。
mkdir ai-coding-test
cd ai-coding-test
cursor .
⚠️ 落とし穴:
Windows環境でPowerShellをそのまま使うと、Claude Codeのターミナル表示が崩れたり、パーミッションエラーでファイル操作に失敗したりすることが多々あります。
必ずWSL2(Ubuntu等)の上で動かすようにしてください。
また、claudeコマンドを初回実行する際、ブラウザでの認証を求められますが、このとき「管理者権限」が強すぎる環境だとブラウザが自動で立ち上がらない場合があります。その際は表示されたURLを手動でコピペして認証を通してください。
Step 2: 基本の設定
Claude Codeを起動し、プロジェクトの初期化を行います。 ここでAPIキーの設定が必要になります。
# Claude Codeの起動
claude
初回起動時に「Allow Claude to run commands?(コマンド実行を許可するか?)」といったプロンプトが出ます。
ここでは「Yes」を選択してください。
Claude Codeの真価は、ファイルを作成するだけでなく、pytestやnpm testを自分で叩いてエラーを修正する点にあります。
次に、FastAPIの基本構成を作るようClaude Codeに指示を出します。 私がよく使う「最短で品質を担保する」プロンプトは以下の通りです。
/init FastAPIを使ってTODO管理APIを作りたい。
以下の条件を守ってください。
1. poetryを使って依存関係を管理する。
2. ディレクトリ構成は app/ フォルダの下に main.py を置く。
3. pytestを使って全てのAPIエンドポイントの正常系テストを書く。
4. Pydantic v2を使用する。
(各項目の理由: poetryを使うのはライブラリの衝突を防ぐため。app/ディレクトリを分けるのは、コンテナ化やデプロイ時に標準的な構成にするためです。)
Step 3: 動かしてみる
Claude Codeがファイルを生成し終わったら、実際にテストを走らせます。 ここで凄いのは、Claude Codeが「自分でテストを実行し、失敗したら勝手に直す」ことです。
# Claude Codeのプロンプト内で入力
/run pytest
期待される出力
============================= test session starts =============================
platform linux -- Python 3.10.12, pytest-8.3.2
rootdir: /home/negi/ai-coding-test
collected 3 items
tests/test_main.py ... [100%]
============================== 3 passed in 0.15s ==============================
もしここでエラーが出た場合、Claude Codeは「エラーログを読み取り」「修正案を提示し」「再度実行する」というループを自律的に行います。 私は以前、複雑なDB移行スクリプトをClaude Codeに書かせた際、3回連続でエラーが出ましたが、人間が介入することなく4回目で正常終了まで持っていかれました。 この「放置できる安心感」がCursorのComposerとの決定的な違いです。
Step 4: 実用レベルにする
ここからはCursorの出番です。
Claude Codeが作ったバックエンドに対して、対話的に「ドキュメントの充実」と「例外処理の追加」を行います。
Cursor(Ctrl+I または Cmd+I)を開き、app/main.pyを参照しながら指示を出します。
# app/main.py の実用的なコード例(Claude Codeが生成し、Cursorで磨き上げた形)
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from typing import List, Optional
app = FastAPI(title="AI Optimized TODO API")
class Todo(BaseModel):
id: int
title: str
completed: bool = False
# メモリ上のDB(実務ではSQLAlchemyなどに置き換え)
db: List[Todo] = []
@app.get("/todos", response_model=List[Todo])
async def get_todos():
return db
@app.post("/todos", response_model=Todo)
async def create_todo(todo: Todo):
# 重複チェックなどのバリデーション(Cursorで追加)
if any(item.id == todo.id for item in db):
raise HTTPException(status_code=400, detail="ID already exists")
db.append(todo)
return todo
# 起動確認用のエンドポイント
@app.get("/health")
async def health_check():
return {"status": "healthy"}
「なぜこの構成にするのか」を解説します。 Claude Codeはロジックを組むのは得意ですが、エンドユーザーが読みやすいAPIドキュメント(Swagger UIのタイトルや説明文)を整えるのは、視覚的にコード全体を見渡せるCursorの方が作業効率が高いです。
また、Claude Codeで実装した後に、Cursorの「Code Review」機能を使って「セキュリティ上の欠陥がないか」をダブルチェックさせるのも有効です。 一人のAIに頼り切るのではなく、異なるモデルやUIを持つ複数のAIを「別々のエンジニア」として扱うのが私の流儀です。
よくあるトラブルと解決法
| エラー内容 | 原因 | 解決策 |
|---|---|---|
| Claude Codeが勝手にファイルを削除した | 指示が曖昧でリファクタリングを誤認した | /undo コマンドで直前の操作を戻す。Gitでコミットしておく。 |
| APIレートリミットに達した | AnthropicのTierが低い、または短時間の連投 | 1分ほど待つか、不要なファイルのインデックス読み込みを制限する。 |
| CursorのComposerと競合する | 両方で同時にファイルを編集している | Claude Codeで作業中はCursorの自動保存をオフにするか、ファイルを閉じておく。 |
次のステップ
この記事の内容をマスターしたら、次は「MCP(Model Context Protocol)」の導入に挑戦してください。 Claude CodeはMCPサーバーを介して、Google SearchやGitHub、さらには社内の独自データベースと直接連携できるようになります。 例えば「GitHubのIssueを読み取って、その内容を修正し、プルリクエストを投げるまでを自動化する」といったことが、ターミナルから一撃で可能になります。
また、RTX 4090などの強力なGPUを持っているなら、ローカルLLM(Llama 3.1など)をMCP経由でClaude Codeから呼び出す「ハイブリッド構成」も面白いでしょう。 機密性の高いコードはローカルモデルに、複雑な設計はClaude 3.5 Sonnetにといった使い分けが、これからのエンジニアの標準装備になります。
まずは、今回作ったTODO APIに「DB連携(SQLiteなど)」を追加するよう、Claude Codeに命じてみてください。 その進化の速さに、きっと驚くはずです。
よくある質問
Q1: Claude Codeは日本語で指示しても大丈夫ですか?
全く問題ありません。Claude 3.5 Sonnetが裏側で動いているため、日本語の意図を正確に汲み取ってくれます。ただし、生成されるコードのコメントやログ出力を英語にしたい場合は、明示的に「コメントは英語で」と指示する必要があります。
Q2: どちらか片方だけ使うならどっちがおすすめですか?
現時点での完成度ならCursorです。しかし、ターミナル操作を含めた「開発の自動化」を体験したいなら、間違いなくClaude Codeです。エンジニアとしての市場価値を上げたいなら、両方を状況に応じて使い分けられるようになっておくべきです。
Q3: APIコストを節約するコツはありますか?
.claudeignore ファイルを作成して、node_modules や venv、ログファイルなど、AIが読む必要のないファイルを徹底的に除外してください。Claude Codeがスキャンするトークン量を減らすことが、ダイレクトに節約につながります。
📦 この記事に関連する商品(楽天メインで価格確認)
HHKB Professional HYBRID Type-SAIへの指示出しでタイピング量が増えるため、疲労の少ない打鍵感は開発効率に直結します。
※アフィリエイトリンクを含みます


