💸

Cursor上級テクニック〜月額$20の真価を解放せよ〜

2024/12/21に公開

こんにちは、トグルホールディングスのAIエンジニアの中村です!

トグルホールディングスエンジニアアドベントカレンダーの21日目の記事です!

本記事では、Cursorを基本的に使いこなしている開発者がさらに一歩進んで活用するためのニッチなテクニックを紹介します。

「Cursor Proにせっかく月20ドル払っているから、もう一段活用の幅を広げたい!」 という方にこそ読んでいただきたい内容です!

はじめに

Cursorの主要機能を一通り使いこなしている方も多いかと思います。
しかし、月20ドルという投資をするからには、表面上の使い方だけではもったいない!

本記事では、案外見落とされがちな設定や機能を掘り下げて、Cursorの潜在能力をさらに引き出すための具体的なテクニックを紹介します。

少しの手間をかけるだけで、Cursorはあなたの プロジェクト全体を俯瞰してサポートする頼れる“参謀” になり得るのです!

https://www.cursor.com/

1. ChatとComposer、それぞれの真価を知る

Cursorには大きく分けて「Chat」と「Composer」の2種類のモードが存在します。公式ドキュメントでは以下のように定義されています。

Cursor Chat helps you search and understand your code.
Use it to explore your codebase, ask questions, and get explanations. You can search your code with ⌘⏎.

Composer helps you write and edit code.
It provides a workspace where you can generate new code and apply changes directly to your files.

一言でまとめると、Chatはコードベースの探索・理解に特化し、Composerはコードの生成・編集に特化しています。

Chatモード

  • コードベースの探索と理解が主目的
    • コードに関する質問や説明を求める際に適しています。
    • ⌘⏎ でコードベース内検索ができるため、特定ファイルやメソッドの位置をサッと探して知りたい情報を得るのに便利です。
  • 素早い回答が必要な場合に最適
    • Chatウィンドウに気軽に問いかける感覚でやり取りができ、即時的な返信を得られます。
    • 要件定義やバグ発見時など、手早く「これってどうなってたっけ?」と確認したい時にも重宝します。

Composerモード

  • コードの生成と編集が主目的
    • ⌘I で起動して、⌘N で新規Composerを作成。
    • Composer上でコードを生成・編集し、その結果をファイルに直接適用することが可能です。
  • より構造的なコード提案や編集作業に向いている
    • 単発の質問というよりは、連続的・段階的にコードを作り上げたいときに最適です。
    • やや複雑なコードブロックの生成や既存ロジックのリファクタリングなど、腰を据えて作業したい場合におすすめです。

どう使い分ける?

要件定義フェーズやバグ調査にはChat

  • プロジェクトの仕様や既存コードの挙動を掴むときに役立ちます。
  • また、クイックに疑問を解消したい場合もChatでサクッと聞くのがおすすめです。

実装フェーズやリファクタリングにはComposer

  • 新規コードを書く・既存コードを大幅に書き換えるなど、手が大きく動く作業にはComposerがピッタリ。
  • 細かい修正から大きな機能追加まで、Composerなら生成したコードを即座にファイルに反映してくれます。

上記のように、 Chatは「探索と理解」・Composerは「生成と編集」 という役割が明確に分かれているため、プロジェクトの進行状況や目的に合わせて上手に切り替えましょう。最初の要件固めやコードリーディングにはChat、その後の実装と改修にはComposer、という流れを意識するだけで、Cursorの活用効率はぐっと高まります。

2. Composerには2つのモードがある?!

Composerは、コードを生成・編集する「場所」としての役割を担いますが、その内部でもさらにNormalモードAgentモードという2つのモードがあります。公式ドキュメントによると、それぞれ特徴が異なるため、活用方法を知っておくことでComposerの潜在能力をフルに引き出せます。

Normalモード

  • 基本的なコード探索と生成に特化
    • コードベースやドキュメントの検索、Web検索など、必要な情報を取り込みつつコードをサクッと生成できます。
    • @symbolコマンド(@codebase@Definitionsなど)を使ってコードの一部を引っ張ってくる、といった素早い参照も可能です。
  • 使い勝手は「スタンダードなAIコーディング補助ツール」
    • より人間の指示や意図を素直に汲み取ってコードを生成するので、複雑な自動化よりは確実性重視の補助を求めるときに向いています。

Agentモード(より高度な支援)

  • プロアクティブに作業をサポート
    • @Recommended による関連コンテキストの自動取得や、ターミナルコマンドの実行なども可能。
    • たとえば「依存関係をインストールして」と指示すると、ターミナルコマンドを生成・実行するところまで支援してくれます。(※ 設定からYolo Modeの有効化が必要)
  • ファイルの作成や修正、意味的なコード検索も強力
    • 「この処理を最適化して」とお願いすると、自動で候補を示したり、関連するファイルも開いて修正してくれたりします。
    • 内容理解を伴った提案を行うため、ある程度複雑なロジックでも一気に手伝ってもらえるのがAgentモードの強みです。

