🧠

フルスタックエンジニア見習いがCursorを使い倒してみた!

2024/12/11に公開

はじめに

こんにちは!
株式会社ココナラココナラ募集部のひびきです。

最近の生成AIツールの進化は凄まじいですよね。毎日魅力的な生成AIツールがリリースされていて、どのツールを使うべきか迷ってしまいます。

そんな生成AIツール業界の中でも、コーディング支援ツールとして群を抜いて人気なものとしてあげられるのはCursorGitHub Copilotの2つになるのではないでしょうか?

私は普段、Hono, Ruby on Rails, Next.js, Nuxt.js, Go などを使ってフロントエンドからバックエンドまで開発しています。
さまざまなプロジェクトを進める中で、生成AIツールがどれほど開発効率を向上させるかを実感しています。

本記事では、プライベートでも開発業務でもCursorにどっぷり依存している私が思うGitHub Copilotとの違いや優位性、おすすめの使い方について書きたいと思います。
ご参考になれば幸いです。

簡単に、CursorとGitHub Copilotを比較してみる

項目 Cursor Business Cursor Pro (個人) GitHub Copilot Business GitHub Copilot Individual
価格 $40/ユーザー/月 $20/月 $19/ユーザー/月 $10/月
コード生成機能
チャット機能
Auto-Debug機能
コード自動補完
チーム管理機能
セキュリティ機能 強化済み 標準 強化済み 標準
対応エディタ VSCode派生 VSCode派生 VSCode, Visual Studio, JetBrains IDE等 VSCode, Visual Studio, JetBrains IDE等
アカウント付け替え 可能 不可 可能 不可

Cursorの目玉機能を紹介してみる 🚀

Cursorの機能一覧の紹介はこちら

🎯 Cursor Tab

コーディング時にAIが文脈を理解し、次のコードを予測・提案してくれる機能です!

特徴

主な特徴の一覧としては下記のものが挙げられます。

  • プロジェクト全体のコンテキストを理解した提案
  • リアルタイムのエラー検知と修正提案
  • 複数箇所の同時編集提案
  • 次の編集しそうな箇所に、カーソルの位置を変更する提案

GitHub Copilotと比べて特に優れている点としては、プロジェクト全体のコンテキストを理解した提案複数箇所の同時編集提案の2点だと思います。

プロジェクト全体のコンテキストを理解した提案

GitHub Copilotが 現在のファイル、もしくは開いているファイルを参照した上で回答するのに対して、
Cursorは、プロジェクトを初回で開いた際にコードベースのインデックス化をローカル環境上に行い、その内容を参照して回答します。
そのため、そのプロジェクトにあったかなり精度の高い提案を行なってくれます。

プロジェクトがインデックス化されるまでは、Cursor tabの機能が使えません。
もしコード提案が動いていなさそうであれば、右上の設定のアイコンからCursor settingsを開きインデックス化が終了しているか確認してみてください。

codeIndexing

もし、インデックス化がうまくできないことがあるようでしたら、こちらを参考に設定を変更するとうまくいくと思いますので、ぜひやってみてください。🙏

http2

複数箇所の同時編集提案

GitHub Copilotが現在の行に対してのみコードの提案と修正ができないのに対して、Cursorでは一度の変更でファイル全体に対して変更をかけることができます。
そのため、変更の漏れが少なく、カーソルの移動を行ってから修正するという作業を繰り返すストレスからも解放されます。

💬 Cursor Chat

AIとの対話を通じてコーディングをサポートする機能です!

主な機能

主な特徴の一覧としては下記のものが挙げられます。

  • 特殊シンボルによる高度な参照
  • Cursor chatのためのショートカット

特殊シンボルによる高度な参照

Cursorには、多くのchatにcontextを与えるためのシンボルが用意されています。
下記が一覧になります。

