こんにちは!日々のコーディング、本当にお疲れ様です。
いま、多くの開発現場で「Cursor」の導入が進んでいますよね。コードベース全体を文脈として理解し、まるで専属のペアプログラマーのように的確なコードを生成・修正してくれるこのAI特化型エディタは、一度体験するともう元のエディタには戻れなくなるほどの魔力を持っています。
しかし、開発するプロダクトが大規模になるにつれて、こんな悩みに出くわしたことはありませんか?
- 「なんだか最近、Cursorの動作が重い……」
- 「AIに質問したときの返答にやけに時間がかかる」
- 「PCのファンが常にフル回転していて、バッテリーの減りが異常に早い」
これらは、Cursorの心臓部である「コードベースインデックス(Codebase Indexing)」が、巨大なリポジトリの重さに悲鳴を上げているサインです。
今回は、数百万行規模のモノレポやレガシーな大容量リポジトリであっても、Cursorを羽のように軽快に、そして賢く動かし続けるための『メモリ最適化・インデックス高速化テクニック』を、シニアエンジニアの視点から優しく、そして徹底的に解説します。
これをマスターすれば、毎日のコーディングが劇的に楽になりますよ。さあ、一緒にエディタ環境をチューニングしていきましょう!
—
そもそも、なぜ大規模リポジトリでCursorは重くなるのか?
最適化の設定に入る前に、「裏側で何が起きているのか」を少しだけ覗いてみましょう。ここを知るだけで、これからの設定の意味がスッと腑に落ちます。
Cursorは、プロジェクト内のすべてのソースコードを解析し、AIが「このファイルにはこんな関数がある」「このモジュールとあのモジュールは繋がっている」と瞬時に理解できるように、ローカル環境でベクトルデータベース(埋め込み表現)を構築しています。これがインデックス作成です。
便利な反面、次のようなファイルまですべてAIに読ませようとするとどうなるでしょうか?
- 数万行ある自動生成されたビルド成果物やAPIクライアントの型定義
- 数百MBに及ぶサードパーティのライブラリ(`node_modules` など)
- ローカルのビルドキャッシュやログファイル
AIにとっては「ノイズ」でしかない不要なファイルまでインデックス化・監視対象にしてしまうため、RAM(メモリ)が圧迫され、CPUが常にフル稼働し、結果としてAIの応答速度が低下するという悪循環に陥ります。
つまり、最適化の基本方針はシンプルです。
「人間にとって価値があり、AIにとっても文脈として必要なコードだけをインデックスさせ、それ以外は徹底的に排除する」。これだけです。
—
ステップ1:`.cursorignore` で不要なファイルを完全にシャットアウトする
Gitを使っている方なら `.gitignore` はお馴染みだと思います。Cursorにも全く同じ思想のファイル、.cursorignore が存在します。
実は、`.gitignore` に書かれている内容の多くはデフォルトでCursorも除外してくれますが、大規模リポジトリではそれだけでは不十分です。明示的に「AIに見せなくていいもの」を指定してあげましょう。
実践:プロジェクトルートに `.cursorignore` を配置する
プロジェクトのルートディレクトリに `.cursorignore` という名前のファイルを新規作成し、以下の内容を記述してください。
==========================================
Cursor インデックス除外設定 (.cursorignore)
==========================================
ビルド成果物・コンパイル結果
/dist/
/build/
/.next/
/out/
依存関係・パッケージマネージャのキャッシュ
node_modules/
vendor/
.pnp/
.yarn/cache/
テストカバレッジ・ログ・一時ファイル
/coverage/
.log
npm-debug.log
.tmp/
.temp/
自動生成された大規模な型定義やAPIクライアント
※OpenAPIなどから自動生成され、中身が数万行あるようなファイル群
src/generated/api/
.generated.ts
ドキュメントや静的アセット(必要に応じて)
/docs/assets/
/public/images/
> 先輩からのアドバイス:
> 自動生成されるコード(GraphQLやOpenAPIのクライアントなど)は、コード量が多くてAIのコンテキスト枠を無駄に食いつぶす割に、AIが自力で書き換えるべきものではないため、除外対象にするのがメモリ節約の最大のコツです。
—
ステップ2:GUIで確実に適用状態を確認・コントロールする
`.cursorignore` を作成したら、設定が正しく効いているか、そしてインデックスの状況がどうなっているかをCursorの画面から確認・制御しましょう。
インデックス状態の確認手順
1. キーボードショートカットで設定を開きます(Mac: `Cmd + ,` / Windows: `Ctrl + ,`)。
2. 設定画面の検索窓に `Cursor` と入力し、「Features」>「Codebase Indexing」 の項目を探します。
3. 現在、プロジェクト内で何ファイルがインデックスされているか(例: `Indexed 1,245 files`)のカウンターを確認できます。もしここに数万〜数十万ファイルが表示されている場合、除外漏れがあります。
手動でのインデックス再構築(Re-index)のベストタイミング
設定ファイルを変更した直後や、大規模なブランチの切り替え(Gitの `checkout` や `merge`)を行ったときは、Cursor内のデータベースが古い状態を保持していることがあります。
そんなときは、以下の手順でインデックスの強制再構築を行ってください。
1. コマンドパレットを開きます(Mac: `Cmd + Shift + P` / Windows: `Ctrl + Shift + P`)。
2. `Cursor: Re-index Codebase` と入力して実行します。
これにより、古いベクトルデータベースが破棄され、`.cursorignore` が適用されたクリーンな状態からインデックスが再構築されます。PCのファンが静かになり、AIの返答速度が劇的にキビキビ動くようになるのを実感できるはずです。
—
ステップ3:RAM消費を抑える高度な環境設定(Settings.json)
さらに一歩踏み込んで、Cursor(およびベースとなっているVS Code)自体のメモリ消費やバックグラウンド処理を最適化する設定を `settings.json` に投入します。
以下の設定を、Cursorのユーザー設定(またはワークスペース設定の `.vscode/settings.json`)に追加してください。
{
// ————————————————–
// Cursor メモリ・パフォーマンス最適化設定
// ————————————————–
// 自動セーブを少し遅延させ、タイピング中のCPU負荷とディスクI/Oを軽減する
“files.autoSave”: “afterDelay”,
“files.autoSaveDelay”: 2000,
// 巨大なファイルの自動オープン制限(数MB超えるファイルを誤って開いてエディタがフリーズするのを防ぐ)
“files.maxMemoryForLargeFilesMB”: 4096,
// 検索対象から重いディレクトリを除外(Ctrl+P やグローバル検索の高速化)
“search.exclude”: {
“/node_modules”: true,
“/bower_components”: true,
“/.code-search”: true,
“/dist”: true,
“/build”: true,
“/.next”: true
},
// ファイルウォッチャー(変更検知)から除外するパス
// ※これを行うことで、バックグラウンドでCursorが常にCPUを食う現象を防げます
“files.watcherExclude”: {
“/.git/objects/“: true,
“/.git/subtree-cache/“: true,
“/node_modules/“: true,
“/dist/“: true,
“/build/”: true,
“/.next/“: true,
“/.cache/“: true
}
}
なぜ `files.watcherExclude` が効くのか?
開発中、エディタはバックグラウンドで「ファイルに変更がないか」を常に監視(ウォッチ)しています。大規模なリポジトリで `node_modules` やビルド出力先を監視対象に入れたままだと、ビルドツールがファイルを生成・更新するたびにCursorがそれを検知して処理走り、PCの動作が重くなる原因になります。ここをピンポイントで除外するのがプロの技です。
—
まとめ:軽快な開発環境が、最高のコードを生み出す
今回は、大規模リポジトリにおけるCursorのメモリ最適化とインデックス高速化について解説しました。
- `.cursorignore` で、AIに不要なビルド成果物や依存関係をシャットアウトする
- `Cursor: Re-index Codebase` で、環境変更時にクリーンな状態を保つ
- `files.watcherExclude` や `search.exclude` で、バックグラウンドの無駄なCPU消費を断つ
これらの設定を一度行っておくだけで、エディタの動作は見違えるほど軽くなり、AIの提案スピードも最適化されます。重い動作にイライラさせられるストレスから解放され、純粋に「コードを書く楽しさ」だけに集中できるようになりますよ。
あなたの毎日のコーディング体験が、より快適で素晴らしいものになりますように。それではまた、次の現場でお会いしましょう!