次世代のエディター Cursor(カーソル) を使いこなす(2024年更新)

# はじめに
こんにちは。
株式会社HRBrainでバックエンドエンジニアをしている、蔭山といいます。

株式会社HRBrainではアドベントカレンダーに参加しています。

https://qiita.com/advent-calendar/2023/hrbrain

本記事は5日目になります。
今回は、なにかと話題の生成AIに乗っかりまして「AI時代のエディター Cursor」を紹介したいと思います。

コードエディターであるCursorは、AI技術を駆使してコーディング作業の効率を飛躍的に向上させるツールです。

https://cursor.sh/

この記事では、Cursorの特徴、インストール方法、オススメ機能を詳しく解説します。
# Cursorの特徴
- AI技術の活用: CursorはAIを利用してコードの自動生成やエラーの検出、修正を行います。有料プランに登録する他に、自分でOpenAI API Keyを登録して使うこともできます。
- 開発者向け設計: [VS Codeをフォーク](https://github.com/getcursor/cursor)して作られており、VS Codeユーザーはスムーズに移行できます。拡張機能も一括でインポート出来るため、すぐさま使い始めることができます。
- OpenAIとのパートナーシップ: OpenAIの最先端技術を活用した機能開発を行っています。また、実際に[OpenAI社から800万ドルの出資](https://anysphere.co/blog/openai-fund)を受けており、非常に期待されていることが分かります。

# 使い方
1. [Cursorをダウンロード](https://cursor.sh/)し、インストールします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2605179/448e4b22-a6f6-83fd-1b84-c6f573e774ae.png)
1. 起動すると初期設定が行なえます。
    a. VS Codeの拡張機能の自動インポート
    b. Cursorコマンドのインストール etc...
1. 無料プランで使用もできますが、ガッツリ開発する場合はProプランに登録するか、OpenAI API Keyを登録した方が気兼ねなく使用できます。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2605179/b8e79bad-acca-58f0-e8db-7d1b9beb075e.png)
1. 完了！

:::note info
補足として、拡張機能をインポートした場合上手く動作しないことがあります。その場合は、拡張機能の削除と再インストールを行っていただくと正常に動作します。
現在確認しているものとして、日本語パッケージ拡張機能は再インストールしないと日本語化されないようです。
:::

# オススメ機能
公式サイトに[Feature](https://cursor.sh/features)が載っており、便利な機能が多く存在しています。
<details><summary>Docsの「Add new doc機能」によりリンクを与えてまとめてもらった結果</summary>

- Command+K: コードを編集したり新しいコードを生成するために使用します。コードを選択して「Edit」をクリックするか、何も選択せずにCommand+Kをタイプします。
- Chat: コードベースを見ながらAIと対話できます。現在のファイルとカーソル位置をAIが認識しているため、特定のコードのバグの有無などを尋ねることができます。
- `@Symbols`: フォルダ内のすべてのファイルやコードシンボルのドロップダウンを取得するために使用します。特定の依存関係を持つコードを生成したり、ファイルについて尋ねたりする際に便利です。
- Codebase Answers: コードベース全体に関する質問をAIにできます。たとえば、「undo redoのロジックはどこにあるか？」や「クライアントサイドでの認証トークンの扱い方」などです。
- Docs: サードパーティのライブラリに関するAIの理解を深めるために使用します。ドキュメントをクロールしてカスタムドキュメントをAIに認識させることができます。
- Auto-Debug: ターミナルのエラーを修正するために使用します。エラー後に表示される「Auto-debug」ボタンをクリックすると、AIがファイルを調べて問題を修正しようとします。
- Fix Lints: リントエラーを素早く修正するために使用します。リントエラーにカーソルを合わせると表示される「Fix」ボタンをクリックすると、チャットにAIのレスポンスが表示されます。
</details>

私自身、実際に個人開発やISUCONで使用しているのですが、業務でも導入したい程に便利さを実感しています。

特に良かった使用例を3つ紹介します。
> **Codeの修正を実行した後、適用するか否かを画面上で選択できる**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2605179/b7710136-d797-4c55-ccf8-83d8445c8168.png)
Command+Kでコードの提案を行わせた後、そのままCommand+Yで適用できるためストレスフリーです。
GitHub CopilotやChatGPTでは直接コードを修正・適用することはできず、チャットでのコピペが発生してしまいます。
    
> **codebase機能でソースコード全体を与え、適時参照させることができる。**

ソースコード全体だけではなく、カスタム設定で与えるファイルを指定できます。
以下の例では、webapp/配下のみを参照してUserテーブルの定義を回答できています。
| Codebaseのカスタム設定を行う | 指定されたフォルダ配下で検索している |
|-------|-------|
|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2605179/6b53df38-bdb7-6ff8-f64e-ba361ef4f49e.png) | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2605179/30e95de5-1bdf-38c0-dbd9-6d527f50b64a.png)|

