はじめに

Cursorは強力なAI駆動開発ツールですが、その真価を発揮するには適切な使い方を理解する必要があります。同じ機能を使っても、プロンプトの書き方やコンテキストの与え方によって、AIの出力品質は大きく変わります。

本記事では、Cursorの機能を最大限に活用し、開発生産性を大幅に向上させるためのベストプラクティスを解説します。この記事を読むことで、以下のことができるようになります。

  • AIに効果的なプロンプトを書き、質の高い回答を得られる
  • @メンションを活用して適切なコンテキストを提供できる
  • AIモデルを用途に応じて使い分けられる
  • 複数タブで効率的に並行作業を進められる
  • チェックポイントを活用して安全に実験的な開発ができる

実行環境と前提条件

実行環境

項目 要件
オペレーティングシステム Windows 10以上、macOS 10.15以上、Ubuntu 20.04以上
Cursor バージョン 2.3以降(2026年1月時点の安定版)
インターネット接続 必須(AIモデル利用に必要)
料金プラン Pro以上推奨(高度なモデル利用のため)

前提条件

  • Cursorがインストールされ、基本操作を理解していること
  • Cursor Agentの基本的な使い方を知っていること
  • 開発プロジェクトをCursorで開いていること

期待される結果

本記事の内容を実践することで、以下の状態を達成できます。

  • AIとの対話効率が向上し、少ない試行で目的を達成できる
  • コード生成の品質が向上し、手直しの時間が減少する
  • 複雑なタスクを効率的に分割・実行できる
  • 実験的な変更を安全に試せる

効果的なプロンプトの書き方

プロンプトの書き方は、AIの出力品質を決定づける最も重要な要素です。

プロンプト設計の基本原則

効果的なプロンプトには、以下の要素が含まれています。

要素 説明
明確なゴール 何を達成したいか 「ユーザー認証APIを実装する」
具体的な要件 必要な仕様 「JWT、リフレッシュトークン対応」
制約条件 守るべきルール 「既存のUserモデルを使用」
期待する形式 出力の形式 「TypeScriptで、テスト付きで」

悪いプロンプトと良いプロンプトの比較

悪いプロンプトの例

1
認証機能を作って

このプロンプトには以下の問題があります。

  • 認証の種類が不明(JWT? セッション? OAuth?)
  • 対象のフレームワークが不明
  • 既存コードとの関係が不明

良いプロンプトの例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
NestJSでJWTベースのユーザー認証機能を実装してください。

要件:
- POST /auth/register: ユーザー登録(email、password)
- POST /auth/login: ログイン、JWTトークンとリフレッシュトークンを返す
- POST /auth/refresh: リフレッシュトークンでアクセストークンを更新
- GET /auth/me: 認証済みユーザーの情報取得

制約:
- @src/users/user.entity.ts の既存Userエンティティを使用
- パスワードはbcryptでハッシュ化
- JWTの有効期限は15分、リフレッシュトークンは7日

テスト:
- 各エンドポイントの単体テストを含める

段階的な指示の技法

複雑なタスクは、一度に全てを依頼するのではなく、段階的に進めます。

ステップ1: 計画の作成

1
2
3
4
マルチテナント機能を実装する前に、まず実装計画を作成してください。
- 必要なファイルとその役割
- データベーススキーマの変更点
- 既存コードへの影響

ステップ2: 計画のレビュー

1
2
3
計画を確認しました。以下の点を修正してください:
- テナントIDはUUIDではなく、短い文字列にする
- 共有データベース方式ではなく、スキーマ分離方式にする

ステップ3: 実装の開始

1
2
修正した計画で実装を開始してください。
まず、データベーススキーマの変更から始めてください。

コンテキストを意識した指示

AIは与えられたコンテキストに基づいて回答します。関連するファイルや情報を明示的に示すことで、より適切な回答が得られます。

1
2
3
4
5
6
@src/services/payment.service.ts のStripe連携を参考にして、
PayPal決済機能を同じパターンで実装してください。

- 既存のPaymentServiceインターフェースを実装
- エラーハンドリングは既存のパターンに従う
- ログ出力も既存と同じフォーマットで

反復的な改善

最初の出力が完璧でなくても、フィードバックを通じて改善できます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
初回指示:
ユーザー一覧を表示するReactコンポーネントを作成してください。

