見出し画像

私のシンプルCursor活用方法

こんにちは、ニケです。
皆さん、Cursor 使っていますでしょうか?

私はそろそろ使用歴1年半くらいになります。

5ヶ月前にこんな記事を書いたのですが、AI時代のコーディングアシスタントの進化は早く、今はもうこの時とは全く異なる使い方をしているので改めて紹介したいと思います(一部被っている内容もあります)。

なお、AIコーディングアシスタントにはその他にも、Github CopilotやCline、Windsurfなどがありますが、これらのコーディングツールはCursorほど使ったことがないため、今回の記事では紹介・比較はしません。

XのTLでもいろんな宗派を見かけるので、「どれを使ったら一番楽できるんだ?」とは考えずに、取り敢えず一つのエディタ・ツールを使い倒すことをオススメします。

以降で紹介する方法は個人的にハマっている方法なので、これがベストではないです。1つの参考として見てもらい、後はご自身で使ってみて調整していくのが良いと思います。

私は有料のProプランを利用しているため、Freeプランの方の参考にはならないかも知れません。

また、役割によって用途が変わってくると思うので、予め私の属性を提示しておきます。

  • 仕様を考えたりコード書くことがメインの仕事

  • 仕事以外でも暇なときはコードを書いている

  • 0 → 1 での開発は少なめ

  • 扱っているアプリは小〜中規模が多い

  • よく使う言語はTypeScript, Python

それでは本編へどうぞ。


Cursorとは

VSCodeからフォークされたAIエディタです。
VSCodeの豊富な拡張機能がほぼそのまま使える上、AIによる豊富なアシスト機能が付いています。
私が知っている限りでは、VSCodeの完全上位互換のはずなので、現在もVSCodeを利用している方は可能であれは移行することをオススメします。

ダウンロードはこちらの公式サイトからできます。
最近日本語対応したので、どのようなことができるのかザッと読んでみるのも良いでしょう。

費用

Proプランで、$20/月です。
最も利用するclaude-3.5-sonnet は500リクエスト利用できます。

gpt-4o-miniなどの安価モデルは、Proプランであれば使い放題ですが、コーディング精度に直結するのであまり利用しない方が良いでしょう。

500リクエストを超えた場合や、o1などの一部のモデルは別途従量課金で費用が発生するので注意してください。

Cursorのアカウント画面から従量課金を許可するかどうか選べるので、不安な方は確認しておきましょう。

設定

以下、私のCursor Settingsを一部共有します。

Rules for AI

Cursorのすべてのプロジェクトに適応されるルールです。
Cursorアプリで1つ設定するものなので、プロジェクトに依存せずにすべてに効果があります。

下記が私の使用している設定です。
有識者のきのぴーさんから教えていただいたものをベースに、少し改良して使用しています。

あなたは高度な問題解決能力を持つAIアシスタントです。以下の指示に従って、効率的かつ正確にタスクを遂行してください。

まず、ユーザーから受け取った指示を確認します:

<指示>
{{instructions}}
</指示>

この指示を元に、以下のプロセスに従って作業を進めてください。なお、すべての提案と実装は、記載された技術スタックの制約内で行ってください:

1. 指示の分析と計画
<タスク分析>
- 主要なタスクを簡潔に要約してください。
- 記載された技術スタックを確認し、その制約内での実装方法を検討してください。
- 重要な要件と制約を特定してください。
- 潜在的な課題をリストアップしてください。
- タスク実行のための具体的なステップを詳細に列挙してください。
- それらのステップの最適な実行順序を決定してください。
- 必要となる可能性のあるツールやリソースを考慮してください。

このセクションは、後続のプロセス全体を導くものなので、時間をかけてでも、十分に詳細かつ包括的な分析を行ってください。
</タスク分析>

2. タスクの実行
- 特定したステップを一つずつ実行してください。
- 各ステップの完了後、簡潔に進捗を報告してください。
- 実行中に問題や疑問が生じた場合は、即座に報告し、対応策を提案してください。

3. 品質管理
- 各タスクの実行結果を迅速に検証してください。
- エラーや不整合を発見した場合は、直ちに修正アクションを実施してください。
- コマンドを実行する場合は、必ず標準出力を確認し、結果を報告してください。

4. 最終確認
- すべてのタスクが完了したら、成果物全体を評価してください。
- 当初の指示内容との整合性を確認し、必要に応じて調整を行ってください。