ペアプログラミング感覚のAgent活用事例

  • コードレビューの自動化
    • 「このファイルの可読性を改善して」「テストカバレッジを上げて」と依頼するだけで、Agentが直接ファイルを修正案ごと提示してくれます。
    • もちろん修正結果を丸呑みにするのではなく、提案を見ながら最終確認する形で進めると安心です。
  • 新規機能の叩き台を一気に生成
    • 「ユーザー管理機能を追加してほしい。エンドポイントは/〇〇、DBは××を使って」など、要件を伝えると雛形コードをサッと生成してくれます。
    • その後、必要に応じてNormalモードで細かな修正を加えていく、といった使い分けも便利です。

NormalかAgentか、どう選ぶ?

  • まずはNormalモード

    • シンプルなコード補完や既存コードのリファクタリング、ちょっとした修正が中心ならNormalで十分。
  • 強力に自動化したいならAgentモード

    • ターミナル操作や複数ファイルの横断的な修正、関連ファイルの検索・自動修正など、より手厚いサポートが欲しいならAgentを投入。

NormalモードとAgentモードを状況に合わせて使い分けることで、 「ちょっとした補助」から「がっつり手を動かしてもらう自動化」 までカバー可能になります。

3. Rules for AI と .cursorrulesでCursorの出力を思い通りにチューニングする

Cursorでより高品質・一貫性のあるコードを得るために、グローバル設定プロジェクト単位設定の2つのルール設定が重要です。これらを適切に活用することで、AIの提案内容を自分たちの開発方針に寄せることが可能になります。

「Rules for AI」でグローバルな振る舞いを定義する

  • 設定場所
    Cursor Settings > General > Rules for AI

  • 適用範囲
    Chat、Composer、Ctrl/⌘ + Kなど、Cursorが提供するすべての機能

  • 主な活用例

    1. 使用言語・実装スタイルの規定
      • 例:「TypeScriptで型を明示し、純粋関数を基本とした関数型プログラミングを採用。副作用は専用ユーティリティに隔離する」
      • これにより、Cursorは型安全で副作用の少ないコードを自然と提案するようになり、一貫したコーディングスタイルを維持できます。
    2. コーディング規約の共有
      • 変数の命名規則、フォーマット、ファイル分割方針など
    3. 基本フローの指定
      • 例:「最初に擬似コードを書き、それを確認してから本実装に移る」「誤りがあれば謝罪ではなく修正を優先」
      • AIに作業工程を意識させることで、初めからテストを含めたコード提案など、品質担保につながる可能性があります。

.cursorrulesでプロジェクト固有のルールを管理する