フィードバック1:
ローディング状態とエラー状態の表示を追加してください。

フィードバック2:
ページネーションを追加し、1ページあたり10件表示にしてください。

フィードバック3:
検索機能を追加し、名前とメールアドレスで絞り込めるようにしてください。

コンテキスト(@メンション)の適切な提供

@メンションを活用することで、AIに適切なコンテキストを効率的に提供できます。

@メンションの種類と用途

Cursorでは以下の@メンションが利用可能です。

@メンション 説明 用途
@file 特定のファイルを参照 実装の参考、修正対象の指定
@folder フォルダ全体を参照 関連ファイル群の把握
@codebase コードベース全体を検索 既存実装の調査
@web Web検索 最新ドキュメント、ライブラリ情報
@docs ドキュメントを参照 公式ドキュメントの確認
@git Git履歴を参照 変更履歴、差分の確認

ファイル参照の効果的な使い方

単一ファイルの参照

1
2
@src/models/user.model.ts を確認して、
このモデルに合わせたバリデーションスキーマを作成してください。

複数ファイルの参照

1
2
@src/services/auth.service.ts と @src/middleware/auth.middleware.ts を確認して、
認証フローの問題点を指摘してください。

フォルダの参照

1
2
@src/components/forms/ 以下のコンポーネントを確認して、
同じパターンで新しい ContactForm コンポーネントを作成してください。

@codebaseの活用

@codebaseを使うと、AIがコードベース全体をセマンティック検索して関連コードを見つけます。

1
2
@codebase このプロジェクトでStripeを使っている箇所を探して、
同じパターンでPayPal連携を実装してください。
1
2
@codebase エラーハンドリングのベストプラクティスを探して、
新しいサービスに適用してください。

@webの活用

外部の最新情報が必要な場合に使用します。

1
2
@web Next.js 15の新しいApp Routerの使い方を調べて、
このプロジェクトに適用する方法を提案してください。
1
2
@web Prisma 6のマイグレーション方法を確認して、
現在の5.xからのアップグレード手順を教えてください。

コンテキスト提供のベストプラクティス

flowchart TD
    A[タスクの種類] --> B{既存コードに関連?}
    B -->|はい| C[@fileで関連ファイルを指定]
    B -->|いいえ| D{外部情報が必要?}
    D -->|はい| E[@webで最新情報を検索]
    D -->|いいえ| F[@codebaseで類似実装を探す]
    
    C --> G[具体的な指示を追加]
    E --> G
    F --> G
    G --> H[プロンプトを送信]

効果的なコンテキスト提供の例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
@src/services/notification.service.ts を参照してください。
このサービスと同じパターンで、SMS通知サービスを実装してください。

参考:
- @src/config/sms.config.ts にSMS設定があります
- @src/types/notification.types.ts の型定義を使用してください

要件:
- Twilio APIを使用
- 送信失敗時は3回までリトライ
- 送信履歴をログに記録

過剰なコンテキストを避ける

必要以上のコンテキストを与えると、AIの焦点がぼやけます。

避けるべき例

1
2
@src/services/ @src/models/ @src/controllers/ @src/middleware/
すべてを確認して、バグを修正してください。

推奨する例

1
2
@src/services/order.service.ts の calculateTotal メソッドで
税計算が間違っています。小数点の丸め処理を確認してください。

AIモデルの使い分け

Cursorでは複数のAIモデルを選択できます。用途に応じた使い分けが効率化の鍵です。

利用可能なモデルの特徴

2026年1月時点で利用可能な主要モデルの特徴は以下のとおりです。

モデル 特徴 推奨用途
Claude 4.5 Sonnet バランス型、高速 一般的なコーディング
Claude 4.5 Opus 最高品質、深い推論 複雑な設計、難しいバグ修正
GPT-5.2 広範な知識 一般的な質問、ドキュメント生成
Gemini 3 Pro コスト効率 大量のコード生成
Cursor Tab 超高速補完 Tab補完専用

速度重視の場面

以下の場面では、高速なモデルを選択します。

  • Tab補完による日常的なコーディング
  • 単純なコード生成
  • 定型的なタスク
  • 大量のファイル処理
1
2
3
4
5
6
推奨モデル: Claude 4.5 Sonnet、Cursor Tab