重要な注意事項:
- 不明点がある場合は、作業開始前に必ず確認を取ってください。
- 重要な判断が必要な場合は、その都度報告し、承認を得てください。
- 予期せぬ問題が発生した場合は、即座に報告し、対応策を提案してください。

# ショートカットエイリアス
- `/ask`: ユーザーがポリシーに関する相談を求めている場合。多角的な分析を含む積極的な回答を提供してください。明確な指示がない限り、相談中にタスクを実行しないでください。
- `/plan`: 作業計画を明確かつ詳細に概説し、相違点がないことを確認してください。合意に達した後にのみ実行に移ってください。
- `/debug`: バグの根本原因を特定します。5〜7つの可能性のある原因をリストアップし、1〜2つに絞り込みます。修正を適用する前に、ログを使用して仮説を検証してください。
- `/cmt`: コードの意図を明確にするために、適切なコメントとドキュメントを追加します。既存のコード形式に従ってください。
- `/log`: 適切なログレベルを考慮し、必要な情報のみを記録します。ログは簡潔に設計し、冗長性を避けてください。既存のコード形式に従ってください。

このプロセスに従って、効率的かつ正確にタスクを遂行してください。

また、重要な事実として、OpenAIにはgpt-4oとgpt-4o-miniというモデルが存在します。

最後の方にある ショートカットエイリアス は非常に便利なので、後ほどComposerのところで解説します。

Rules for AI は割と忠実に効いている感じがするので、使用しながら調整していくとよいかと思います。

.cursorrulesとv0.45系から追加されたProject Rulesに簡単に触れておきます。

.cursorrules

.cursorrulesはプロジェクト毎に設定できるプロンプトのようなものです。Rules for AIがCursorですべてのプロジェクトに効果があるのに対し、.cursorrulesはプロジェクト毎に設定できます。

ただ、個人的にはあまり効果が出ているような気がしなかった上に、Project Rulesの登場で公式非推奨になったようなので、私が今後使うことはないでしょう。

Project Rules

Project Rulesはプロジェクトごとに複数設定できるルールです。ChatやComposerの指示に応じて、自動的に呼び出されます。

ただ、確実に呼び出して欲しい設定が呼ばれるわけではないので、そういうときはシンボル機能で直接指定しましょう。

かなり強力な機能のようですが、私はまだそこまで試せていないので具体的な説明はこの記事では省きます。
設定方法など、詳細については下記の記事が大変参考になったので一読すると良いでしょう。

Models

私が利用しているのは下記のみです。
使わないモデル以外は邪魔なのでチェックしません。

  • claude-3.5-sonnet

  • o3-mini

Yoloモード

このモードをONにすると、Composer Agentが自動的にコマンドを実行できるようになります。
許可・非許可コマンドは好きなように設定できるので、AIの暴走をある程度制御できます。

その他の設定は私も変えたり変えなかったりしているので、ぜひご自身の環境に合わせて調整してみてください。

Composer Agent

前回の記事ではComposerは使わず、Chatしか使っていないと書きましたが、100%逆転しました。
現在はChatを使うことはほぼありません。Composerに慣れすぎてしまった…。

Composerは強力なAIによる自走コーディングツールです。
人間が指示をするだけで勝手に書き進め、エラーが出たら勝手に対応してくれる上、先程のYoloモードを許可しておくとコマンドの実行までもしてくれます。

Chatの場合はコードに反映するには1ファイルずつ承認していく必要がありましたが、Composerは先にオートで反映してからあとで承認する形式なので、フロントアプリなんかで使うと勝手に画面が更新されていき未来感を感じます。

なお、Composerには normalモードAgentモード の2パターンが存在しますが、私は後者しか使っていないので normalモード の説明は省きます。

使用モデル

基本的には claude-3.5-sonnet のみしか使用しません。
半年以上前のモデルなのにコーディングレベルは常に頂点に君臨しています(個人の感想です)。

o3-mini はコーディングレベルがかなり優れているという評価結果があるのですが、Cursorに最適化されていないのか、ファイルを更新せずに説明だけして終わるなど、あまり使い勝手が良くないです。

o3-mini は違う方法で使用するので後ほど紹介します。

基本の使い方

それでは以下に私がいつも使用している方法を紹介します。