シンボル 役割
@recommended おすすめの参照ファイル
@files ファイルを参照
@folders フォルダ配下を参照
@code コード参照
@docs ドキュメント参照
@git Gitの履歴を参照
@notepad notepadを使用したメモを参照
@codebase プロジェクト全体を読ませる
@lint errors リントエラー確認
@web ウェブ検索

私のおすすめの使い方を紹介します。

@gitの機能の中の@Commit (Diff of Working State)というシンボルを使うと、コミットを行なっていないworking directoryに入っている差分のみを参照させることができます。コーディングを行なっていて「修正を追加したらエラーが起きてしまったから、大雑把にどの辺に問題があるかみて欲しい」という時に使うとエラーの目安をつけられます。

また、Cursor chatでは画像を使った質問ができるため、大雑把にマークアップをしてもらうことやデザインコンポーネントの中から似たようなコンポーネントがないかを調べるのに重宝してます!

Cursor chatのためのショートカット

Cursor chatには、使いやすいようにさまざまなショートカットが用意されています。
すごく地味なショートカットに見えますが、これらがあるかどうかで質問体験はかなり違うように感じます。

ショートカット 機能
command + y 既存のchatを開く
command + l 新規chatを開く or チャットパネルを閉じる
貼り付けたいcodeを選択する + command + shift + L 選択した行を既存のchatに貼り付ける
貼り付けたいcodeを選択する + command + l 新規chatを開く

またCursorでは、チャットパネル上でもショートカットのためのボタンが複数用意されています。

chatShortCut

Ask

このaskのボタンを押すと、回答を引用をchatに直接貼り付けてくれるので毎回返答をコピーする手間が省けます!

Copy

このCopyボタンを押すと、回答をコピーすることができます。GitHub Copilotでは自分で選択してコピーするという手間があったので、長い回答だと結構大変だったりします。

Run

このRunボタンを押すと、ターミナル上で貼り付けて実行までしてくれます!

Apply

このApplyボタンを押すと、ファイルに対して変更を直接かけてくれるのでコピーして貼り付ける作業が短縮されます。
変更する対象のファイルを開いていなくても、開いて変更を行なってくれます。
変更する際にも、1行ずつ変更を受け入れるかどうかを確認できるのもいいポイントですね!

※ ただ、たまに動かないことがあるのでその場合は自分で貼り付ける必要があります。

apply

⚡ Inline Chat

エディタ上で直接AIとチャットができて、コードの横にチャットパネルが開いて会話ができる機能です!
私は一度きりの質問や編集などは inline chat、複数回質問をしたい場合には Cursor chatという形で使い分けを行なってます!

inline chat

特徴としては、下記のものが挙げられます。

  • 複数行に対して変更がかけられる
  • ターミナル上でも使用することができる

AIターミナルとして有名なwarpと同じように、ターミナル上でも使用することができるのはうれしいポイントですね!
私は、このinline chatでTypescriptの型を参照させてモックデータを作成させたり、一旦リファクタリングさせてみて変更できそうな場所だけ受け入れるといった使い方をしてます!

その他にも....

そのほかにもCursorでは、beta版の機能含め多くの機能が日々追加されてます。
その中でもかなり良いと思う機能を3つだけ追加で紹介します!

Cursor rules

Cursor rulesとは、質問する内容に応じて使用する言語モデルを設定することができる機能です。

Cursorでは複数の言語モデルを選択して使用することができるので、.cursorrulesというファイルを設定しておくと、

  • コードに関する質問はclaudeに割り振る
  • 画像に関する質問はgpt4oに割り振る
    など、質問に応じて最適なモデル選択を事前に振り分けることが可能になります。

Docs

普段からよく参照させておきたいwebリンク(ex. 言語のドキュメントなど)を登録しておくことができます。

Docs

登録されたdocsは、chatの入力時にて @Docs名前で呼び出すことができます。
また登録したdocsはインデックス化されるので、質問時の読み込みはかなり早いです。

ビジネスプランを使用しているとチーム内で共有することもできるので、チームのメンバーが登録したDocsも @Docs名前で参照することができます!