例:
- 関数のシグネチャ補完
- インポート文の追加
- 単純なCRUD実装

品質重視の場面

以下の場面では、高品質なモデルを選択します。

  • 複雑なアーキテクチャ設計
  • パフォーマンス最適化
  • セキュリティレビュー
  • 難しいバグの調査
1
2
3
4
5
6
推奨モデル: Claude 4.5 Opus

例:
- マイクロサービス設計
- レガシーコードのリファクタリング
- セキュリティ脆弱性の分析

モデル選択のワークフロー

flowchart TD
    A[タスク開始] --> B{タスクの複雑さ}
    B -->|単純| C[Claude 4.5 Sonnet]
    B -->|複雑| D[Claude 4.5 Opus]
    B -->|Tab補完| E[Cursor Tab]
    
    C --> F{結果の品質}
    F -->|満足| G[完了]
    F -->|不満足| H[Opusで再実行]
    
    D --> I{結果の品質}
    I -->|満足| G
    I -->|不満足| J[プロンプトを改善して再実行]
    
    H --> I
    J --> I

コスト意識のある使い分け

Proプランでもリクエスト数に制限があるため、コストを意識した使い分けが重要です。

タスク 推奨モデル 理由
コード補完 Cursor Tab 最も効率的
一般的な質問 Sonnet 十分な品質
初期実装 Sonnet 高速なイテレーション
最終レビュー Opus 品質保証
ドキュメント生成 Sonnet コスト効率

複数タブによる並行作業

複数のチャットタブを活用することで、効率的に並行作業を進められます。

タブの戦略的な使い分け

トピック別の分離

1
2
3
4
タブ1: [フロントエンド] UIコンポーネントの実装
タブ2: [バックエンド] API設計と実装
タブ3: [DB] スキーマ設計とマイグレーション
タブ4: [テスト] テストコードの作成

作業フェーズ別の分離

1
2
3
4
タブ1: [現在] メイン作業
タブ2: [調査] 技術調査・ドキュメント確認
タブ3: [レビュー] コードレビュー対応
タブ4: [バグ] バグ調査・修正

並行作業の実践例

以下は、新機能実装時の並行作業の例です。

タブ1: データモデルの設計

1
2
3
4
5
6
新しい「プロジェクト」機能のデータモデルを設計してください。

要件:
- プロジェクト名、説明、オーナー、メンバー
- 作成日、更新日、ステータス
- タスクとの関連

タブ2: API設計(タブ1と並行)

1
2
@web RESTful APIのベストプラクティスを確認して、
プロジェクト管理APIのエンドポイント設計を提案してください。

タブ3: UI設計(タブ1、2と並行)

1
2
@codebase 既存のダッシュボードコンポーネントを確認して、
プロジェクト一覧画面のワイヤーフレームを提案してください。

タブ間の情報共有

あるタブでの成果を別のタブで活用します。

1
2
3
4
5
6
7
タブ1での成果:
「プロジェクトのデータモデルが完成しました」

タブ2での指示:
タブ1で設計したデータモデルに基づいて、
@src/models/project.model.ts を確認し、
このモデルに対するCRUD APIを実装してください。

ピン留めによる重要タブの保持

重要な会話はピン留めして保持します。

  1. 重要なタブを右クリック
  2. 「Pin Chat」を選択
  3. ピン留めされたタブは左側に固定
1
2
3
4
ピン留め推奨:
- プロジェクト全体の設計方針
- 重要な技術的決定
- 繰り返し参照するドキュメント

チェックポイントを活用した実験的開発

チェックポイント機能を活用することで、安全に実験的な変更を試せます。

実験的開発のワークフロー

flowchart TD
    A[実験開始] --> B[チェックポイント作成]
    B --> C[実験的変更を実行]
    C --> D{結果の評価}
    D -->|成功| E[変更を保持]
    D -->|失敗| F[チェックポイントに復元]
    F --> G[別のアプローチを試す]
    G --> C
    E --> H[Gitコミット]

チェックポイントの作成タイミング

以下のタイミングでチェックポイントを作成します。

タイミング 理由
大きな変更の前 失敗時に戻れるように
実験的なアプローチの前 比較検証のため
動作確認後 安定した状態を保存
複数ファイル変更の前 整合性を保証

実験的変更の実践例

