生成AI入門 2026.04.19
【2026年版】Claude Code vs Cursor vs GitHub Copilot|コード支援AI徹底比較
3ツールの基本比較(2026年版)
| 項目 | Claude Code | Cursor | GitHub Copilot |
|---|---|---|---|
| 月額 | Pro $20 / Max $100 | Free / Pro $20 | Individual $10 |
| 動作形式 | ターミナル(CLI) | IDEネイティブ | VS Code拡張 |
| AIモデル | Claude Sonnet 4.5 | GPT-4o / Claude | Copilot(独自) |
| 得意な操作 | リファクタリング・バグ修正 | 補完・インライン編集 | コード補完・自動補完 |
| CLAUDE.md相当 | CLAUDE.md | .cursorrules | カスタム命令 |
使い分けフローチャート
既存のVS Code環境をそのまま使いたい
→ GitHub Copilot ($10/月) — 最もシームレス
ファイル全体の大規模な書き換えが必要
→ Claude Code ($20/月) — 最もパワフル
自動補完をIDEに深く統合したい
→ Cursor ($20/月) — 最もIDE統合が良い
3つすべての機能が必要
→ Claude Code + Copilot ($30/月) を推奨
(大規模作業=Claude Code, 日常補完=Copilot)
Claude Code実装例:大規模リファクタリング
# 既存のJSファイルをTypeScriptに一括変換
# Claude Codeならこれを自然言語で依頼できる
# CLAUDE.mdに書いておく設定:
# - すべてのJSを.tsに変換する
# - strict: true を維持する
# - JSDocコメントをTypeScript型に変換する
# Claude Codeに頼むプロンプト:
# 「src/utils/ 配下のすべての .js ファイルを TypeScript に変換してください。
# 型は推論できるものは推論、不明なものはunknownを使ってください」
# Claude CodeがやってくれることをAPI経由で確認するテスト:
python3 -c "
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model='claude-sonnet-4-5',
max_tokens=100,
messages=[{'role': 'user', 'content': 'Hello'}]
)
print(response.content[0].text[:50])
"
APIで3ツールのどれを使うか自動選択する
# tool_router.py
# タスクの種類に応じてClaude/GPT/Copilotを自動選択する
import anthropic
import openai
claude = anthropic.Anthropic()
oai = openai.OpenAI()
def route_coding_task(task: str, code: str = "") -> dict:
"""コーディングタスクを最適なモデルに振り分ける"""
task_lower = task.lower()
# 大規模リファクタリング → Claude Sonnet
if any(kw in task_lower for kw in ["リファクタリング", "全体", "変換", "移行", "型"]):
response = claude.messages.create(
model="claude-sonnet-4-5",
max_tokens=2000,
messages=[{"role": "user", "content": f"タスク: {task}\n\nコード:\n```\n{code}\n```"}]
)
return {
"model": "Claude Sonnet 4.5",
"answer": response.content[0].text,
"cost": (response.usage.input_tokens * 3.00 + response.usage.output_tokens * 15.00) / 1_000_000
}
# 短い補完・説明 → Claude Haiku(安価)
elif any(kw in task_lower for kw in ["説明", "コメント", "命名"]):
response = claude.messages.create(
model="claude-haiku-4-5-20251001",
max_tokens=256,
messages=[{"role": "user", "content": f"{task}\n{code}"}]
)
return {
"model": "Claude Haiku",
"answer": response.content[0].text,
"cost": (response.usage.input_tokens * 0.80 + response.usage.output_tokens * 4.00) / 1_000_000
}
# デフォルト → GPT-4o mini(最安)
else:
response = oai.chat.completions.create(
model="gpt-4o-mini", max_tokens=512,
messages=[{"role": "user", "content": f"{task}\n{code}"}]
)
tokens = response.usage.total_tokens
return {
"model": "GPT-4o mini",
"answer": response.choices[0].message.content,
"cost": tokens * 0.15 / 1_000_000
}
# 使用例
result = route_coding_task(
"この関数にdocstringとコメントを追加してください",
"def calc(a, b): return a * b"
)
print(f"モデル: {result['model']} | コスト: ${result['cost']:.5f}")
print(result["answer"])