Skip to main content

COPILOT CLI を AI SME として使用する

Copilot CLI (コパイロット CLI)を常に利用可能な分野の専門家として使用して、コードベースのしくみを学習し、自信を持って維持したり、新機能を追加したりできます。

イントロダクション

慣れないコードベースで作業を始める場合や、これまでに触れたことがない大規模なコードベースの一部を変更するように求められた場合は、通常、速度を上げるには主題の専門家 (SME) が必要です。 通常、SME は、コードがどのように組み合わされているかを知り、質問に答えることができる、チームの経験豊富な開発者です。 中小企業は常に利用可能であるとは限りません。別のタイムゾーンにいるか、自分の仕事で忙しいか、チームにまったくいない可能性があります。

未知のコードベースを理解する必要がある場合は、通常、コードを知っているチームメイトに頼ります。 そのユーザーが利用できない場合、 Copilot CLI (コパイロット CLI) はギャップを埋めることができます。 このチュートリアルでは、リポジトリのコード Copilot CLI (コパイロット CLI) 質問し、コードベースの回答を生成するプロンプト手法を学習し、変更を開始するための自信を構築します。

AI SME を使用するタイミング(あるいは、「AI SME はどのような場合に使用するのか?」)

このチュートリアルは、コードベースをより迅速に理解する必要がある場合に役立ちます。 例えば次が挙げられます。

  • チームまたはオープンソース プロジェクトに参加したばかりで、迅速に作業を進める必要があります。
  • これまで作業したことがない大規模なコードベースの領域を変更する必要があります。
  • 元の作成者が保持しなくなったサービスまたはライブラリを継承しました。

このチュートリアルでは、ターミナルで作業し、探索しているプロジェクトで使用される言語でコードを読み取る作業に慣れているものとします。 Copilot CLI (コパイロット CLI)に関する以前の経験は必要ありません。

前提条件

開始する前に、以下を用意してください。

1. リポジトリでセッションを開始する

ターミナルを開き、学習するリポジトリのルートに移動します。 リポジトリ ルートから Copilot CLI (コパイロット CLI) を開始すると、コードベース全体がコンテキストとして使用可能になります。

Shell
cd PATH/TO/YOUR/REPOSITORY
copilot

これで、対話型の Copilot CLI (コパイロット CLI) セッションが開始されました。 プロンプトで入力した内容は、リポジトリ内のファイルの読み取り、 git loggrepなどのシェル コマンドの実行、検索内容に基づく質問への回答を行うことができるモデルに送信されます。

ヒント

  • 承認を求めずにコマンドを実行する Copilot CLI (コパイロット CLI) が信頼できる場合は、ファイルの変更をブロックしながら、 copilot --deny-tool='write' --allow-all-toolsから開始します。 「ツールの使用の許可と拒否」を参照してください。
  • 非常に大きなコードベースで作業している場合は、関連するサブディレクトリから Copilot CLI (コパイロット CLI) を開始すると、より良い結果が得られる可能性があります。 これにより、コンテキストが最も関連性の高いファイルに制限されます。

2.ドキュメントではなく、コード内の答えを根拠とします

ほとんどのリポジトリには、コードとドキュメント (README ファイル、デザイン ノート、アーキテクチャ 図など) が混在しています。 ドキュメントはプロジェクトを見つけるのに役立ちますが、古い可能性があります。 < c0 /> にコードの動作について質問し、古くなったMarkdownファイルから答えを拾ってくると、自信満々ですが誤った答えが返ってきます。

質問を始める前に、コード自体に回答を基にし、ギャップを埋めるのではなく、不確定性にフラグを設定するように Copilot CLI (コパイロット CLI) に指示します。 例えば次が挙げられます。

Copilot prompt
For the rest of this session, when I ask how something works, base your answer on the code in this repository, not on documentation files such as README.md or files under docs/. If a documentation file conflicts with the code, treat the code as the source of truth. If you can't find a definitive answer in the code, say so - don't guess.

この種のプリアンブルをカスタム命令ファイルに配置し、セッション間で再利用できるため、毎回再入力する必要はありません。 「カスタム指示の追加 GitHub Copilot CLI(コマンドラインインターフェース)」を参照してください。

3. コードベースの概要を確認する

幅広い質問から始めて、プロジェクトのメンタル マップを作成します。 目的は、特定の機能にドリルダウンする前に、コードの形状 (エントリ ポイントがある場所、どのディレクトリに何が含まれ、どのように主要な部分がどのように一緒に収まるかを) を理解することです。

次のようなプロンプトを試してください。

Copilot prompt
Give me an overview of this codebase. What does the application do, what are the main components, and how do they communicate? Cite the files you used as evidence.
Copilot prompt
What are the entry points for this application? For each entry point, tell me which file contains the entry point and which directories contain the code it calls into.