>  **シンボル機能により、参照させたいソースコードやgitコミット、補足情報を簡単に与えられる**

Cursorではチャット欄で`@~`と打ち込むことでシンボル機能を利用できます。

**自分は、このシンボル機能がCursorの肝と言っても過言ではないと感じています。**
- 特定のファイルを参照させる
- 特定の関数や構造体を参照させる
- gitコミットを参照させる
- カスタムcodebase機能を呼び出す
- `@~`でAmazon EC2といった様々なドキュメントを参照させる

実際に`@Deno`と指定すると、Deno公式サイトとその配下のページを参照して回答できています。
| `@Deno`でドキュメントを指定 | Denoのサイトを参照し回答する |
|-------|-------|
|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2605179/6668204d-5fd7-259d-c144-3464d77913da.png) | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2605179/65a5aa1a-ffbf-bf05-0732-af2d92d9f2cd.png)|

また、Add new doc機能により外部ライブラリやサイトを独自にシンボル登録することも可能です。
以下の例では、外部サイトであるCursorのFeatureページを参照して回答ができています。
| カスタムDocの登録を行う | 実際にチャットで使用できる |
|-------|-------|
|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2605179/4b999f76-0c0e-7713-1001-84cf98ddc68d.png) | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2605179/d805fd8d-4ed5-c7b6-5a09-d83dc7f12b79.png)|

# おすすめ機能(追記)
> copilot++

Github Copilotのようにコードのサジェストを行ってくれます。
Chat欄の「More」タブからCopilot++をONにしましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2605179/97c2acb0-5977-88be-8589-2d0b1fe56d64.png)

> Vision

Chat欄に画像を貼ることができます。Figmaやサイトデザインそのまま修正してくれるのは嬉しいですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2605179/e96f485c-3b68-f3d2-dd51-d7ec528ada82.png)


> Note

変数や関数の説明とリファレンスを見ることができます。いちいちタグジャンプしなくてもAIが勝手にまとめてくれるので嬉しいですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2605179/d0c783ba-c6c1-badc-4f8e-f48044ec684f.png)


# さいごに
Vim, Emacs, Sublime Text, Atom等のエディター乱立時代からVS Code一強になったように、AI時代のエディターとしてCursorが生まれつつあると自分は感じています。

また、GitHub Copilotとの合せ技を行うとさらに開発体験がアップするのでオススメです。(コメントによるコードの自動補完機能はCursorには実装されていないため)
Cursorは無料で使用することもできますので、ぜひ皆さんも便利な機能を体感してみてください。

最後に株式会社HRBrainでは新しいメンバーを募集中です。

https://www.hrbrain.co.jp/recruit

私自身も新卒で入社しているのですが、社内の雰囲気もよく、エンジニアとしても尊敬できる先輩がたくさんいます。
興味がありましたら、ぜひご応募ください！

**それでは皆さん、良いCursorライフを❗**
### 参考文献
- https://cursor.sh/
- https://github.com/getcursor/cursor
- [CursorConnect - Discordの個人が主催しているCursorコミュニティ](https://x.com/ai_syacho/status/1716811514349543485?s=20)