Skip to main content

Command Palette

Search for a command to run...

コーディングエージェント

コードベースを理解する

ソフトウェアエンジニアにとって最も重要な仕事の一つは、コードベースの全体像を頭の中で描き、システムの仕組みを深く理解することです。プロジェクトが大きくなるほど、目的のコードを見つけるのは難しくなります。

以前は、大規模なコードベースを調べるには、正規表現のパターンを覚えたり、効率的に検索するための専門ツールを習得したりする必要がありました。コーディングエージェントを使えば、探しているものを自然言語で説明するだけで、エージェントがツールを使って見つけてくれます。

Cursor は、エージェントが効率的に検索するための専用ツールを提供しています。これらのツールの仕組みを理解すれば、より的確な質問ができ、より正確な結果を得られます。

エージェント型検索

コードを見つける最も正確な方法は、関数名や変数名など、コード内の完全一致を探すことです。

エージェントは、完全一致する文字列を検索するツール grep を使用でき、より複雑な正規表現パターンや単語境界の一致も作成できます。また、grep を改良した ripgrep のように、再帰的な検索を可能にするツールもあります。

どちらのツールも優れています。ただし、Cursor は Instant Grep により grep をさらに改良しており、大規模なコードベースでのエージェント型検索を ripgrep より大幅に高速化できます。

これらのツールを使用するために、設定を変更したり、使い方を変えたりする必要はありません。Cursor が自動的に提供するため、エージェントとのチャットでは内部で使用されます。

意味で検索

正確なシンボル名やテキストがわからない場合でも、エージェント は意味に基づいてコードベースを検索できます。grep と組み合わせることで、関連するファイルを見つけ、正確な参照をたどります。詳しくは、エージェント によるコードベースの検索方法を参照してください。

良い質問をする

質問の仕方によって、エージェントが使う検索ツールや結果の精度が変わります。検索には、関数名のような正確なテキスト一致を探す具体的なものから、「ユーザーがアプリケーションで支払いを送信すると何が起こるかを理解したい」のような幅広いものまであります。

探しているものがわかっている場合は、具体的な質問から始めます。不慣れな領域を探索する場合は、幅広く質問します。いくつかの例を見てみましょう。

この最初の例では、プロンプトで具体的な内容を求めているため、エージェントは grep から始めます。import.*PaymentService を検索し、このサービスを参照しているすべてのファイルを見つけます。

Ask mode example: 対象を絞った検索
PaymentService からインポートしているすべてのファイルを見つけ、それらが PaymentFailedError をどのように処理しているかを示してください。

不慣れな領域を探索する場合は、より幅広く質問します。次の例では、アプリケーションが支払い失敗をどのように処理するかについて一般的な質問をしています。最初のツール呼び出しが「コードベースを検索」であることに注目してください。エージェントは関連するファイルを見つけ、続けて grep で詳細を確認します。

Ask mode example: 幅広い探索
アプリケーションは支払い失敗をどのように処理しますか?チェックアウトフォームからユーザーに表示されるエラーメッセージまでのエラーフローを説明してください。

Explore サブエージェント

エージェントは、タスクをより効率的に完了するために、サブエージェントを起動することもできます。

組み込みの Explore サブエージェント は、コードベースの検索に役立ちます。Explore サブエージェントは親エージェントとは別のコンテキストウィンドウで動作し、より高速なモデルを使用するため、メインの会話を膨らませることなく、多数の並列検索を実行できます。

これを手動で呼び出す必要はありません。エージェントが関連性があると判断した場合に使用します。ただし、必要に応じて、サブエージェントを直接使用するよう依頼することもできます。

基礎コースで説明したように、コンテキストの利用状況を把握し、注意を払うことは重要です。コードベース内の多くのファイルを検索すると、大量のコンテキストが生成されます。サブエージェントは、調査結果だけを返すことでメインの会話を集中させ、コンテキスト管理を大幅に改善できます。

アーキテクチャ図

大規模なコードベースや不慣れなコードベースでは、Mermaid 図などのアーキテクチャ図をエージェントに生成させることで、コードベースの構造を視覚化できます。

Ask mode example: アーキテクチャ図
チェックアウトフォーム、API ルート、決済サービス、Stripe 連携を含む決済システムのデータフローを示す Mermaid 図を作成してください。

これらの図は、オンボーディング、ドキュメント、設計レビューに役立ちます。また、他のサービスに過度に依存するサービスや、想定外の経路をたどるデータフローなど、アーキテクチャ上の問題を明らかにすることもあります。

よくある失敗パターン:理解する前に変更する

よくある誤りは、既存のコードを理解しないまま、エージェントにコードの変更を依頼することです。すでにあるユーティリティ関数を新たに作成したり、コードベースの他の部分とは異なるパターンを使用したりする可能性があります。

変更を依頼する前に、まずエージェントに探索を依頼しましょう。

Ask mode example: 変更前に探索
変更を加える前に、既存のフォームバリデーションの仕組みを教えてください。どのようなパターンを使用しており、共有バリデーターはどこにありますか?

コーディングエージェントは、依頼を文字どおりに解釈します。意図を伝えない場合は、エージェント自身の判断で進めます。これでうまくいくこともあります。しかし、既存のパターンに従う必要がある変更では、先にコードベースを理解し、具体的に何を依頼すべきかを把握しておくほうが、より良い結果が得られます。

次のステップ

コードを見つけて理解できるようになりました。次の章では、理解から実装・リリースへ進むために、機能の計画、テストの作成、設計のコード化を学びます。

この章は完了しました