なお、先程説明した通り、私はあまり0=>1の開発をしないので、以降は1=>10の開発でのTIPSがメインになっています。

ファイルの指定の仕方

AIコーディングで一番重要なのは、どのように関連ファイルをAIに渡すかだと思っています。

小規模のアプリならファイル全て渡しても割とどうにかしてくれませすが、中規模以上のアプリではそうもいきません。
また、ロングコンテキストになると性能も悪くなりがちです。

そのため、必要なファイルを良い感じにCompserに渡すことが大事になってきます。

Cursorでは、Codebase Indexという機能があり、プロジェクト全体をエンベディングしてRAG的にファイルを参照する機能がありますが、必ず期待していたファイルを参照してくれるわけではないので個人的にはあまり信頼していません。

AIに任せて手戻りが発生するくらいなら、人間ができるところは自分でやろうというスタンスです。
リクエストの節約にもなりますしね。

現在のファイル

Cursorでは今開いているファイルは自動的にAIチャットに読み込まれるようになっています。
そのため、ファイルを開いている状態で「リファクタリングして」と入力・実行するだけでファイル全体を良い感じにキレイにしてくれたりします。

たまに全く何も情報を与えない状態で質問したい、という状況も発生してくると思います。
その時は、AIチャット欄にあるファイル名(上の画像だと「vercelAIChat.ts」)の×ボタンを押して消してから質問しましょう。

特定のコード

特定のコードをピックアップして修正する場合は、コードを選択した状態で ⌘ICtrl + I)を押すと、現在のComposerに指定したコードが追加されます。
この状態で「〇〇のように修正して」などと指示を出すと適切に修正案を出してくれます。

なお、このときも先程と同じように開いているファイル全体も一緒に読み込まれているので、指定コードだけでなく周辺コードの内容も鑑みて提案してくれるのでかなり助かります。

また、⌘Iはターミナルでも使用することができるので、エラー文言をすべて選択してから⌘Iし、「このエラーを解決して」みたいに質問することも可能です。

なお、現在のComposerでなく新しい枠を開いて最初から始めたい、という場合もあると思います。

そういう場合は、⌘Iの後に⌘Nすると、指定した特定コード部分のみが選択された状態で新しいComposerが開きます。

複数のファイル

アプリ開発をしていると1つのファイルで済む修正、という状況は限られてくると思います。
複数のファイルをAIチャットにわたす方法はいくつかあるのでいくつかのパターンに分けて紹介します。

数ファイル => @ファイルシンボルを使う

シンボルとは@から始まるコマンドことで、様々なものが用意されています。
@を押すと下記のような一覧が表示されるので、Filesを選びます。

するとファイルの一覧が表示されるので、必要なファイルを選択しましょう。@の後にファイル名を入れていくと予測変換でファイルを絞ってくれるのも便利です。

該当のファイルが2-3個とかの場合はこれで済むことが多いです。

~10ファイル => Add contextを使う

複数のファイルを一気に指定するときに便利です。
いちいち画面が閉じないので、ポチポチしていくだけで勝手に選択したファイルがAIチャットに読み込まれていきます。

~10ファイル => Reference Open Editorsを使う

AIチャット欄で / と押すと Reference Open Editors というのが出てきます。
これを選択すると、現在開いているファイルがすべてAIチャット欄に読み込まれます。

基本的に機能追加などをしているときは、関連ファイルをすべて開いている状態で作業することが多いと思うので、この機能はかなり重宝しています。

それ以上のファイルを渡す => ルールファイルを使用する

10以上のファイルになると、上記の方法でやるのもめんどくさくなってきます。
そういうときは、予め関連ファイルをまとめたルールファイルを作成しておき、そこにファイル名をずらっと書いておくと便利です。

例えばですが、こんな感じで機能別の関連ファイルなどをまとめたファイルを作成しておき、これをComposerに渡すと指示に応じて必要なファイルを参照してくれます。

先ほど紹介した Project Rules と組み合わせるとより効果的かも知れません。

設計をする

機能追加する場合、とりあえず誰かと考えを壁打ちしたいみたいなことが割とあります。
そういうときはぜひo3-miniを使ってみましょう。

個人的には設計力はSonnetよりも優れていると思っていて、例えば以下のように使用することがあります。

  1. o3-miniで設計の壁打ちをする、必要があれば関連ファイルを共有しておく

  2. モデルをclaude-3.5-sonnetに変更し、完成した設計を元に実装を進める

  3. (必要に応じて)再度o3-miniに戻して設計通りにできているかの確認をする