グローバル設定とは別に、プロジェクト単位でルールをカスタマイズできるのが.cursorrulesファイルです。

  • 配置場所
    プロジェクトのルートディレクトリ(例:/my-project/.cursorrules

  • 特徴

    1. プロジェクト固有の要件やディレクトリ構造
      • 「Reactコンポーネントはsrc/components/下に」「DBアクセスには必ず共通モジュールを使用」など、ローカルなルールを厳密に反映。
    2. チームの独自方針を反映
      • 「コメントは英語で統一」など、チームや製品の方針を強制できる。
    3. グローバル設定との使い分け
      • 全体的なコーディング規約は「Rules for AI」に、プロジェクト固有ルールは.cursorrulesに、と使い分けるとスマートです。

これらのルール設定を駆使することで、Cursorはよりプロジェクトの意図に合った返答やコード生成をしてくれるようになります。

ぜひ「Rules for AI」と.cursorrulesを使い分けて、チームや個人のコーディングスタイルに最適化された開発環境を整えてみてください。

4. .cursorignoreで参照情報を厳選し、的確な回答を得る

大規模なリポジトリほど、Cursorが参照する必要のないソースや生成ファイルが含まれています。そうしたノイズをカットし、 「必要な情報だけ」 をCursorに読み込ませる仕組みとして有効なのが、.cursorignoreファイルです。

インデックス対象から外す戦略

Cursorはプロジェクトを自動でインデックスし、質問への回答やコード補完に活用します。しかし、膨大なファイルが含まれるほど検索コストが上がり、回答の正確性や速度が下がりがち。そこで.cursorignoreを使い、不要ファイルやフォルダを指定してインデックス対象を絞り込むことで、処理を効率化し、回答の精度を高めることができます。

  • スピードアップ
    不要ファイルが除外されることで、Cursorが処理するデータ量が減り、応答が早くなる。

  • 精度向上
    余計なビルド成果物やログを排除して、本当に参照すべきコードだけをAIが読み取りやすくなる。

Tip: .cursorignore.gitignoreと同じ要領でパターンマッチを行うため、既存の.gitignoreを流用したり、そこに追記する形が最も簡単です。

.cursorignoreの例

# ビルド生成物、環境を除外
build/
venv/
node_modules/

# ログファイル・キャッシュファイルを一括除外
*.log
__pycache__/

# 特定の設定ファイルを除外
config.json

このように、プロジェクト固有の生成物やキャッシュディレクトリを積極的に除外することで、Cursorは “最新かつ必要な情報” にだけフォーカスして回答を返すようになります。コード生成に関連のないファイル群によりインデックスが乱されないため、クリーンなコードベース を維持しやすくなるのが大きなメリットです。

モノレポ構成との相性

1つのリポジトリ内に複数のプロジェクトを抱えるモノレポ構成では、開発者が取り組んでいる一部プロジェクト以外はインデックス対象に含めないほうが効率的な場合があります。たとえば、リポジトリ全体をインデックスする必要がなく、一部のディレクトリだけ参照すれば十分ということも多いでしょう。

  • メリット

    • 他プロジェクトに関する不要なコードの解析を避けられ、回答の精度とスピードが向上
    • 開発中のフォルダだけを集中して読ませるため、ノイズが大幅に減少
  • 運用方法

    • .cursorignoreに、担当外プロジェクトのディレクトリを明示的に除外する
    • 開発フェーズや担当範囲が変わったら、適宜 .cursorignore を更新する

こうすることで、モノレポ全体を参照対象とする無駄を回避し、必要な範囲だけCursorに食わせる柔軟な運用が可能になります。

5. Notepadsを活用して知識ベースを構築し、AIと連携する

Notepadsは、Markdown形式でプロジェクト情報やテンプレート、コードスニペットなどを一元管理できる機能です。表面的には「個人Wiki」に見えますが、その真価はChatやComposerから@Notepadを使って呼び出せるところにあります。これによって、メモやコード例、ドキュメントテンプレートをいつでも即座にプロンプトへ組み込み、AIに参照させることが可能です。以下に、活用のポイントをまとめます。

  1. ドキュメント・テンプレートの集中管理

    • アーキテクチャの検討メモや要件定義のテンプレート、特定のフレームワーク設定をMarkdown形式で整理。
    • それを@Notepad経由でChatやComposerに展開すれば、必要なタイミングでスムーズに内容を呼び出せます。
    • たとえば「AIに投げる標準プロンプト(TypeScriptでのコード生成指示)」「エッジケースのテスト用テンプレート」などを準備しておくと、プロンプト記述の時間を削減できます。
  2. コードスニペット&知識ベースをAIが即座に参照

    • よく使う関数やクラスの実装例、トラブルシューティング方法をNotepadsに保存しておけば、AIがその情報をもとに回答を行いやすくなります。
    • たとえば新機能のコードを書いている最中に「以前作った○○のサンプルを参考にしたい」と思ったら、@Notepadで該当するノートを呼び出してAIに統合的に提示し、最適な実装案を受け取ることが可能です。
  3. AIとの相乗効果でメモを強化

    • Notepads内のMarkdownに対し、「コードブロックを整理して」「要点をリスト化して」といった依頼をAIへ出し、プロンプトから直接リライトや要約を行うとドキュメント保守がスムーズに。
    • ドキュメント生成機能などを組み合わせることで、実装と資料がリアルタイムにリンクし、情報が更新しやすい仕組みを作れます。

このように、Notepadsを使えば単なる個人Wikiに留まらず、プロジェクト情報やコード例を即座にAIへ“注入”できる柔軟な知識ベースとして運用できます。プロンプトを使い回す頻度が高い開発者や、チーム内で共通テンプレートを再利用したいシーンでは、特に効果が大きいでしょう。

6. まとめ:Cursorにさらなる価値を見出すために

ここまで紹介してきたChat / Composerの使い分けやAgentモード、Rules for AI / .cursorrulesによる高度なチューニング、.cursorignoreやNotepadsなどの隠れた機能は、いずれも日々の開発ワークフローを大きく変えるポテンシャルを持っています。

  • ChatやComposerを状況に応じて使い分けることで、コードリーディングから実装・リファクタリングまでスムーズに進行
  • Agentモードを導入すれば、複雑な自動化やファイル横断的な修正もラクラク
  • Rules for AIや.cursorrulesで出力をコントロールし、チームやプロジェクトの開発方針に沿った一貫性のあるコードを生成
  • .cursorignoreを駆使してモノレポや大規模プロジェクトのノイズを排除し、必要な情報だけを効率よく読み込む
  • Notepadsで知識ベースを構築して必要なテンプレートやスニペットをいつでも@Notepadで呼び出せるようにする

はじめは設定やルールづくりが面倒に感じるかもしれませんが、一度整備すれば毎日の開発効率やコードの品質が明らかに向上します。Cursorを単なる「自動コード生成ツール」としてだけでなく、 プロジェクト全体を俯瞰してサポートする頼れる“参謀” として使いこなしていきましょう。

Cursorの機能を最大限に生かして、ぜひあなたの開発現場に合わせた最適な使い方を模索してみてください!

GitHubで編集を提案

Discussion