[Cursor-Guide]大規模コードベース
Cursorで大規模コードベースを管理する専門技術を学びましょう。複雑なプロジェクトを効率的かつ自信を持ってナビゲート、理解、貢献する方法を発見してください。
[Cursor-Guide]大規模コードベース
オリジナルリンク: オリジナルリンク
Cursorで大規模コードベースを扱う方法
大規模コードベースを扱うことは、小規模なプロジェクトに比べて新たな課題をもたらします。Cursor自身のコードベース拡張経験と、大規模コードベースを管理する顧客からの知見を活かし、複雑性の増大に対処する有用なパターンを発見しました。
このガイドでは、大規模コードベースに有用と判明した技術のいくつかを紹介します。
チャット機能で不慣れなコードを迅速に理解
大規模コードベース、特に初めて扱う場合のナビゲーションは困難を伴います。従来はgrepや検索、クリック操作で目的のコード部分を探す必要がありました。チャット機能を使えば、質問することで探しているものを見つけ、その動作について詳細な説明を得ることができます。
ここでは、Cursorのコードベースインデックス作成の実装詳細を見つける手助けを受け、理解を容易にするための例も要求しています。
Cursorがコードベース構造をより深く理解できるようにするため、設定からプロジェクト構造を含めるを有効にしてパフォーマンスを向上させてください。
ドメイン固有知識のルールを作成
新しい協力者をコードベースにオンボーディングする場合、意味のある貢献を開始できるようにするためにどのようなコンテキストを提供しますか?
この質問への回答は、Cursorが理解すべき貴重な情報でもあります。組織やプロジェクトごとに、ドキュメントに完全には記載されていない潜在的な知識が存在します。ルールを効果的に使用することが、Cursorに全体像を理解させる最良の方法です。
例えば、新機能やサービスの実装方法について指示を書く場合、後世のために短いルールとして文書化することを検討してください。
ボイラープレート
---
description: 新しいVSCodeフロントエンドサービスを追加
---
1. **インターフェース定義:**
- `createDecorator`を使用して新しいサービスインターフェースを定義し、エラーを避けるため`_serviceBrand`を含める
2. **サービス実装:**
- `Disposable`を拡張した新しいTypeScriptファイルでサービスを実装し、`registerSingleton`でシングルトンとして登録
3. **サービス提供:**
- サービスをインポートしてロードする提供ファイルを作成し、メインエントリーポイントに登録
4. **コンテキスト統合:**
- 新しいサービスを含めるようにコンテキストを更新し、アプリケーション全体でアクセス可能にする
Cursorに遵守させたい共通のフォーマットパターンがある場合、globパターンに基づいてルールを自動的に添付することを検討してください。
フォーマット
---
globs: *.ts
---
- パッケージマネージャーとしてbunを使用。スクリプトは[package.json](mdc:backend/reddit-eval-tool/package.json)を参照
- ファイル名はケバブケースを使用
- 関数名と変数名はキャメルケースを使用
- ハードコードされた定数はUPPER_SNAKE_CASEを使用
- `const foo = () =>`よりも`function foo()`を優先
- `T[]`ではなく`Array<T>`を使用
- デフォルトエクスポートではなく名前付きエクスポートを使用(例: `export const variable ...`, `export function `)
計画作成プロセスに密着
大規模な変更の場合、平均以上の思考時間を費やして正確で適切にスコープされた計画を作成することで、Cursorの出力を大幅に改善できます。
同じプロンプトのいくつかのバリエーションを試しても望む結果が得られない場合、視野を広げて最初からより詳細な計画を作成することを検討してください。同僚向けにPRDを作成するようなイメージです。多くの場合、難しい部分はどのような変更を行うべきかを判断することであり、これは人間に適したタスクです。適切な指示があれば、実装の一部をCursorに委任できます。
計画作成プロセスを強化するためにAIを使用する一つの方法は、Askモードを使用することです。計画を作成するには、CursorでAskモードをオンにし、プロジェクト管理システム、内部ドキュメント、または思いついた内容からコンテキストを投入します。コードベース内に含めたいと既に分かっているファイルや依存関係について考えてください。統合したいコード片を含むファイルや、フォルダ全体でも構いません。
以下はプロンプトの例です:
計画作成プロンプト
- 新機能の作成方法について計画を作成(@existingfeature.tsと同様)
- 不明点があれば質問(最大3つ)
- コードベースを検索することを確認
@過去のチャット(以前の探索プロンプト)
[プロジェクト管理ツール]からの追加コンテキスト:
[貼り付けたチケット説明]
このモデルに、計画を作成し人間に質問してコンテキストを収集するよう依頼しています。以前の探索プロンプトやチケット説明も参照します。claude-3.7-sonnet
、gemini-2.5-pro
、o3
などの思考モデルを使用することをお勧めします。これらは変更の意図を理解し、より良い計画を統合できます。
これにより、実装を開始する前にCursorの助けを借りて反復的に計画を策定できます。
適切なツールを選択
Cursorを効果的に使用する上で最も重要なスキルの一つは、作業に適したツールを選択することです。達成しようとしていることを考え、フロー状態を維持できるアプローチを選んでください。
ツール | 使用ケース | 強み | 制限 |
---|---|---|---|
タブ | 迅速な手動変更 | 完全な制御、高速 | 単一ファイル |
Cmd K | 1ファイル内のスコープ変更 | 集中編集 | 単一ファイル |
チャット | 大規模なマルチファイル変更 | 自動コンテキスト収集、深い編集 | 低速、コンテキスト依存 |
各ツールには最適な使用場面があります:
- タブは、主導権を握りたい迅速な編集に最適
- Cmd Kは、コードの特定セクションに集中して変更を加える場合に有効
- チャットは、より広範なコンテキストをCursorに理解させる必要がある大規模な変更に最適
チャットモード(少し遅く感じるかもしれませんが非常に強力)を使用する場合、良いコンテキストを提供することで支援できます。@filesを使用してエミュレートしたい類似コードを指し示したり、@folderでプロジェクト構造をより良く理解させたりできます。大きな変更を小さな塊に分割することを恐れないでください - 新しいチャットを開始することで集中力と効率を維持できます。
要点
- 変更範囲を絞り込み、一度にやりすぎない
- 可能な限り関連コンテキストを含める
- チャット、Cmd K、タブをそれぞれの得意分野で使用
- 頻繁に新しいチャットを作成
- Askモードで計画し、Agentモードで実装