シナリオ: パフォーマンス最適化の実験

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
ステップ1: チェックポイントの作成
「現在の状態でチェックポイントを作成してください。
これからパフォーマンス最適化を試します。」

ステップ2: アプローチAの実験
「@src/services/data.service.ts のデータ取得を
並列処理に変更してください。」

ステップ3: 評価
「変更後のパフォーマンスを測定しましたが、
期待ほど改善しませんでした。」

ステップ4: 復元と別アプローチ
「チェックポイントに復元して、
代わりにキャッシュを導入するアプローチを試してください。」

A/Bテスト的な実験

複数のアプローチを比較する場合の方法です。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
アプローチA:
1. チェックポイント作成(初期状態)
2. アプローチAを実装
3. 結果を記録
4. チェックポイントに復元

アプローチB:
1. アプローチBを実装
2. 結果を記録
3. 比較して優れた方を採用

最終ステップ:
採用したアプローチを実装し、Gitコミット

マルチエージェントとの組み合わせ

Cursor 2.0以降では、マルチエージェント機能を使って複数のアプローチを並列で試せます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
以下の2つのアプローチを並列で実装してください:

Agent 1: キャッシュベースのアプローチ
- Redisを使用したキャッシュ層の追加
- キャッシュの無効化戦略

Agent 2: クエリ最適化アプローチ
- N+1問題の解消
- インデックスの最適化

完了後、パフォーマンスを比較してください。

Rulesの活用

Project Rulesを活用することで、AIの出力を一貫させ、品質を向上させます。

効果的なRulesの例

コーディング規約のRule

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# Coding Standards

## TypeScript
- strictモードを使用
- anyの使用は禁止、unknownを使用
- 関数には戻り値の型を明示
- インターフェースの命名はI接頭辞なし

## ファイル構成
- 1ファイル1コンポーネント
- テストは__tests__ディレクトリに配置
- 型定義は*.types.tsファイルに分離

## 命名規則
- 変数・関数: camelCase
- クラス・型: PascalCase
- 定数: UPPER_SNAKE_CASE

エラーハンドリングのRule

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Error Handling

## 例外処理
- カスタム例外クラスを使用
- エラーメッセージはユーザーフレンドリーに
- スタックトレースは本番環境では非表示

## ログ出力
- エラーレベル: error, warn, info, debug
- 機密情報はログに出力しない
- 構造化ログを使用(JSON形式)

Rulesとプロンプトの組み合わせ

Rulesを設定した上で、プロンプトで追加の指示を出します。

1
2
3
4
5
6
7
プロジェクトルールに従って、
ユーザー登録APIを実装してください。

追加要件:
- メールアドレスの重複チェック
- パスワード強度の検証
- ウェルカムメールの送信

生産性向上のチェックリスト

日常的に意識すべき項目をチェックリストにまとめます。

プロンプト作成時

1
2
3
4
5
[ ] ゴールが明確か
[ ] 具体的な要件が含まれているか
[ ] 制約条件を明示しているか
[ ] 期待する形式を指定しているか
[ ] 関連ファイルを@メンションしているか

タスク開始時

1
2
3
4
[ ] 適切なAIモデルを選択したか
[ ] 必要なコンテキストを準備したか
[ ] チェックポイントを作成したか(大きな変更の場合)
[ ] 専用のタブを開いたか

タスク完了時

1
2
3
4
[ ] 生成されたコードをレビューしたか
[ ] テストを実行したか
[ ] 変更をGitコミットしたか
[ ] チャット履歴を整理したか

まとめ

Cursorの生産性を最大化するためのポイントを振り返ります。

  • 効果的なプロンプト: 明確なゴール、具体的な要件、制約条件を含める
  • 適切なコンテキスト: @メンションで必要な情報のみを提供
  • モデルの使い分け: 速度重視ならSonnet、品質重視ならOpus
  • 並行作業: 複数タブでトピックを分離し、効率的に進める
  • 実験的開発: チェックポイントで安全に試行錯誤
  • Rules活用: プロジェクト固有のルールでAI出力を一貫させる

これらのベストプラクティスを日常的に実践することで、AI駆動開発の効率は飛躍的に向上します。最初は意識的に実践する必要がありますが、習慣化すれば自然と最適なワークフローが身につきます。

参考リンク