【Cursor・GitHub Copilot】コードを変更せずエラー原因を調べる方法|Askの使い方

【Cursor・GitHub Copilot】コードを変更せずエラー原因を調べる方法|Askの使い方
🛡️ 超解決

CursorやGitHub Copilotにエラーの原因を聞いただけなのに、ファイルの修正まで始まる。まだ自分で仕組みを理解したい時は、質問を送る前にモードを「Ask」に切り替えます。「直して」と依頼するAgentの作業とは分け、まずコード、実際の結果、期待する結果を渡して原因を説明してもらいます。

パソコンのCursorと、VS CodeのGitHub Copilot Chatで、コードを変更せずに調べる手順です。どちらが高精度かを一律に順位付けするのではなく、同じ短いコードを使い、根拠のある説明が返ったかを確かめます。

【要点】モードと確認結果を分けて見る

  • 質問前にAskを選び、編集やコマンド実行を依頼しない状態にします。
  • 問題のコード、実際の出力、期待する出力を一緒に渡します。
  • 回答に修正案が出ても、そのまま適用せず、原因の説明を先に検証します。

ADVERTISEMENT

説明を求める時は、AskとAgentを取り違えない

CursorのAgentは、複数ファイルを編集したり、ターミナルでコマンドを実行したりできます。Askはコードを調べて回答する読み取り用のモードです。「どこが間違っている?」という短い質問でも、Agentのまま送るより、目的に合うモードを明示してから質問する方が操作をそろえられます。

GitHub Copilot ChatにもAskがあります。コードの説明や修正案を文章・コードブロックで受け取る用途です。返答に表示された挿入・適用ボタンを自分で押すと、それは質問を読んでいるだけの状態とは別になります。

Askを選び、コードと実際・期待の出力を渡し、原因の説明を確認してから1か所の修正を試す流れ
説明を読む段階と、コードを変更して試す段階を分けます。回答の適用ボタンを押す前に、原因と修正範囲を確認します。
やりたいこと 開始する状態 確認する結果
エラーの原因を理解したい Askで質問する 該当行と、値が変化する理由の説明
修正する前に案だけ見たい Askで最小の修正案を求める どこを変えるかが分かる提案
実ファイルの修正を任せたい 対象と検証方法を決めてAgentへ依頼する 変更差分と実行結果
※ お探しの解決策が見つからない場合は、こちらの「生成AIトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

CursorでAskへ切り替え、質問するコードを渡す

CursorのAgentパネルを開き、モードの選択メニューで「Ask」を選びます。Cursorの公式案内では、モードを切り替えると新しいコンテキストになるため、前のモードにだけ渡したエラーや条件をそのまま覚えている前提にしないでください。

  1. 対象の作業フォルダを開き、未保存の編集がある場合は必要な状態を保存します。
  2. モード表示を確認し、Askを選びます。
  3. 問題が出る最小限のコードと、実際の結果を質問欄へ渡します。
  4. 期待する結果を付け、ファイル変更ではなく原因の説明を求めます。
  5. 回答が別のファイルを根拠にしていたら、参照した対象を確認します。

最初からプロジェクト全体を渡す必要はありません。短い関数で再現できるなら、その関数と入力例から始めます。再現しない場合に限り、呼び出し元や関連する型を追加します。APIキーや本番用のパスワードなど、原因調査に不要な値は含めないようにしてください。

VS CodeのCopilot Chatでは、チャット下部のAskを選ぶ

VS CodeでGitHubにサインインし、GitHub Copilot Chatを開きます。チャット下部のエージェント選択から「Ask」を選び、コードと症状を入力します。専用のGitHub Copilotアプリや、ブラウザ上の別機能の手順と混同しないようにしてください。

VS Code向けの公式手順では、回答上部の「Used … references」で参照されたファイルなどを確認できます。期待したファイルを読んでいない場合は、質問のコードやファイルの指定を見直してから再質問します。

返答にはコードの挿入やコマンド実行などの操作が含まれることがあります。原因を読む段階では適用せず、提案された変更が何を直すのか確認します。Askが見当たらない場合は、利用中のVS Codeの版と組織のCopilot利用設定を確認し、画面が異なるままAgentで代用しないようにします。

同じ短い例で「なぜその結果になるか」を聞く

次のJavaScriptは、数値の100と200を合計したいのに、結果が文字列の「100200」になる例です。新しい依頼にはコードだけでなく、実際の結果と期待する結果を添えます。

const prices = [100, 200];
const total = prices.reduce((sum, price) => sum + price, "");
console.log(total, typeof total);

このJavaScriptは「100200 string」と出力されます。期待する結果は「300 number」です。ファイル変更やコマンド実行は行わず、どの値の型が原因か、1回目と2回目の加算結果を順番に説明してください。その後で、最小の修正案をコードブロックで示してください。

この例では、reduceの初期値が空文字列です。1回目は空文字列と100が連結されて文字列の「100」になり、2回目はさらに200が連結されます。初期値を数値の0に変更すると、100、300の順に数値として加算されます。ライブラリの更新や関数全体の書き換えは必要ありません。

AIが「数値型へ変換すればよい」とだけ答えた場合は、どの値をどこで変えるのか、なぜその1か所で直るのかを追加で聞きます。説明の長さではなく、実際のコードにある初期値と結果を結び付けているかを見てください。

修正案を試す時は、変更を1か所に絞る

原因が分かったら、手元の検証用コードで初期値だけを0にして実行します。「300 number」と出るかを確認し、変更前の例と比較します。実際の業務コードなら、通常の入力に加え、空の配列や想定される境界条件も確認します。

今回の例は空配列でも初期値の0が返ります。ただし、文字列の金額が配列へ入ってくる実装なら、初期値の修正だけでは十分ではありません。実データの型を調べたうえで、別の原因として扱います。短い例で直ったことを、プロジェクト全体の動作保証に置き換えないでください。

回答が外れた時は、モデルより先に参照内容を確認する

見当違いの回答が出たら、渡したコードが現在の版か、エラー原文や実際の出力を省いていないか、期待する結果を伝えたかを確認します。説明が英語で読みにくい場合は、Cursorの返答を日本語にする設定も確認できます。

それでも比較が必要なら、コードと質問を固定して別のモデルを試します。Cursorは独自モデルだけで動く製品ではなく、複数のモデルを選択できる環境です。同じ製品名でも選んだモデルや参照情報が違えば回答は変わります。製品を切り替える前に、ファイルが変更されていないことと、原因を自分で説明・再現できたことを確認してください。

🤖
生成AIトラブル完全解決データベース ChatGPT・Claude・Gemini・Midjourneyなど主要生成AIの基礎/料金/セキュリティ/著作権/社内ルール/業務活用/依存防止/比較選びを横断網羅。最新機能ではなく長期に陳腐化しにくい実務リファレンスとしてご活用ください。
この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。