note pad (beta版)

Cursorの機能の1つで、Cursorの中でmarkdownでメモを取ることができる機能です。
このメモは各プロジェクトの環境ごとに環境が作成されるので、ノートが混ざる心配もないです。
notepad上で作成したノートは、gitの追跡もされないのでわざわざ .gitignoreに追加する必要もないのもいいポイントです!

また、@ファイル名などでコードジャンプなども使用することができます。

もともと別のメモサービスを使ってメモを取っていましたが、現在はこちらのnotepadに乗り換えました!

おまけ(ビジネスプラン)

公式の情報や、ネット上にビジネスプランの情報がほぼないので共有しようと思います。
ビジネスプランで現在できることは、下記の三つになります。

  • Cursorの利用金額の一括支払い
  • Cursor上で読み込ませるデータを学習されないように管理者側から強制する
  • 管理者画面の使用

管理者画面では、下記のようなことができます。

  • chatの使用上限の調整(defaultだと500fast requestに制限されている)
  • Cursorのメンバーのロールの変更
  • Cursorアカウントの付け替え・解約(月の途中で解約すると日割りで請求される)
  • 各アカウント・全体のCursorの使用率の測定

Admin

Cursorを使ってみて

半年間Cursorを使用してきた経験から、AIの機能を効果的に活用できるよう工夫された機能が多く、AIの提案精度も高いため、業務効率が大幅に向上したと実感しています。
一方でGitHub Copilotと比較すると、エディターが制限される点や、.cursorrulesやシンボルの使い分けなど独自の設定が必要な面もあり、人によってはGitHub Copilotの方を選ぶのではないかと思いました。

それでも私個人としては、AIコーディング支援ツールとしてCursorが最も完成度が高いと考えています。

ただし、完璧な製品かと問われれば、Cursorに限らず生成AI製品全般がまだ発展途上段階にあると感じています。
具体的には、Cursorのプロダクトの課題として、時折クラッシュが発生したり、VSCodeで動作していた拡張機能が利用できないなど、ツール起因のトラブルに遭遇することがあります。
また、コード生成に関しては、特にゼロからのコード生成時に、正常に動作しない場合やアンチパターンを含む実装が生成されてしまうケースも見受けられます。

近年のAIコード生成ツールの進化は目覚ましく、精度も日々向上していますね。私も便利さについつい魅了されて、多くのコードを生成させてしまいがちです。
しかし、生成AIが提案したコードを理解せずに使用してしまうと、最近Xで話題になった投稿のように「AIが書いたコードのデバッグに24時間費やす」という本末転倒な事態に陥りかねません。

コード支援ツールの先駆者的存在である、GitHub Copilotのプロダクトの理念としては以下のようなことが書かれています。

"By offloading particularly tedious and repetitive tasks to GitHub Copilot, developers are experiencing increased productivity in the sense that they can devote their energy and time to more complex and important parts."

まさにその通りで、生成AIツールは面倒な反復作業を代行してくれる強力な味方です。これにより、開発者はより複雑で重要な設計やロジックの構築に集中できるようになりました。

ただし、ここで忘れてはいけないのが、AIはあくまでも「右腕」的な存在だということです。最終的な判断や理解は「脳みそ」である開発者自身が担う必要があります。

生成AIツールは、使い方次第で諸刃の剣となり得ます。Cursorも例外ではありません。
このような強力なツールだからこそ、「ツールに使われるのではなく、ツールを使いこなす」という姿勢を常に心がけていきたいですね!

最後に

現在ココナラではエンジニアを募集しております。
ココナラに興味をもっていただいた方やもっと詳細に話を聞いてみたい方がいましたら、以下カジュアル面談応募フォームよりご連絡ください。

https://open.talentio.com/r/1/c/coconala/pages/70417

募集求人については下記のリンクからご確認ください。
https://coconala.co.jp/recruit/engineer

Discussion