なお、現時点('25/2/14)でo3-miniが無料で使えるためこのようにしていますが、割と体験が良いので、有料化したあともこの手法を続けていこうと思います(o3-miniはAPI利用ならそこまで高くないですしね)。

エラー対応

何かしらのエラーが出ている場合は通常そのコードに赤線が出るので、カーソルを当てて表示される「Fix in Composer」ボタンを押してみましょう。勝手にチャットが実行されて修正案を提示してくれます。

このエラー赤線は拡張機能によるものなので、必要に応じて使用している言語の拡張機能はCursorに追加しておきましょう。
「VSCode Python 拡張機能」のように検索すると言語別オススメの拡張機能リストが得られるはずです(検索するときは「VSCode」であることに注意)。

また、「Fix in Composer」を押すと自動的にチャットが送信されてしまうので、意図を汲み取ってくれずに適した回答をしてくれない場合があります。
この場合は、最初のチャット欄に戻って情報を追加してから再度送信しましょう。

マルチモーダル(画像入力)

Cursorはマルチモーダルにも対応しているので、画像を読み取らせることも可能です。
私は良くブラウザで出たエラーをスクショして雑にそのままドラッグ&ドロップして質問したりしてます。

@シンボル

AIチャット欄の便利機能です。
すでにいくつか解説したので、その他でよく使っているものを追加で紹介します。

@Docsシンボル
このシンボルでは予め用意しておいたドキュメントを使用してAIチャットの回答に利用するというものです。
よく使用するライブラリやgitリポジトリのURLなどを登録しておくと便利です。

ただ、こちらもIndex化されて保存されており、全ドキュメントを参照させているわけでないので、めちゃくちゃ精度が高いというわけではないです。参考程度に使用します。
最終的にはそのドキュメントやリポジトリを直接見に行ったほうが早かったということも割とあります。

@gitシンボル

特定のコミットや現在のコミットの変更を簡単にComposerに渡せます。
使用頻度は多くないですが、たまに助かることがあります。

ショートカットエイリアス

こちらはComposerの機能ではないのですが、一緒に覚えておくと便利なのでこちらで紹介します。

Rules for AI の項目でも少し解説しましたが、以下のテキストを適当な位置に設定してください。

# ショートカットエイリアス
- `/ask`: ユーザーがポリシーに関する相談を求めている場合。多角的な分析を含む積極的な回答を提供してください。明確な指示がない限り、相談中にタスクを実行しないでください。
- `/plan`: 作業計画を明確かつ詳細に概説し、相違点がないことを確認してください。合意に達した後にのみ実行に移ってください。
- `/debug`: バグの根本原因を特定します。5〜7つの可能性のある原因をリストアップし、1〜2つに絞り込みます。修正を適用する前に、ログを使用して仮説を検証してください。
- `/cmt`: コードの意図を明確にするために、適切なコメントとドキュメントを追加します。既存のコード形式に従ってください。
- `/log`: 適切なログレベルを考慮し、必要な情報のみを記録します。ログは簡潔に設計し、冗長性を避けてください。既存のコード形式に従ってください。

これの何が嬉しいのかと言うと、良く質問する事項をエイリアスとして利用できるようになるということです。

例えば、先日このようなツイートがバズりました。

Composerで機能を実装していると、何度も上手く実装がいかず、その都度「まだ壊れてるよ…」と指示を出すことがあります(本当に良くあります)。

これを解決するためには、以下の文章をそのまま伝えると好転することが多いらしいです。

Reflect on 5-7 different possible source of the problem, distill those down to 1-2 most likely sources, and the add logs to validate your assumptions before we move onto the implementing the actual code fix

ただ、毎回この文章を書くのもめんどくさいですよね?
ここで先程のエイリアスを利用します。Rateteさんに教えていただいた方法です。

先程の登録例だと /debug と入力して送信するだけで解決します。
型も特にないですし、エイリアスは好きなように設定できるので好みに合わせてカスタマイズしましょう。

もちろんこの方法でなくとも、Clipyなどのスニペットアプリで先程の文章をそのまま登録しても良いと思います。

TIPS: その他の留意事項

1つのチャット量はあまり長くならないようにする
基本的に会話ターンが長くなれば長くなるほど精度が下がるので、キリがよいところで別のチャットに切り替えたほうが良いです。

どうしても長くなりすぎてしまう場合は、@Summarized Composersシンボルを使いましょう。

これを使用することで特定のComposerの会話歴を要約したものを別の会話で始めることができます。
要約なので完璧ではないですが、ログが長くなりすぎて精度が落ちてしまうよりは良いでしょう。

小まめにgitにステージする習慣をつける
会話を長く続けていると、どこまで正しく動いていて、どこでエラーが出るようになったのかわからなくなることがあります。

その時はgitをうまく使用し、正しく動いていたところまではステージしておく、などとルールを決めておくと良いと思います。
gitの使い方についてはCursorに聞いて下さい。

途中の会話までコードを戻したい場合はRestoreを使う

とはいえ間違えてそのまま進めてしまいい、途中までは上手く行っていたのにエラーが出るようになってしまった、ということは私もよくあります。

そういうときは、チャット欄の上にある小さく書かれた Restore というボタンをクリックすることで、そのチャット欄の前までの変更までコードの変更を戻すことができます。

勝手にコードを変更されたくない場合の対処法

Cursorで作業していると「まずは現在の仕様だけ確認したい」「とりあえず設計だけしたい」のように、コードの変更を望まないことも割とあるとおもいます。

ただ、困ったことにCursorはどうにかしてコードを改善しようとしてしまうので、勝手にイマイチなコードを見つけてリファクタリングしがちです。

このようなときは入力欄の文末に「いったんコードは変更しないでください。」などと付け加えると割と素直に聞いてくれます。
コードの変更を再開して欲しい場合は「ここからコードの変更を許可します。」と伝えればよいでしょう。

これも先程のエイリアスで設定しておくと便利です。

なお、ComposerでなくChatを使えばコードを勝手に変更するのを防げるのでは? と、思う方もいると思います。過去の私も試してみたことが在ります。
ただ、仕様だけ確認しようとしてたのにいつの間にかそのまま改善案へと話が進んでしまい、「ああこれがComposerだったらこのまま変更もお願いできたのにな…」という感じになってしまったことが多々あるので、私はもうComposer一本でやることにしています。

下記のような方法もあるので、お好みに合わせて使い分けると良いでしょう。

⌘K

次にComposer以外で便利なCursorの機能を紹介します。
まずは⌘Kです。

コードで使用

行を指定(複数可)して⌘Kを押すとフォームが出てくるので、そこに選択した行をどう編集したいかを書き込むと修正案を出してくれます。

この機能では、実行しているファイルの中身は自動的に全部読み込んだうえで返答してくれるので、実際に編集したい行のみ選択すればOKです。
他のファイルを読み込みたいときは @ファイル名 で呼び出すこともできます。

ただし、修正案の提示のみで解説はしてくれないので、意図を汲み取った修正をしてくれないことが割とあります。
少しでも複雑な指示をするときは大人しくComposerを使用することも多いです。

ターミナルで使用

⌘Kはターミナルでも使えます。
例えば、「1つ前のコミットに戻したい」など、あの操作ってどうやるんだっけ…、みたいなコマンドを指示するだけですぐに提示してくれます。
⌘ + Enterでそのまま実行もしてくれるのも便利です。

Copilot Tab

Github Copilotに似た機能でカーソルを併せたコードを予測して補完してくれるオートコンプリート機能です。ちょっとした修正を複数行にまたがって直したいときに勝手に補完してくれるの便利すぎる。

タブを押しているだけで欲しい機能が出来上がっていくのを見てると、いよいよエンジニア要らない問題が現実味を帯びてくる気がしてきます。

その他、Cursorの機能一覧は下記から見れるので確認しておきましょう。

終わりに

以上、私のCursorを活用方法を紹介させていただきました。

あくまで私に合う方法なのでこれが絶対というわけではありません。
ぜひご自身に合う開発スタイルを見つけてみてください。

質問があれば下記のXのDMでも、こちらの記事にでも良いのでお気軽に聞いて下さい!

宣伝

AITuberKitという誰でも簡単にAIキャラチャット、AITuber開発ができるOSSを開発しています。興味のある方はぜひ試していただけると嬉しいです!

私のXアカウント(@tegnike)


いいなと思ったら応援しよう!

ニケちゃん いただいたサポートは主にOSSの開発継続費用として役立てます。