Cursor:日常使用した正直なレビュー
Cursor を個人的なプロジェクトと仕事の両方で約6ヶ月使用しています。これは VS Code をベースにした AI 搭載コードエディターで、VS Code の拡張機能、テーマ、キーバインドをすべて継承しています。しかし、AI 統合が他と一線を画しており、それは祝福であると同時に呪いでもあります。以下が詳細な評価です。
得意なこと
1. コンテキストを考慮したコード補完
Cursor のインライン提案は、GitHub Copilot よりも重要な点で優れています。現在のファイルだけでなく、プロジェクト全体の構造を理解します。例えば、../../utils/helpers からユーティリティ関数をインポートする React コンポーネントをリファクタリングしているとき、Cursor は正しいインポートパスを提案し、古い関数を参照している他のファイルを更新することも提案しました。また、複数行の補完も得意です。関数シグネチャを入力し始めると、コードベースのパターンに基づいてエラーハンドリングを含む関数全体を推測することがよくあります。
2. コードを実際に読むチャット
組み込みのチャットパネル(Ctrl+Shift+L)を使用すると、コードをコピー&ペーストせずに質問できます。例えば、「この API 呼び出しがなぜ静かに失敗するのか?」と尋ねると、関連ファイルをスキャンし、try/catch ブロックがエラーを飲み込んでいるのは再スローを忘れているからだと指摘しました。また、特定のコードブロックをハイライトして、説明、リファクタリング、バグ修正を依頼することもできます。これは一般的な ChatGPT の会話よりもはるかに便利です。
3. 編集を直接「適用」
チャットで変更を依頼すると、Cursor はワンクリックでファイルに編集を適用できます。コピー、貼り付け、推測は不要です。例えば、「この関数に TypeScript の型を追加して」と依頼すると、型をインラインで挿入し、変更箇所をハイライトし、承認または拒否を選択させてくれます。これはギミックではなく、真のワークフロー改善だと感じます。
4. エージェントモード(ベータ)
「エージェント」機能では、「この React アプリにダークモードトグルを追加し、localStorage で設定を永続化する」といった高レベルの指示を与えることができます。Cursor は新しいファイルを作成し、既存のファイルを変更し、依存関係をインストールし、ターミナルコマンドを実行することさえします。完璧ではありません。不要なファイルを作成したり、インポートを誤って設定したりすることがありますが、ボイラープレートタスクでは1タスクあたり15~20分の時間を節約できます。
制限事項
1. 幻覚と過信
Cursor は自信満々に、一見正しく見えるが微妙に間違っているコードを生成します。「このリストコンポーネントにページネーションを追加して」と依頼したところ、使用していないライブラリを使い、間違ったプロップ名の Pagination コンポーネントを作成しました。生成されたコードはすべてレビューする必要があります。思考を加速するためのツールであり、置き換えるものではありません。
2. パフォーマンスのオーバーヘッド
ミッドレンジのノートパソコン(16GB RAM、i7)では、大規模プロジェクト(100ファイル以上)で Cursor が著しく遅くなることがあります。AI の提案にラグが生じ、タイピング中にエディターが1~2秒フリーズすることもあります。使えないわけではありませんが、素の VS Code ほど快適ではありません。
3. 価格設定の現実
無料プランでは、月50回の「低速」リクエスト(5~10秒かかる)と500回の高速リクエストが利用できます。Pro プランは月20ドルで、無制限の高速リクエストと GPT-4 および Claude へのアクセスが含まれます。Business プランはチーム機能付きで月40ドル/ユーザーです。個人開発者にとって、毎日使うなら Pro は価値があります。しかし、無料プランは実際の作業には制限が厳しすぎます。数日で上限に達します。
4. 真の「AI ファースト」機能はない
誇大広告にもかかわらず、Cursor は AI が追加されたテキストエディターに過ぎません。コードベースを自動的にリファクタリングしたり、アーキテクチャの改善を提案したりすることはありません。すべてを明示的に依頼する必要があります。これは「自動操縦」ではなく、より優れたオートコンプリートです。
主要なワークフロー
デバッグ:バグに行き詰まったとき、疑わしいコードブロックをハイライトし、チャットを開いて「ここで何が問題ですか?」と尋ねます。通常、欠落しているエッジケースやロジックエラーを見つけてくれます。
リファクタリング:「編集」コマンドを使用して関数の名前を変更したり、コンポーネントを抽出したりします。