Note
GitHub Copilot Chat は現在、Copilot Individual または Copilot Business サブスクリプションを持つユーザーに対して パブリック プレビュー です。
GitHub Copilot Chat in GitHub について
GitHub Copilot Chat in GitHub は、GitHub Copilot との対話を可能にするチャット インターフェイスであり、GitHub 内でコーディング関連の質問をすると回答を受け取ることができます。
チャット インターフェイスを使用すると、ドキュメントに移動したり、オンライン フォーラムを検索したりする必要なく、コーディング情報とサポートにアクセスできます。
Note
Copilot Chat は、Visual Studio Code、Visual Studio、および JetBrains IDE スイートでも使用できます。 ただし、これらの IDE で使用できる機能は、GitHub で使用できる機能とは異なります。
GitHub Copilot Chat は、構文、プログラミングの概念、テスト ケース、デバッグなど、さまざまなコーディング関連の質問に答えることができます。 GitHub Copilot Chat は、コーディング以外の質問に答えたり、コーディング以外のトピックに関する一般的な情報を提供したりするようには設計されていません。
Copilot Chat in GitHub でサポートされている主な言語は英語です。
GitHub Copilot Chat は、自然言語処理と機械学習を組み合わせて使用することで機能し、質問を理解して、回答を提供します。 このプロセスは、いくつかの手順に分けることができます。
入力処理
ユーザーからの入力プロンプトは、Copilot Chat システムによって前処理され、コンテキスト情報 (現在の日時やユーザーが現在表示しているリポジトリの名前など) と組み合わせて、大規模な言語モデルに送信されます。 ユーザーによる入力は、コード スニペットまたはプレーン ランゲージの形式をとることができます。
大規模な言語モデルではプロンプトが表示され、追加のコンテキスト (GitHub に格納されているリポジトリ データや Bing からの検索結果など) が収集され、プロンプトに基づいた応答が提供されます。 このシステムは、コーディング関連の質問にのみ対応することを目的としています。
言語モデルの分析
事前処理されたプロンプトは、大量のテキスト データでトレーニングされたニューラル ネットワークである Copilot Chat 言語モデルを通過します。 言語モデルにより、入力プロンプトが分析されます。
応答の生成
言語モデルによって、入力プロンプトとそれに提供されたコンテキストの分析に基づいた応答が生成されます。 言語モデルでは、追加のコンテキスト (GitHub に格納されているリポジトリ データ、Bing からの検索結果など) が収集され、プロンプトに基づいた応答が提供されます。 この応答は、生成されたコード、コードの提案、または既存のコードの説明の形式をとることができます。
出力の形式
Copilot Chat によって生成された応答は書式設定され、ユーザーに表示されます。 Copilot Chat では、生成された応答をわかりやすくするために、構文の強調表示、インデント、およびその他の書式設定機能を使用できます。 ユーザーからの質問の種類に応じて、ソース コード ファイル、問題、Bing 検索結果、ドキュメントなど、モデルが応答を生成するときに使用したコンテキストへのリンクも提供される場合があります。
Copilot Chat は、質問に最も関連性の高い回答を提供することを目的としています。 ただし、お探しの回答が必ず提供されるとは限りません。 Copilot Chat のユーザーは、システムによって生成された応答を確認して検証し、正確かつ適切であることを確認する必要があります。 さらに、製品開発プロセスの一環として、Copilot Chat の安全性を理解し、改善するためにレッド チームを編成しています。 入力プロンプトと出力入力候補は、コンテンツ フィルターを使用して実行されます。 コンテンツ フィルタリング システムは、有害、不快、またはトピック外のコンテンツを含む特定のカテゴリのコンテンツに対する出力を検出して防止します。 Copilot Chat のパフォーマンスの向上について詳しくは、「Copilot Chat のパフォーマンスの向上」をご覧ください。
Copilot Chat のユース ケース
Copilot Chat は、さまざまなシナリオでコーディング支援を提供できます。
コーディングの質問への回答
Copilot Chat に特定のコーディングの問題に関するヘルプや説明を求めると、自然言語形式またはコード スニペット形式で応答を受け取ることができます。
Copilot Chat によって生成された応答では、モデルのトレーニング データセット、Bing からの検索結果、リポジトリ内のコード、およびナレッジ ベースの Markdown ドキュメントを使用して質問に答えている場合があります。
これにより、一般的なコーディング タスクと課題のガイダンスとサポートが提供されるため、プログラマにとって便利なツールです。
コードの説明と改善点の提案
Copilot Chat は、コードの機能と目的に関する自然言語の説明を生成して、選んだコードを説明するのに役立ちます。 これは、コードの動作を理解したい場合や、コードのしくみを理解する必要がある技術以外の利害関係者にとって便利です。 たとえば、コード エディターで関数またはコード ブロックを選んだ場合、Copilot Chat は、コードの動作およびシステム全体に適合する方法について、自然言語の説明を生成できます。 これには、関数の入力および出力パラメーター、その依存関係、大規模なアプリケーションでの目的などの情報を含めることができます。
Copilot Chat は、エラーやエッジ ケースの処理の改善や、コードをより読みやすくするための論理フローの変更など、選択したコードに対する潜在的な改善を提案することもできます。
説明を生成し、関連ドキュメントを提案することで、Copilot Chat を使用すると、選んだコードを理解し、コラボレーションを向上させ、ソフトウェア開発がより効果的になる可能性があります。 ただし、生成された説明とドキュメントが常に正確または完全であるとは限らないので、Copilot Chat の出力を確認し、場合によっては修正する必要があることに注意することが重要です。
コード修正の提案
Copilot Chat では、エラーまたは問題のコンテキストに基づいてコード スニペットと解決策を提案して、コード内のバグの修正を提案できます。 これは、バグの根本原因の特定に苦労している場合や、それを修正する最善の方法についてのガイダンスが必要な場合に便利です。 たとえば、コードでエラー メッセージまたは警告が生成された場合、Copilot Chat は、エラー メッセージ、コードの構文、および周囲のコードに基づいて修正候補を提案できます。
問題を解決し、コードベースに組み込むことができるコード スニペットを生成する可能性がある変数、制御構造、または関数呼び出しに対する変更が、Copilot Chat によって提案されます。 ただし、提案される修正プログラムが常に最適または完全であるとは限らないので、提案を確認してテストする必要があることに注意することが重要です。
コーディング タスクの計画
Copilot Chat では、GitHub の問題を読み取って要約をすることや、それに関する質問に回答したり、次の手順を提案することができます。 これは、多くのコメントで長く複雑な問題があり、すぐに理解したい場合、また次に何をすべきかを把握したい場合に役立ちます。
ただし、Copilot Chat の回答と概要が常に正確または完全であるとは限らないため、正確さについては Copilot Chat の出力の確認が必要であることに注意してください。
リリース、ディスカッション、コミットに関する情報の検索j
Copilot Chat は、特定のリリースで何が変更されたかを確認するのに役立ち、ディスカッションの情報を要約し、特定のコミットの変更を説明することができます。 これは、たとえばプロジェクトを初めて使用する場合、ディスカッションをすぐに理解したい場合、他の人が書いたコードに取り組む必要がある場合に便利です。 ただし、Copilot Chat のリリース、ディスカッション、コミットの概要は、必ずしも正確または完全であるとは限りません。
Copilot Chat のパフォーマンスを向上させる
Copilot Chat は、Q & A、コード生成、コード分析、コード修正などの幅広い実用的なアプリケーションをサポートすることができ、それぞれに異なるパフォーマンス メトリックと軽減戦略が適用されます。 パフォーマンスを向上させ、Copilot Chat の制限事項の一部に対処するために、さまざまな手段を採用できます。 Copilot Chat の制限事項ついて詳しくは、「GitHub Copilot Chat の制限事項」をご覧ください。
プロンプトをトピックに沿ったものにする
Copilot Chat は、コーディングのみに関連するクエリに対処することを目的としています。 そのため、プロンプトをコーディングの質問またはタスクに限定すると、モデルの出力品質が向上する可能性があります。
代わりではなく、ツールとして Copilot Chat を使う
Copilot Chat はコードを生成するための強力なツールですが、人間によるプログラミングの代わりではなく、ツールとして使用することが重要です。 Copilot Chat によって生成されたコードを常に確認してテストし、要件を満たしていて、エラーやセキュリティ上の懸念がないことを確認する必要があります。
セキュリティで保護されたコーディングとコード レビュー プラクティスを使用する
Copilot Chat は構文的に正しいコードを生成できますが、常に安全であるとは限りません。 Copilot Chat の制限に対処するには、ハードコーディングされたパスワードや SQL インジェクションの脆弱性を避け、コード レビューのベスト プラクティスに従うなど、セキュリティで保護されたコーディングのベスト プラクティスに常に従う必要があります。
フィードバックの提供
Note
Copilot pull request summaries に関するフィードバックを GitHub に提供する機能は、エンタープライズ設定によって異なります。 詳しくは、「企業内の Copilot のポリシーと機能を管理する」を参照してください。
Copilot Chat in GitHub で問題や制限が発生した場合は、各チャット応答の下にあるサムダウン アイコンをクリックしてフィードバックを提供することをお勧めします。 これは、開発者がツールを改善し、懸念事項や制限事項に対処するのに役立ちます。
最新情報を入手する
Copilot Chat は新しいテクノロジであり、時間の経過と共に進化する可能性があります。 GitHub Copilot Chat in GitHub の場合、常に最新の製品エクスペリエンスにアクセスできます。 新たに発生する可能性があるセキュリティ リスクやベスト プラクティスについては、常に最新の情報を入手する必要があります。
GitHub Copilot Chat の制限事項
コードベースや入力データなどの要因によっては、Copilot Chat を使う場合に、パフォーマンスのレベルが異なる場合があります。 次の情報は、Copilot Chat に適用されるパフォーマンスに関するシステム制限と主な概念を理解するのに役立ちます。
制限付きのスコープ
Copilot Chat は、大量のコードでトレーニングされていますが、まだスコープが限られており、より複雑なコード構造やあいまいなプログラミング言語を処理できない場合があります。 各言語で、受け取る提案の品質は、その言語のトレーニング データの量と多様性によって異なります。 たとえば、JavaScript は、パブリック リポジトリで適切に表現されており、GitHub Copilot でサポートされている最適な言語の 1 つです。 パブリック リポジトリの表現が少ない言語は、Copilot Chat での支援がより困難になる場合があります。 さらに、Copilot Chat では、書き込まれるコードのコンテキストに基づいてのみコードを提案できるため、より大きな設計やアーキテクチャの問題を特定できない場合があります。
潜在的なバイアス
Copilot のトレーニング データ (既存のコード リポジトリから取得) と大規模な言語モデルによって収集されたコンテキスト (Bing 検索結果など) には、ツールによって永続化される場合があるバイアスとエラーが含まれていることがあります。 さらに、Copilot Chat は、特定のプログラミング言語やコーディング スタイルに偏っているおそれがあり、最適ではない、または不完全なコード提案につながる場合があります。
セキュリティ リスク
Copilot Chat は、書き込まれるコードのコンテキストに基づいてコードを生成します。これにより、慎重に使用しないと機密情報や脆弱性が公開されることがあります。 Copilot Chat を使ってセキュリティを重視するアプリケーション用のコードを生成する場合は、慎重に行う必要があり、常に生成されたコードを十分に確認してテストする必要があります。
パブリック コードとの一致
Copilot Chat は、確率論的な方法で新しいコードを生成できます。 トレーニング セット内のコードと一致するコードが生成される可能性は低いですが、Copilot Chat 候補には、トレーニング セット内のコードに一致するいくつかのコード スニペットが含まれている場合があります。
パブリック コードに一致する候補を無効にした場合、Copilot Chat では、GitHub のパブリック リポジトリにあるコードと一致するコードが表示されないようにするフィルターが利用されます。 ただし、独自に作成していないマテリアルを使用するコードと同じ予防措置を、その適合性を確保するための予防措置を含め、常に講じる必要があります。 これには、厳密なテスト、IP スキャン、セキュリティの脆弱性の確認などが含まれます。
パブリック コードに一致する候補を有効にした場合で、一致するコードが見つかった場合、Copilot Chat にメッセージが表示されます。 メッセージには、一致するコードを含む GitHub 上のリポジトリへのリンクと、検出されたライセンスの詳細が含まれています。 詳しくは、「GitHub Copilot の候補に一致するパブリック コードの検索」を参照してください。
不正確なコード
Copilot Chat の制限事項の 1 つは、生成したコードが有効と思われるものでも、実際には意味的または構文的に正しくないか、開発者の意図を正確に反映していない場合があるということです。 不正確なコードのリスクを軽減するには、重要または機密性の高いアプリケーションを処理する場合は特に、生成されたコードを慎重に確認してテストする必要があります。 また、生成されたコードがベスト プラクティスと設計パターンに準拠し、コードベースの全体的なアーキテクチャとスタイル内に収まるように確認する必要もあります。
コーディング以外のトピックに対する不正確な応答
Copilot Chat はコーディング以外の質問に回答するようには設計されていないため、これらのコンテキストでは、回答が正確ではない場合があります。 ユーザーが Copilot Chat にコーディング以外の質問をした場合、無関係または無意味な回答が生成される場合や、または単に有用な応答を提供できないことを示す可能性があります。
Web 検索を活用して質問に答える
質問の内容によっては、GitHub Copilot Chat は、必要に応じて Bing 検索を使用して質問に答えることができます。 Copilot は、最近のイベント、新しいトレンドやテクノロジ、非常に特殊なサブジェクトについて照会があった場合、またはユーザーが Web 検索を明示的に要求した場合に Bing を使用します。 GitHub Enterprise の管理者は、エンタープライズ全体で Bing を有効にすることも、この決定を組織の管理者に委任することもできます。 詳しくは、「企業内の Copilot のポリシーと機能を管理する」を参照してください。
Bing を活用する場合、Copilot はプロンプトの内容と追加の使用可能なコンテキストを使用して、ユーザーに代わって Bing 検索クエリを生成し、Bing Search API に送信します。 Copilot は、検索結果へのリンクとその応答を提供します。 Bing に送信される検索クエリは、Microsoft のプライバシーに関する声明によって管理されます。
次のステップ
GitHub Copilot Chat in GitHub の使用方法の詳細については、次を参照してください。
- GitHub Enterprise Cloudのドキュメント「GitHub で GitHub Copilot に質問をする」