1. はじめに
エンジニアの皆様、Cursorは使われてますか?
筆者は、去年11月の大規模アップデート(v.0.43)で導入されたエージェント機能に衝撃を受けて以来、プライベートでCursorを使うようになりました。そうして日々利用する中で、ソフトウェア開発におけるCursorの計り知れない可能性を肌で実感するようになりました。
そこから「ポスタスでもCursorを使うんだ!!」と弊社の開発組織に何度も訴え(まじでほんとに頑張った)、2025年7月からようやく利用できるようになったのです!
とはいえ、社員にCursorアカウントを配布しても「イマイチ使い方が分からない」「何かドキュメントとかないんですか?」という声が多かったので、推進派の私がマニュアル作成を担当し、せっかくなら技術記事として共有しよう、ということで本記事の作成に至りました。
社員向けにマニュアル化しつつも、ブログ化することでポスタスのことも知ってもらえたら嬉しいなと思っております^ ^
前段が長くなりましたが、さっそくCursorのあれこれを見ていきましょう!
2. Cursor第一歩
2-1. Cursorとはなんぞや
Cursorは、VSCodeをベースに開発されたAI統合型エディタで、AIエージェントによる強力な支援機能が開発プロセス全体をサポートしてくれます。コード生成はもちろん、設計書やテストケース・テストコードの生成、ドキュメントの作成まで幅広い業務の遂行が可能です。コードエディタの域を優に超えており、もはやOSなんじゃないかと言われてるくらいです。
Cursorはプロジェクトを開くと、自動でコードベースをインデックス化してくれます。AIがコードの意味を理解しやすいように索引を作ってあげているイメージですね。
これのおかげで関連するコードを素早く見つけ出したり、精度の高い回答を生成したりできるわけです。
2-2. AI駆動開発を実践する上で重要なスタンス
Cursorをはじめとする開発支援AIツールは多機能で、バージョンアップの頻度もかなり高いです。そのため、我々エンジニアはトレンドを追うことに疲弊し、いつどんな機能を使えばいいか分からなくなってしまうことも少なくありません。
このようなトレンドに振り回されることを防ぐ鍵が、コンテキストエンジニアリングという考え方にあります。それは、いかに少ないトークン量で必要な情報だけをAIに与え、明確に指示ができるかを意味します。具体的に意識すべきシンプルなポイントは次の通りです。
- 情報の選定: AIに渡すコンテキストは、プロジェクトにとって本当に関連性の高いファイルや差分のみに厳選する。不要な情報は徹底的に排除する。
- 情報の要約: AIに与える情報が膨大である場合、本質的な情報のみを要約しておくことで、トークン消費を最小限に抑えながら、重要な文脈を保持する。
- 期待値の明示: AIに求める出力形式、期待する検証方法などを明確かつ簡潔に指定する。
- 小さく試す: 複雑で負荷の高いタスクは、小さく管理可能な単位に分解する。
この4点を実現する手段として、Cursor等の開発支援AIツールを活用することが重要です。
どんな革新的なAIツールが出現しても、コンテキストエンジニアリングのスタンスを保ってさえいれば、そのトレンドに左右されずにAI駆動開発を実践することが可能なのです。
本記事で紹介するCursorの機能も、あくまでコンテキストエンジニアリングを実現するための手段であると考えていただければと思います。
2-3.初期設定
以下のステップに従って、Cursorを使い始めるための準備を進めましょう。
- 公式サイトからインストーラをダウンロードします。
- ダウンロードしたインストーラを起動し、初期設定の画面に従って選択します。
- VSCodeの拡張機能を使用するか確認されますので、必要に応じて選択します。
- ブラウザでサインインを行います。Teamsプラン契約の場合はSSOによるサインインも可能です(弊社でもSSOを利用しております)。SSO登録手順はこちら
- サインインが完了したら、「Log in」を選択します。
もし上記のプロセスでうまくログインまで辿り着けない場合は、以下の記事を参考にしてください。インストールからログインまでの手順がかなり丁寧にまとまっています↓
3. 主要機能の紹介
3-1. tab補完機能
Cursorのtab補完機能は、プロジェクト全体の文脈をもとに、開発者が書き始めた処理の続きを自動で提案してくれます。コードだけでなく、コメントやドキュメントまで提案してくれるのがなかなかアツいんですよねー。
提案はゴーストテキストとして画面に表示され、Tab
キーで受け入れ、Esc
キーで拒否することができます。このシンプルさが作業をスムーズにしてくれます。
具体的には、以下のような補完を提案します。
他にも、関連する別ファイルの編集まで提案してくれたりします。
プロジェクト全体の文脈が元になっているため、どの提案も本当に質が高いです。
ぜひ体験してみて下さい!
3-2. チャット機能
チャット機能はCursorの最もコアな機能です。AIがコードベース全体を探索し、指示されたタスクを自動的・自律的に実行します。コード生成はもちろんですが、うまく活用できれば設計ドキュメントやテストケース・テストコードの生成、バグ分析など、開発者が担うほとんどのタスクを遂行させることが可能です。
エージェントができることざっくり:
- 複数ファイルをまたいでコードの生成・編集
- 必要に応じてターミナルコマンドをその場で生成・実行
- Lintエラーなどの問題を検出し、自動修正
- コードベース分析
- Web検索
使用の流れ
-
チャットの起動:
⌘I
(WindowsはCtrl+I
) を押して起動します。 -
モードの選択:
⌘.
(WindowsはCtrl+.
) を押して、タスクに適したモードを選択します。
基本的にAgentモードでOKなんですが、コードを編集させたくない時や、リポジトリが大規模である場合はAskモードの使用を推奨します。Custom・Backgroundモードは応用的な使い方なので説明は省略します。
3. モデルの選択: ⌘/
(WindowsはCtrl+/
) を押して、使用するLLMのモデルを選択します。
- Autoモード: タスク内容に応じてCursor側が自動で使用モデルを選択します。ただ、基本的には自身で用途に応じてモデルを選択することを推奨します(モデルの説明は後述)。
- MAXモード: 与えるコンテキストが膨大である場合にのみ使用してください。料金が高額になるため、慎重に使いましょう。
4. 指示の入力: エージェントにタスクを指示します。
5. AIのコード提案: エージェントがコードを生成・提案します。ツール(コード検索、ファイル編集、ターミナル実行)を使ってタスクを進め、結果を表示します。
6. 人間によるレビュー: 提案されたコードをレビューし、Keep all
か⌘Enter
(WindowsはCtrl+Enter
) で受け入れ、Undo all
で拒否します。今回は新規作成ですが、編集時はコードブロック単位で差分の受け入れ/拒否が可能です。
一連の流れはこのような感じです↓
以上がチャット機能を利用する基本的な流れとなります。
3-3. インライン編集機能
インライン編集機能は、コード上のちょっとした変更を自然言語で記述して、その場で反映できる機能です。修正したい箇所を選択し、⌘K
(WindowsはCtrl+K
) を押すと、エディター上に入力フィールドが現れます。以下のようにして変更ができます。
先ほど紹介したチャット機能は確かに強力ですが、チャット全体をコンテキストとして渡す必要があり、軽微な修正ひとつのために余計な履歴を追加することになってしまいます。
だからこそ、インライン編集で軽微な修正を完結させる意義は大きいのです。その場限りのコンテキストで処理が済むため、チャット側のエージェントに不要な履歴を背負わせることなく、より本質的な課題解決や大規模な改修に専念させられます。
⌘K
(WindowsはCtrl+K
) はインライン編集が主に使われますが、他にも以下のような機能を搭載しているので抑えておくといいかもしれません。
- Edit Selection: 選択したコード範囲を編集します(先述のインライン編集機能)。
- Edit Full File: ファイル全体を対象に編集します。
- Quick Question: 選択したコードについてAIに素早く質問します。
- Send to Chat: 選択したコードをチャットに送って、より詳細な議論や大規模な変更を依頼します。
4. 実践的な使い方
4-1. .cursor/rules: プロジェクトルールの設定
Cursorでエージェントを利用していると「繰り返し守ってほしいルール」や「プロジェクト特有のスタイル」を持たせたい場面が必ず出てくると思います。それを実現するための仕組みが Project Rules で、プロジェクトルート以下の .cursor/rules/ ディレクトリに .mdc形式のファイルとして保存します。
以下のように/Generate Cursor Rules
コマンドを使用すれば、Cursorが自動でルールファイルを作成してくれます。
また、ルールの適用レベルを選択することが可能です。用途に応じて使い分ければいいかと思いますが、ディレクトリ構成や技術スタックなどの普遍的な情報はAlways Applyを選択しておくことを推奨します。
- Always Apply: 常にコンテキストに含まれる。
- Auto Intelligently: エージェントが必要と判断した場合にのみコンテキストに含める。
- Apply to Specific Files: 指定したファイルが参照される場合のみコンテキストに含める。
- Apply Manual: @{ファイル名}でルールファイルを明示的に指定した場合のみコンテキストに含まれる。
チーム開発の場合はこのルールファイルもGit管理に含めることで、チーム全体で同じコンテキストを共有することも可能となります!!
4-2. .cursorignore /.cursorindexingignore: ファイルの除外設定
Cursorはプロジェクトのコードベースを読み込んでインデックス化しますが、セキュリティやコンテキスト管理の観点から特定のファイルを除外したい場合があります。そんな時に活用できるのが.cursorignore
と.cursorindexingignore
です。
.cursorignoreと.cursorindexingignoreの共通点と違い
- 共通点: 両方ともプロジェクトルートにファイルを作成し、.gitignore構文で除外パターンを記述します。デフォルトで.gitignoreの内容も考慮され、特定の拡張子(例: .env, node_modules)が無視されます。
-
違い:
-
.cursorignore
: ここで指定されたファイルは、AIからのアクセス(Tab, チャット, インライン編集 @シンボル参照等)を完全にブロックします。当然インデックス化もされません。 -
.cursorindexingignore
: インデックス化からのみ除外します。@シンボルでファイルをAIに参照させることは可能ですが、ここで指定されたファイルはコンテキストとして含まれないように制限されます。
-
※ .cursorindexingignore
はデフォルトで用意されていますが、.cursorignore
は自分で作成する必要がある点にも注意です。
グローバルignore設定
ユーザー設定から、全てのプロジェクトに適用されるignoreパターンも指定できます。以下のように環境ファイル系(**/.env, /.env.*)、認証情報系(/credentials.json, /secrets.json)、キーファイル系(/.key, **/.pem, **/id_rsa)などは、デフォルトのパターンに含まれています。
4-3. @シンボルと/
スラッシュコマンド
AIから質の高い提案を引き出したり、意図通りの修正をしてもらうためには、@
シンボルと /
スラッシュコマンドの使いこなしが鍵となります。これらを活用することで、AIとの対話に特定のコンテキストを追加したり、特定の操作を指示したりできます。
@
シンボル
-
@Files-and-folders
:@Button.tsx
のように、ファイルやフォルダでの指定が可能です。 -
@Code
:@add
のように関数単位での指定が可能です。 -
@Docs
:-
既存のドキュメントの使用:
@Docs
と入力すると、利用可能なドキュメントのリスト(フレームワークやライブラリ)が表示されます。そこから参照したいドキュメントを選択してコンテキストに追加可能です。 -
独自のドキュメントの追加: まだ利用できないドキュメントを追加するには、
@Docs
と入力後にAdd new doc
を選択し、ドキュメントサイトのURLを貼り付けます。追加されると、Cursorはそのドキュメントのすべてのサブページを読み込み、理解します。 -
ドキュメントの管理: 追加したドキュメントはCursorの設定画面にある
Indexing & Docs
セクションで確認・管理できます。ドキュメントURLの編集や、不要になったドキュメントの削除、新しいドキュメントの追加が可能です。
-
既存のドキュメントの使用:
-
@Git
:@123
(PR番号)、@feat/new-feature
(ブランチ名)、@a1b2c3d
(コミットハッシュ)といった形で、Gitの情報をAIに渡せます。PRのレビューを依頼したり、過去の変更意図を尋ねたりする際に、私は多用しています。 -
@Past-chats
: 過去のチャット履歴をコンテキストに指定可能です。 -
@Rules
: 先ほど紹介した.cursor/rules
の指定が可能です。 -
@Web
:@https://react.dev/
のようにURLを指定すれば、そのウェブページの内容をAIが読み込んだ上で回答してくれます。@Web
と入力すれば、指示を遂行するのに必要な情報をWebから取ってきてくれます。 -
@terminals
: ターミナルの内容をウィンドウ単位でコンテキストに追加可能です。 -
@Active tabs
: 現在アクティブなエディタタブを参照し、コンテキストに追加可能です。 -
@Linter-errors
: 今開いているファイルで発生中のリンターエラーの修正が可能です。 -
@Recent-changes
: 直近の変更をコンテキストに追加可能です。
@Docs
に関して:Teamプランの方はドキュメント追加時にShare with team
をオンにすれば、チーム全体で@Docs
の内容を共有することも可能です。
ファイルをシンボル指定する場合は、@
入力後に参照させたいファイル名をそのまま入力すれば検索できますし、ドラッグ&ドロップによる参照も可能です。直感的に操作できるようになっているので、色々と触ってみてください。
スラッシュコマンド
/
コマンドでも、エージェントにコンテキストを与えるための様々な操作が可能です。
利用可能なコマンド一覧
-
/Reset Context
: コンテキストをデフォルトの状態にリセットします。 -
/Generate Cursor Rules
: これは先述の通りです。 -
/Disable Iterate on Lints
: リンターのエラーや警告を修正しようとする自動処理を無効化します。リンターの指摘を手動で確認・修正することが可能となります。 -
/Add Open Files to Context
: 現在開いている全てのファイルをコンテキストに追加します。これにより、複数のファイルを一度に参照しながら作業を進めることができます。 -
/Add Active Files to Context
: 現在エディタの画面に表示されているファイルのみをコンテキストに追加します。開いているファイルのうち、画面上に見えているファイルのみが対象となります。
4-4. コンテキスト管理Tips
1つのチャット内で履歴が蓄積していたり、本筋の指示とは関係のないコンテキストが履歴に含まれている場合、エージェントの精度は大きく低下してしまいます。そのため、チャット機能を使用する根本姿勢として、AIの精度を保つためにチャットには必要なコンテキストしか与えず、コンテキストウィンドウを肥大化させないことを心がけなければなりません。
これを実現するためのTipsを以下にまとめました。
-
コンテキスト使用率の確認:
コンテキスト使用率を常に意識し、100%に近づいたら新しいチャットに移行してください。1つのチャットセッションに過度な役割を与えず、タスクが完了したら新しいチャットに切り替えることを推奨します。
-
Duplicate機能:
チャットは複製(Duplicate)が可能であり、コンテキストも全て引き継がせることが可能です。チャット内で質問事項・確認事項がある場合は、複製先でやり取りをすることを推奨します。そうすることでメインのチャットには必要なコンテキストのみを残しておくことが可能となります。
-
チャットの要約:
どれほどコンテキストを綺麗に保持していても、使用率が100%になってしまうことはあります。そんな時は、チャット内で「今までの対話内容を網羅的に整理して」と指示し、要約ドキュメントを作らせましょう。それを新しいチャットの初期コンテキストとして使用することで、必要なコンテキストを保持したまま新しいチャットに移行することが可能となります。 -
エクスポートと再利用:
チャットのやり取りをMarkdown形式でエクスポートして保存することもできます。新規チャットで参照させてもいいですし、ChatGPTなど別のAIツールに添付した上で何か相談事をするとかも結構おすすめです。
4-5. 爆速コーディング戦略
複数チャットタブによる並列作業
Cursorでは、⌘T
(WindowsはCtrl+T
) を押すことで複数のチャットタブを同時に開くことができます。各タブは独立した会話履歴とAIのコンテキストを保持するため、並列での作業が可能です。
また、チャット画面はデフォルトでエディタの右側に固定配置されているのですが、Open As Editor
ボタンを使用すればチャット画面を同時に3,4つほど眺めることできるので結構おすすめです↓
並列作業例として、例えば設計フェーズにおいて各タブで異なる機能の設計案と実装計画を並行して検討できます。設計・実装・質問専用のタブをそれぞれ用意しておくのも良いですね。設計が完了している場合は、影響範囲を明確にして重複がないことを確認した上で、3タブを立ち上げて並列実装するのもおすすめです↓
視覚的に把握しやすいのは3タブ程度ですが、Cursorは10タブくらいまで安定して動作します。自信がある方は、それくらいの規模で並列稼働させるのも選択肢として有効です。
エージェントがプロンプトに対するタスクを完了する度にデスクトップ通知を送信してくれる点も、並列実装をする上ではポイント高いです↓
ToDo機能&キュープロンプトによる長時間稼働
ToDoリスト機能は、エージェント自身がタスクの依存関係を考慮してToDoリストを作成し、計画的に作業を進めてくれるものです。その進捗もリアルタイムで確認できるため、大規模な変更でも安心して任せられます。ToDoリストを作成するかどうかはエージェント側が自動で判断してくれますが、プロンプトで「ToDoリスト機能を使って段階的に実行して」などと指定すると、確実に作成させることができます。
さらに便利なのがキューメッセージ機能です。チャット内でエージェントが作業している間に、次の指示をどんどんキューに追加できます。作業の流れを止めずに次々とタスクを依頼できるので非常に便利です。
以下のように、ToDoリスト機能とキューメッセージ機能を組み合わせれば、規模の大きいタスクを分解しつつ、追加の指示や調整をキューに溜めておくことで、エージェントの長時間稼働をより柔軟にコントロールすることが可能となります。
複数のチャットタブを活用して並列作業を行い、ToDo機能とキューメッセージ機能でタスクの長時間稼働を実現することで、開発スピードを大幅に向上させることが可能となります。
なお、ToDo機能・キューメッセージ機能を使用には、Cursor Settings
→Chat
→To-Do List
とQueue Message
をONにする必要があるのでお忘れなく↓
4-6. いつ、どのモデルを使う?
Cursorでは、さまざまなLLMプロバイダーのモデルを利用可能です。タスクに応じて最適なモデルを選択できます。ここでは、主なモデルをタスクごとにグルーピングし、おすすめのモデルをピックアップしてみました。
タスク | おすすめモデル | 特徴 |
---|---|---|
コーディング | GPT-5 | 忠実で優秀だけど高い |
Claude 4.1 Sonnet最新 | 忠実で優秀だけど高い | |
GPT-5 mini | 精度が高く安い。でもちょっと遅い | |
Gemni 2.5 Flash | 暴れがちだけど安くて早い | |
設計相談 | GPT-5 | ピンポイントで最適な提案をくれる |
GPT-5 mini | GPT-5には劣るけど優秀で安い | |
Gemini 2.5 Pro | 漏れのない提案をくれる。たまに冗長 | |
質問 | 2.5 Flash | 安くて早い |
Claude 3.5 Sonnet | 図解も得意 | |
思考整理 | Grok4 | ダントツでオススメ |
GPT-5 mini | GPT-5じゃなくても十分な気がする | |
Gemini 2.5 Pro | 新たな視点をくれるイメージ |
これらのモデルの特性は私の主観です。あくまで参考程度に見てください(汗
5. まとめと次の一歩
まとめ
本記事では、AI統合型エディタ「Cursor」の基礎から活用術までを詳しく解説しました。たくさん書きましたが、結局は「コンテキストをどう整理して渡すか」が全てです。その手段として、プロジェクトルールや@シンボルなどの機能を利用してみてください。そうすることでCursorを有効活用し、開発効率は大幅に向上するはずです。
次の一歩
さらに一歩進んだ活用として、BugBotによる自動コードレビュー、メモリ機能、SlackやLinearとの連携、MCP、非同期型エージェントを提供するBackground Agent、Cursor CLIなどの機能が挙げられます。今後はこれらの応用的な機能についても発信していきたいと思います!