引用文献や証拠を求めることは重要です。 Copilot CLI (コパイロット CLI)に "これはsrc/auth/middleware.tsで処理されます" と表示されたら、そのファイルを開き、自分で回答を確認できます。 引用文献が見つけた内容と一致しない場合は、プッシュバックしてフォローアップの質問をするのに便利なシグナルです。

4. 特定の機能を詳しく見る

概要を作成したら、変更する必要がある領域を絞り込む必要があります。 これは、単一のクエリではなく、会話として扱います。 各回答では、次の質問で使用できる用語、ファイル名、概念が示されます。

異なる角度からトピックにアプローチする同様の質問をすることをお勧めします。 これは、全体像を把握するのに役立ち、 Copilot が何を知ろうとしているのかを誤解せず、重要な詳細を見逃していないという自信を与えます。

たとえば、特定の API エンドポイントにレート制限を追加するように求められたことがある場合に、コードのこの部分で作業したことがない場合は、次のような質問から始める可能性があります。

Copilot prompt
Is there any existing rate limiting in this codebase? If so, where is it implemented, and how is it configured?
Copilot prompt
If I wanted to add per-user rate limiting to the /api/v1/upload endpoint, which files would I most likely need to change, and which existing patterns in the codebase should I follow?

同じ CLI セッション内で追加の質問をすると、機能の詳細を掘り下げて確認できるほか、知っておくべきことがわかる具体的な回答を得るために必要なコンテキストを Copilot に提供できます。

5. 動作とエッジ ケースを調査する

コードを読み取ると、コードの動作がわかります。 多くの場合、コードが何を行うべきか、または異常な状況での動作は示されません。 これらは、人間の SME が最も価値があり、人間が利用できないときに Copilot CLI (コパイロット CLI) が役立つ質問です。

動作とエッジケースの質問の例を次に示します。

Copilot prompt
What happens if the database connection drops while a request is being processed? Walk me through the error handling, based on the code.
Copilot prompt
The `getUser` function takes a `userId` parameter. What validation is performed on it before it reaches the database query? Are there any code paths where an unvalidated value could reach the query?

回答が得られると、「コードを表示してください」または「どのファイルで見つけたか」をフォローアップしてください。 まだ引用されていない場合は。 これにより、回答を確認・検証できます。

6. Git 履歴を別のソースとして使用する

現在のコードではなく、Git の履歴には多くの便利なコンテキストが存在します。関数が記述された理由、バグが最後に修正されたとき、最初にモジュールを追加したユーザー。 Copilot CLI (コパイロット CLI) gitコマンドを実行し、出力を使用して、コードだけを読んで簡単に答えることができなかった質問に答えることができます。

次のようなプロンプトを試してください。

Copilot prompt
When was the `PaymentProcessor` class introduced, and what was the original commit message? Has it been substantially refactored since then?
Copilot prompt
Look at the last 20 commits that touched files under `src/billing/`. Summarize what kinds of changes have been made recently.
Copilot prompt
Who has made the most commits to `src/auth/`? Use that information to suggest the best person on this team to ask about authentication.

7. 信頼する前に確認する

Copilot CLI (コパイロット CLI) は強力な SME ですが、万能ではありません。 コードを読み間違えたり、似た見た目のファイルを混同したり、場合によっては構成したりする可能性があります。 その回答は、頼りになるものの間違うこともある同僚からの助言と同じように扱ってください。出発点としては有用ですが、重要な判断や行動に移す前に確認する価値があります。

いくつかの習慣がトラブルからあなたを守ります:

  • 引用されたファイルを確認します。 Copilot CLI (コパイロット CLI)が特定のファイルまたは行番号を参照している場合は、ファイルまたは行番号を開いて確認します。 引用が間違っている場合は、残りの答えをより懐疑的に扱います。
  • 自分で実行する。 Copilot CLI (コパイロット CLI)が、関数は空の入力に対してnullを返すと述べているなら、空の入力でその関数を呼び出す簡単なテストやREPLでの呼び出しを書いて、確認しましょう。
  • 人間とのクロスチェック。 回答が重要な場合 (セキュリティ、データの整合性、運用環境で間違いを生み出すのが恥ずかしい場合)、 Copilot CLI (コパイロット CLI)の回答を出発点として使用し、人間の SME またはコード レビューで確認します。

Conclusion

このチュートリアルでは、 Copilot CLI (コパイロット CLI) を個人用 SME として使用して、次の操作を行いました。

  • 実際のファイルに固定された、なじみのないコードベースの概要を説明します。
  • 特定の機能を詳しく調べて、どのファイルを変更すべきか、どのパターンに従うべきかを把握します。
  • 動作、エッジ ケース、Git 履歴を調査します。
  • 回答を確認して、重要なときに信頼できるようにします。

このように使用すると、Copilot CLI (コパイロット CLI) は人間の専門家に取って代わるものではありませんが、仕事中に生じる日常的な疑問について、そうした専門家への依存を減らすことができます。 あなたの人間のチームメイトは、本当に自分の経験を必要とする質問に時間を集中することができ、あなたが周りにいないときに動き続けることができます。

次のステップ