note 版:https://note.com/mintototo1/n/na615d239961f
Zenn 版:https://zenn.dev/mintototo1/articles/compare-claude-code-vs-cursor-vs-aider
3ツール全部本番で使って、全部実プロダクトで動かした。
月$60課金した月もある。もう答えが出てる。
Cursor ユーザーへ:これ読んだら乗り換えるかもしれない。
▼ 3ツールの基本スペック(2026年5月時点)
| Claude Code | Cursor | Aider | |
|---|---|---|---|
| 価格 | $20/月(Max)または API 従量 | $20/月(Pro) | 無料(API代別) |
| 動作場所 | ターミナル(CLI) | VSCode ベース IDE | ターミナル(CLI) |
| 採用モデル | Claude 3.5/3.7/4.x Sonnet | GPT-4o / Claude 3.5 | GPT/Claude 選択可 |
| コンテキスト | プロジェクト全体 | ファイル単位 +@指定 | git diff + /add で指定 |
| 自律性 | 高(エージェント動作) | 中(提案ベース) | 中(commit 単位) |
俺は今、4本の SaaS を一人で本番運用してる。全部のプロセスで3ツールを使ってきた。その上での比較だ。
▼ Claude Code の実態
開発フロー
Claude Code の核心は、CLAUDE.md でプロジェクトの文脈を渡すことだ。これを置いておくだけで、次のセッションでも文脈が引き継がれる。
# プロジェクト:不動産向け動画 SaaS
## スタック
- Next.js 15 (App Router)
- Supabase (PostgreSQL + Auth + Storage)
- Stripe (Subscription)
- Vercel (Deploy)
## DB テーブル
users / properties / videos / subscriptions / tenants
## コーディングルール
- Server Actions を使う(API routes は webhook のみ)
- エラーは console.error + Sentry 送信
- env は lib/env.ts で一元管理
- 型は /types/database.ts の Database 型から生成
「Stripe の webhook 処理を追加して」と言えば、CLAUDE.md を読んで既存の書き方に合わせてくれる:
// app/api/webhooks/stripe/route.ts
import { NextRequest, NextResponse } from 'next/server'
import Stripe from 'stripe'
import { stripe } from '@/lib/stripe'
import { createClient } from '@/lib/supabase/server'
export async function POST(req: NextRequest) {
const body = await req.text()
const sig = req.headers.get('stripe-signature')!
let event: Stripe.Event
try {
event = stripe.webhooks.constructEvent(
body,
sig,
process.env.STRIPE_WEBHOOK_SECRET!
)
} catch (err) {
return NextResponse.json({ error: 'Webhook Error' }, { status: 400 })
}
const supabase = await createClient()
switch (event.type) {
case 'customer.subscription.created':
case 'customer.subscription.updated': {
const sub = event.data.object as Stripe.Subscription
await supabase
.from('subscriptions')
.upsert({
stripe_subscription_id: sub.id,
stripe_customer_id: sub.customer as string,
status: sub.status,
current_period_end: new Date(sub.current_period_end * 1000).toISOString()
})
break
}
case 'invoice.payment_failed': {
const invoice = event.data.object as Stripe.Invoice
await supabase
.from('subscriptions')
.update({ status: 'past_due' })
.eq('stripe_customer_id', invoice.customer as string)
break
}
}
return NextResponse.json({ received: true })
}
lib/supabase/server の書き方、subscriptions テーブルの列名、全部プロジェクト内のファイルを読んで合わせてくれた。俺が指定したのはゼロだ。
よくなかった点
コストが読めない。Max プランは月$20で使い放題だが、API 従量課金なら1日$10超えることもある。あとは「自信満々に古い仕様を書く」問題が残ってる。新しいライブラリの最新 API を知らないことがあるので、必ずレビューは必要だ。
向いてるシーン: 新機能の一気実装、ゼロから骨格を作る、リファクタリング
▼ Cursor の実態
補完とチャットは優秀
既存コードへの補完は Cursor が一番快適だった。Tab を押すたびに次の行を先読みしてくれる感覚は確かにある。
小さい修正なら Cursor が速い:
// 既存コード(型が甘かった)
const { data } = await supabase.from('users').select('*').eq('id', userId).single()
// Cursor に「型を厳密にして」と言うだけで
const { data, error } = await supabase
.from('users')
.select('id, email, name, plan, created_at')
.eq('id', userId)
.single<Pick<Database['public']['Tables']['users']['Row'],
'id' | 'email' | 'name' | 'plan' | 'created_at'
>>()
if (error) throw error
こういう単一ファイル内の修正は体感的に Cursor が速い。
複数ファイルにまたがると崩れる
プロジェクト全体の把握が弱い。「Stripe の customer_id を users テーブルに追加して、webhook でも使うようにして」だとこうなる:
# Cursor でのやり取り(実際に近い)
You: stripe_customer_id を users に追加して webhook でも使うようにして
Cursor: どのファイルを参照しますか?@で指定してください
You: @lib/stripe @types/database.ts @app/api/webhooks/stripe
Cursor: migration ファイルはどこに置きますか?
You: supabase/migrations/
Cursor: (migration 作成) 他に変更が必要なファイルはありますか?
You: ...(自分でやる)
大きなタスクで俺がコンテキストを渡す係になると、それだけで20〜30分飛ぶ。
向いてるシーン: 既存コードの部分修正、細かいバグ修正、補完ベースの日常作業
▼ Aider の実態
git との相性は本物
変更ごとに自動 commit が作られるのは本当に良かった。「ここまで戻れる」が明確になる。
# Aider のセッション例
$ aider --model claude-3-5-sonnet-20241022
/add app/api/webhooks/stripe/route.ts lib/stripe.ts types/database.ts
> stripe_customer_id を users に追加して、webhook で upsert するコードを書いて
# 変更後に自動で commit
Commit 9f3c1a2 feat: add stripe_customer_id to users and webhook upsert
無料(API 代だけ)で始められるのも強い。初めて AI コーディングを試すなら Aider が一番入りやすい。
自律性の低さが限界
複雑なタスクで詰まったとき、Aider は止まる。Claude Code はエラーが出たら自分でデバッグして再試行する。Aider は「どうしますか?」と聞いてくる。一人で4本を動かしてると、この差が毎日出てくる。
あとはセッションをまたぐとコンテキストがリセットされる。/add でファイルを追加し直すところから始まる。
向いてるシーン: 単発の修正タスク、AI コーディングの最初のステップ
▼ 各ツールで踏んだ地雷(実体験)
俺が実際に踏んだやつだけ書く。
Claude Code の地雷
-
.env.localの値を推測でコードにハードコードしようとした(secret が git に入りかけた) - 「テストを実行して確認しました」と報告してきたが、テストが実際には走ってなかった(2回経験)
- 新しいライブラリの最新 API を知らないことがある。バージョンを指定した上で「公式 README を見て」と言う必要がある
Cursor の地雷
-
.cursorrulesに書いた内容を長いタスクの途中で無視する(大きな Composer タスクで特に起きる) - 複数ファイルを Composer で変更したとき、Apply 後に古いコードが残ることがあった
- Tab 補完が長いコメントを誤認識して、コメントごと消すことがあった
Aider の地雷
-
/addで追加してないファイルを推測で修正することがある(意図しない変更が git に入る) -
--modelを指定しないと古いデフォルトモデルになる - セッション中のコンテキストが長くなると、前半の指示を忘れる
▼ 俺が Claude Code に全振りした理由
3つだけ書く。
1. 「やっといて」が通じる
俺のスタイルは「大きな仕様だけ決めて、実装は任せる」だ。Claude Code はこれが通じる。Cursor は「どこを修正しますか?」、Aider は「どのファイルを追加しますか?」と聞いてくる。聞いてくるだけで俺の集中が切れる。
2. 4本同時運用でコンテキスト管理が消える
CLAUDE.md をプロジェクトに置いておけば、セッションをまたいでも文脈が引き継がれる。Cursor はプロジェクト切り替えのたびに @ファイル名 でコンテキストを渡し直す必要があった。これが1日10回あると、地味に時間を食う。
3. コスト計算が合った
| ツール | 月額の目安 |
|---|---|
| Claude Code Max | $20 + API $15-30 |
| Cursor Pro | $20 |
| Aider | 無料 + API $10-20 |
Claude Code は一番高い。でも時給換算で考えると、1時間の作業が20分に短縮されるなら、$30の追加コストは安い。実装速度が上がった分、「俺の時間」のコストが下がる。
▼ 使い分けの結論
| シーン | 推奨 |
|---|---|
| ゼロから機能実装 | Claude Code |
| 既存コードの部分修正 | Cursor |
| AI コーディングを初めて試す | Aider |
| 予算ゼロ | Aider |
| 一人で本番複数プロダクト運用 | Claude Code |
| チームで既存 VSCode workflow を維持 | Cursor |
Cursor が向く人は存在する。チームで開発して、既存の VSCode 環境を維持したい場合、Cursor は自然に入ってくる。俺の条件だと Claude Code 一択になった。
「どれが最強か」より「どれが自分の用途に合うか」。
Cursor を6ヶ月使ってた俺が言う。乗り換えて後悔してない。でも「全員が Claude Code に乗り換えるべき」とも思ってない。1週間だけ試してみると、自分の答えが出る。
──
俺が運営してるプロダクト
🎬 VideoTracker — 不動産業者向け動画自動生成 SaaS
動画1本¥596。問合せ倍率の想定値はシミュレーションで2.8倍(実測は検証中)。
→ https://komugi-ai.jp/realestate
🤖 Mint Agent — Slack で @AI に話しかけて業務代行(近日リリース)
議事録投稿・メール返信・データ集計が Slack 内で完結
→ ベータ Waitlist:https://agent.komugi-ai.jp
🏭 Forge — 企業向け AI 実装・運用ファーム
構築 → 評価 → 運用まで一気通貫で請け負う
→ https://forge.komugi-ai.jp
業務効率化・SaaS 開発相談 → X DM @mintnekoneko0
過去記事まとめ:https://note.com/mintototo1
#claudecode #cursor #個人開発 #AIコーディング #SaaS
明日からコピペで使えるチェックリスト:Cursor → Claude Code 移行
移行前準備
-
Cursor の
.cursorrulesをすべて Claude Code のCLAUDE.mdに移植 -
Cursor の MCP server 設定を
~/.claude/settings.jsonに書き写す - よく使ってた拡張機能を整理(Claude Code でできることは全部 Skill に書く)
- 月額 $20 ($60 になる月もある) の課金状況を計算(Anthropic Max は使い放題)
Claude Code セットアップ
-
npm install -g @anthropic-ai/claude-code -
claudeで起動 → ログイン → API plan or Max plan を選択 -
--dangerously-skip-permissionsフラグの存在を覚える(諸刃の剣) -
Shift+Tabでモード切替(編集を承認 / プランモード / 自動モード)
CLAUDE.md の書き方
-
プロジェクトルートに
CLAUDE.mdを置くと毎セッション読まれる - やってほしくない事を列挙(「コメント追加するな」「型注釈追加するな」等)
- コーディング規約を箇条書き(lint 設定 / フォーマッタ / 命名)
- API key やシークレットの場所を明記(誤って読み書きされるのを防ぐ)
落とし穴
- 5 時間制限(Max plan)はリセット時刻が UTC 基準、JST 換算注意
- 並列セッション数は plan により制限あり
- 「自信満々に古い API を書く」癖が残ってるのでレビュー必須
-
context window が伸びても 長すぎる context は精度が落ちる(適宜
/compact)
Cursor を残す価値があるケース
- チームで使う(Claude Code は個人最適)
- AI なしで普段使いの IDE が必要
- 既存プラグインエコシステムに依存してる