メインコンテンツまでスキップ

AIと対話を始める

GitHub CopilotのようなAIとの対話は、新しくプロジェクトへ着任したメンバーに作業を依頼する場面を想像すると分かりやすいでしょう。経験豊富なメンバーであっても、プロジェクトについてはまだ何も知らない状態です。

そのため「○×を作って」とだけ伝えても、意図を正確に汲み取ってもらうのは難しいでしょう。AIから期待通りの結果を引き出すには、人に対してそうするように、作業の背景や目的、満たすべき条件といった「コンテキスト(文脈)」を丁寧に伝えることが重要になります。

本ページでは、AIとの対話における具体的なコツをいくつかの例を通して紹介します。

また、GitHub CopilotおよびVisual Studio Codeの以下のドキュメントも参考にするとよいでしょう。

指示のコツ:具体的な実装を依頼する

何かを実装してほしい時のプロンプト(指示)の例です。

良くない実装依頼例

ユーザーの検索機能を作成してください。

これではどのような機能を持つ検索なのか、AIは知ることができません。AIは一般的な知識から「おそらくこうだろう」というコードを生成しますが、それがプロジェクトの要件を満たす可能性は低いでしょう。

良い実装依頼例

以下のように実装してほしい処理の仕様を具体的に伝えることが、期待通りのコードを得るためのコツです。

以下の仕様を満たす`search`メソッドを`UserService`クラスに実装してください。

## 概要

指定された検索条件をもとに、ユーザーを検索する。

## 仕様

- 引数
- 検索キーワード
- 取得件数
- 戻り値
- 検索キーワードにマッチしたユーザーの`List`
- 最大で取得件数で指定したレコード数を返却する
- 検索結果が0件の場合は、空の`List`

1. 引数の検証を行う
1. 検索キーワードが`null`ではないか
2. 取得件数が0以下の値ではないか
3. 上記のいずれかに該当する場合は、例外をスローする
2. `UserRepository`クラスを使い、絞り込み条件を検索キーワード、取得するレコード数に取得件数を指定して`USER`テーブルを検索する
1. 検索キーワードは`USER`テーブルの以下のカラムに対して部分一致で絞り込み、OR検索を行う
- `first_name`
- `last_name`
- `email`
3. 取得したユーザー情報を返却する

質問のコツ:コードの書き方を聞く

不明点について質問する場合も同様です。

良くない質問例

指定されたCSVファイルを読み込み、格納されているレコードを処理する方法を教えてください。

この質問には、「どのようなCSVファイルか」「どのように処理したいか」という重要なコンテキストが欠けています。そのため、AIはありきたりな回答しかできません。

良い質問例

指定されたCSVファイルからレコードを読み出すコード例を教えてください。

- CSVファイルには商品情報が格納されており、実装済みの`Product`クラスにマッピングする
- CSVの解析処理にはjackson-dataformats-textを使用する
- 大量のレコードが含まれることが想定されるため、1度にすべてのレコードを読み出さないようにする

このように、関連する技術スタックや、考慮してほしい非機能要件などを伝えることで、より実践的で役立つ回答が得られます。

AIとの対話の基本

ここまでの例から、AIと上手に対話するための基本的な考え方が見えてきます。

  • 具体的であること: 曖昧な表現を避け、目的、仕様、制約、完了条件などを明確に記述しましょう
  • コンテキストを提供すること: プロジェクトのルール、使用しているフレームワーク、関連するコードの存在など、AIが知るべき前提情報を伝えましょう

このような情報を指定せず、曖昧な表現でタスクの実行指示だけを行ってもAIは期待した結果を生み出さないでしょう。

またAIは一連の会話の内容を覚えています。ひとつの会話で複数のテーマを扱うとAIが混乱する原因となるため、AIとの会話はテーマごとにチャットウィンドウを分けるようにしましょう。
AIと対話を重ね、1度の指示で完璧な結果を求めず、追加で指示や修正を加えながら少しずつ完成に近づけていくことも重要です。

これらの内容を通してみると、AIへの指示も人にタスクをお願いしたりするのととても良く似ていることがわかります。

この後のステップ

ここではAIと対話する時の基本的なイメージを掴むことを目的に、簡単な例を記載しました。

実際に開発でどのような指示を行っていくのかは、プログラミング〜テストを読み進めて押さえていくようにしましょう。


以降はプロジェクト全体でGitHub Copilotの活用を推進するアーキテクトやリーダーの方向けのメッセージです。
プロジェクトでGitHub Copilotを活用していくには、ここで挙げたような開発者各個人が行うプロンプトの工夫だけでなく、AIにプロジェクトの共通知識をインプットするための仕組みも重要になります。

詳しくはAIのオンボーディングおよびその配下のページを参照してください。

オンボーディングに必要なファイルを揃えたうえで、AIにどのように指示すべきなのかはプログラミングやテストに入る前にを参照してください。