Skip to main content

IDE での GitHub Copilot Chat の責任ある使用

GitHub Copilot Chat を責任を持って使用する方法について学習し、その目的、機能、制限事項について理解します。

この機能を使用できるユーザーについて

GitHub Copilot Individualサブスクリプションを持つすべてのユーザーは、IDE でGitHub Copilot Chatにアクセスできます。

Copilot Business サブスクリプション または Copilot Enterprise サブスクリプションを持つ Organization または Enterprise の所有者は、 IDE と GitHub.com でGitHub Copilot Chatへのアクセス許可を与えるかどうかを決定することができます。

GitHub Copilot Chat について

GitHub Copilot Chat は、GitHub Copilot と対話できるチャット インターフェイスであり、GitHub Web サイトやサポートされている IDE 内でコード関連の質問をすると回答を受け取ることができます。 チャット インターフェイスを使用すると、ドキュメントに移動したり、オンライン フォーラムを検索したりする必要なく、コーディング情報とサポートにアクセスできます。 詳しくは、「GitHub Copilot とは何ですか?」を参照してください。

GitHub Copilot Chat は、構文、プログラミングの概念、テスト ケース、デバッグなど、さまざまなコーディング関連の質問に答えることができます。 GitHub Copilot Chat は、コーディング以外の質問に答えたり、コーディング以外のトピックに関する一般的な情報を提供したりするようには設計されていません。

GitHub Copilot Chat でサポートされている主な言語は英語です。

GitHub Copilot Chat は、自然言語処理と機械学習を組み合わせて使用することで機能し、質問を理解して、回答を提供します。 このプロセスは、いくつかの手順に分けることができます。

入力処理

ユーザーからの入力プロンプトは、Copilot Chat システムによって前処理され、コンテキスト情報 (現在表示しているリポジトリの名前やユーザーが開いているファイルなど) と組み合わせて、大規模な言語モデルに送信されます。 ユーザーによる入力は、コード スニペットまたはプレーン ランゲージの形式をとることができます。

大規模な言語モデルではプロンプトが表示され、追加のコンテキスト (GitHub に格納されているリポジトリ データなど) が収集され、プロンプトに基づいた応答が提供されます。 このシステムは、コーディング関連の質問にのみ対応することを目的としています。

言語モデルの分析

事前処理されたプロンプトは、大量のテキスト データでトレーニングされたニューラル ネットワークである Copilot Chat 言語モデルを通過します。 言語モデルにより、入力プロンプトが分析されます。

応答の生成

言語モデルによって、入力プロンプトとそれに提供されたコンテキストの分析に基づいた応答が生成されます。 言語モデルでは、追加のコンテキストを収集し、プロンプトに基づいて応答を提供できます。 この応答は、生成されたコード、コードの提案、または既存のコードの説明の形式をとることができます。

@github チャット参加者を使用すると、Copilot Chat は GitHub に保存されているコードからコンテキストを収集したり、Bing (管理者が有効にしている場合) から検索結果を収集したりできます。

出力の形式

Copilot Chat によって生成された応答は書式設定され、ユーザーに表示されます。 Copilot Chat では、生成された応答をわかりやすくするために、構文の強調表示、インデント、およびその他の書式設定機能を使用できます。 ユーザーからの質問の種類に応じて、ソース コード ファイルやドキュメントなど、モデルが応答を生成するときに使用したコンテキストへのリンクも提供される場合があります。

GitHub Copilot Chat は、質問に最も関連性の高い回答を提供することを目的としています。 ただし、お探しの回答が必ず提供されるとは限りません。 Copilot Chat のユーザーは、システムによって生成された応答を確認して検証し、正確かつ適切であることを確認する必要があります。 さらに、製品開発プロセスの一環として、Copilot Chat の安全性を理解し、改善するためにレッド チームを編成しています。 入力プロンプトと出力入力候補は、コンテンツ フィルターを使用して実行されます。 コンテンツ フィルタリング システムは、有害、不快、またはトピック外のコンテンツを含む特定のカテゴリのコンテンツに対する出力を検出して防止します。 GitHub Copilot Chat のパフォーマンスの向上について詳しくは、「GitHub Copilot Chat のパフォーマンスの向上」をご覧ください。

Web 検索を活用して質問に答える

Note

Copilot Chat への Bing 検索統合は現在 パブリック プレビュー 段階であり、変更される可能性があります。

@github チャット参加者を使用する場合、GitHub Copilot Chat は、管理者によって有効になっている場合、Bing 検索を使用して質問に答えることができます。

GitHub Enterprise の管理者は、エンタープライズ全体で Bing を有効にすることも、この決定を組織の管理者に委任することもできます。 詳しくは、「エンタープライズで GitHub Copilot のポリシーを適用する」を参照してください。

Bing を活用する場合、Copilot はプロンプトの内容と追加の使用可能なコンテキストを使用して、ユーザーに代わって Bing 検索クエリを生成し、Bing Search API に送信します。 Copilot は、検索結果へのリンクとその応答を提供します。 Bing に送信される検索クエリは、Microsoft のプライバシーに関する声明によって管理されます。

GitHub Copilot Chat のユース ケース

GitHub Copilot Chat は、さまざまなシナリオでコーディング支援を提供できます。

単体テスト ケースの生成

Copilot Chat は、エディターで開いているコードまたはエディターで強調表示したコード スニペットに基づいてコード スニペットを生成することで、単体テスト ケースの作成に役立ちます。 これは、繰り返しのタスクに多くの時間を費やすことなく、テスト ケースを記述するのに役立ちます。 たとえば、特定の関数のテスト ケースを作成している場合は、Copilot Chat を使用して、関数のシグネチャと本文に基づいて使用できる入力パラメーターと予想される出力値を提案できます。 また、Copilot Chat では、コードのコンテキストとセマンティクスに基づいて、関数が正しく動作していることを確認するアサーションを提案することもできます。

Copilot Chat は、手動で識別するのが困難な場合があるエッジ ケースと境界条件のテスト ケースを作成するのにも役立ちます。 たとえば、Copilot Chat では、エラー処理、null 値、または予期しない入力型のテスト ケースを提案できるため、コードの堅牢性と回復性を確保するのに役立ちます。 ただし、生成されたテスト ケースが考えられるすべてのシナリオをカバーするわけではないことに注意することが重要です。また、コードの品質を確保するには、引き続き手動テストとコード レビューが必要です。 単体テスト ケースについて詳しくは、「自分のコードについて GitHub Copilot Chat に質問する」を参照してください。

コードの説明と改善点の提案

Copilot Chat は、コードの機能と目的に関する自然言語の説明を生成して、選んだコードを説明するのに役立ちます。 これは、コードの動作を理解したい場合や、コードのしくみを理解する必要がある技術以外の利害関係者にとって便利です。 たとえば、コード エディターで関数またはコード ブロックを選んだ場合、Copilot Chat は、コードの動作およびシステム全体に適合する方法について、自然言語の説明を生成できます。 これには、関数の入力および出力パラメーター、その依存関係、大規模なアプリケーションでの目的などの情報を含めることができます。

Copilot Chat は、エラーやエッジ ケースの処理の改善や、コードをより読みやすくするための論理フローの変更など、選択したコードに対する潜在的な改善を提案することもできます。

説明を生成し、関連ドキュメントを提案することで、Copilot Chat を使用すると、選んだコードを理解し、コラボレーションを向上させ、ソフトウェア開発がより効果的になる可能性があります。 ただし、生成された説明とドキュメントが常に正確または完全であるとは限らないので、Copilot Chat の出力を確認し、場合によっては修正する必要があることに注意することが重要です。

コード修正の提案

Copilot Chat では、エラーまたは問題のコンテキストに基づいてコード スニペットと解決策を提案して、コード内のバグの修正を提案できます。 これは、バグの根本原因の特定に苦労している場合や、それを修正する最善の方法についてのガイダンスが必要な場合に便利です。 たとえば、コードでエラー メッセージまたは警告が生成された場合、Copilot Chat は、エラー メッセージ、コードの構文、および周囲のコードに基づいて修正候補を提案できます。

問題を解決し、コードベースに組み込むことができるコード スニペットを生成する可能性がある変数、制御構造、または関数呼び出しに対する変更が、Copilot Chat によって提案されます。 ただし、提案される修正プログラムが常に最適または完全であるとは限らないので、提案を確認してテストする必要があることに注意することが重要です。

コーディングの質問への回答

Copilot Chat に特定のコーディングの問題に関するヘルプや説明を求めると、自然言語形式またはコード スニペット形式で応答を受け取ることができます。

Copilot Chat によって生成された応答は、モデルのトレーニング データ セットを使用して質問に回答します。

@github チャット参加者を使用する場合、生成された応答では、Bing からの検索結果、リポジトリ内のコード、およびナレッジ ベースの Markdown ドキュメントが追加で使用される場合があります。

これにより、一般的なコーディング タスクと課題のガイダンスとサポートが提供されるため、プログラマにとって便利なツールです。

GitHub Copilot Chat

のパフォーマンスの向上

Copilot Chat は、コード生成、コード分析、コード修正などの幅広い実用的なアプリケーションをサポートすることができ、それぞれに異なるパフォーマンス メトリックと軽減戦略があります。 パフォーマンスを向上させ、Copilot Chat の制限事項の一部に対処するために、さまざまな手段を採用できます。 Copilot Chat の制限事項ついて詳しくは、「GitHub Copilot Chat の制限事項」をご覧ください。

プロンプトをトピックに沿ったものにする

Copilot Chat は、コーディングのみに関連するクエリに対処することを目的としています。 そのため、プロンプトをコーディングの質問またはタスクに限定すると、モデルの出力品質が向上する可能性があります。

代わりではなく、ツールとして Copilot Chat を使う

Copilot Chat はコードを生成するための強力なツールですが、人間によるプログラミングの代わりではなく、ツールとして使用することが重要です。 Copilot Chat によって生成されたコードを常に確認してテストし、要件を満たしていて、エラーやセキュリティ上の懸念がないことを確認する必要があります。

セキュリティで保護されたコーディングとコード レビュー プラクティスを使用する

Copilot Chat は構文的に正しいコードを生成できますが、常に安全であるとは限りません。 Copilot Chat の制限に対処するには、ハードコーディングされたパスワードや SQL インジェクションの脆弱性を避け、コード レビューのベスト プラクティスに従うなど、セキュリティで保護されたコーディングのベスト プラクティスに常に従う必要があります。

フィードバックの提供

Copilot Chat で問題や制限が発生した場合は、IDE の Copilot Chat インターフェイスの [フィードバックを共有] リンクを通じてフィードバックを提供することをお勧めします。 これは、開発者がツールを改善し、懸念事項や制限事項に対処するのに役立ちます。

最新情報を入手する

Copilot Chat は新しいテクノロジであり、時間の経過と共に進化する可能性があります。 ツールの更新や変更のほか、発生する可能性がある新しいセキュリティ リスクやベスト プラクティスについても、最新の状態を保つ必要があります。 拡張機能の自動更新は、Visual Studio Code、Visual Studio、および JetBrains IDE スイートではデフォルトで有効になっています。 GitHub Copilot Chat in GitHub の場合、常に最新の製品エクスペリエンスにアクセスできます。 自動更新が有効になっている場合、IDE を開くと、Copilot Chat が自動的に最新バージョンに更新されます。 IDE の自動更新について詳しくは、Visual Studio Code のドキュメントVisual Studio のドキュメントJetBrains IDE のドキュメントをご覧ください。

GitHub Copilot Chat

の制限事項

コードベースや入力データなどの要因によっては、Copilot Chat を使う場合に、パフォーマンスのレベルが異なる場合があります。 次の情報は、Copilot Chat に適用されるパフォーマンスに関するシステム制限と主な概念を理解するのに役立ちます。

制限付きのスコープ

Copilot Chat は、大量のコードでトレーニングされていますが、まだスコープが限られており、より複雑なコード構造やあいまいなプログラミング言語を処理できない場合があります。 各言語で、受け取る提案の品質は、その言語のトレーニング データの量と多様性によって異なります。 たとえば、JavaScript は、パブリック リポジトリで適切に表現されており、GitHub Copilot でサポートされている最適な言語の 1 つです。 パブリック リポジトリの表現が少ない言語は、Copilot Chat での支援がより困難になる場合があります。 さらに、Copilot Chat では、書き込まれるコードのコンテキストに基づいてのみコードを提案できるため、より大きな設計やアーキテクチャの問題を特定できない場合があります。

潜在的なバイアス

Copilot のトレーニング データは既存のコード リポジトリから取得されており、ツールによって永続化される場合があるバイアスとエラーが含まれていることがあります。 さらに、Copilot Chat は、特定のプログラミング言語やコーディング スタイルに偏っているおそれがあり、最適ではない、または不完全なコード提案につながる場合があります。

セキュリティ リスク

Copilot Chat は、書き込まれるコードのコンテキストに基づいてコードを生成します。これにより、慎重に使用しないと機密情報や脆弱性が公開されることがあります。 Copilot Chat を使ってセキュリティを重視するアプリケーション用のコードを生成する場合は、慎重に行う必要があり、常に生成されたコードを十分に確認してテストする必要があります。

パブリック コードとの一致

Copilot Chat は、確率論的な方法で新しいコードを生成できます。 トレーニング セット内のコードと一致するコードが生成される可能性は低いですが、Copilot Chat 候補には、トレーニング セット内のコードに一致するいくつかのコード スニペットが含まれている場合があります。

パブリック コードに一致する候補を無効にした場合、Copilot Chat では、GitHub のパブリック リポジトリにあるコードと一致するコードが表示されないようにするフィルターが利用されます。 ただし、独自に作成していないマテリアルを使用するコードと同じ予防措置を、その適合性を確保するための予防措置を含め、常に講じる必要があります。 これには、厳密なテスト、IP スキャン、セキュリティの脆弱性の確認などが含まれます。 ご利用の IDE またはエディターが、生成されたコードをレビューする前に自動的にコンパイルまたは実行しないようにする必要があります。

パブリック コードに一致する候補を有効にした場合で、一致するコードが見つかった場合、Copilot Chat にメッセージが表示されます。 メッセージには、VS Code エディターで、一致したコードの詳細と見つかったライセンスの詳細を表示できるリンクが含まれています。 詳しくは、「GitHub Copilot の候補に一致するパブリック コードの検索」を参照してください。

Copilot Chat は、GitHub リポジトリのパブリック コードとの一致をブロックするフィルターを利用しますが、独自に作成していない素材を使用するコードの場合と同じ予防措置を常に講じる必要があります。これには、適合性を確保するための予防措置も含まれます。 これには、厳密なテスト、IP スキャン、セキュリティの脆弱性の確認などが含まれます。 ご利用の IDE またはエディターが、生成されたコードをレビューする前に自動的にコンパイルまたは実行しないようにする必要があります。

Copilot Chat は、GitHub リポジトリのパブリック コードとの一致をブロックするフィルターを利用しますが、独自に作成していない素材を使用するコードの場合と同じ予防措置を常に講じる必要があります。これには、適合性を確保するための予防措置も含まれます。 これには、厳密なテスト、IP スキャン、セキュリティの脆弱性の確認などが含まれます。 ご利用の IDE またはエディターが、生成されたコードをレビューする前に自動的にコンパイルまたは実行しないようにする必要があります。

不正確なコード

Copilot Chat の制限事項の 1 つは、生成したコードが有効と思われるものでも、実際には意味的または構文的に正しくないか、開発者の意図を正確に反映していない場合があるということです。 不正確なコードのリスクを軽減するには、重要または機密性の高いアプリケーションを処理する場合は特に、生成されたコードを慎重に確認してテストする必要があります。 また、生成されたコードがベスト プラクティスと設計パターンに準拠し、コードベースの全体的なアーキテクチャとスタイル内に収まるように確認する必要もあります。

コーディング以外のトピックに対する不正確な応答

Copilot Chat はコーディング以外の質問に回答するようには設計されていないため、これらのコンテキストでは、回答が正確ではない場合があります。 ユーザーが Copilot Chat にコーディング以外の質問をした場合、無関係または無意味な回答が生成される場合や、または単に有用な応答を提供できないことを示す可能性があります。

次のステップ

GitHub Copilot Chat の使用方法の詳細については、次を参照してください。

参考資料

GitHub Copilot Chat について

GitHub Copilot Chat は、GitHub Copilot と対話できるチャット インターフェイスであり、GitHub Web サイトやサポートされている IDE 内でコード関連の質問をすると回答を受け取ることができます。 チャット インターフェイスを使用すると、ドキュメントに移動したり、オンライン フォーラムを検索したりする必要なく、コーディング情報とサポートにアクセスできます。 詳しくは、「GitHub Copilot とは何ですか?」を参照してください。

GitHub Copilot Chat は、構文、プログラミングの概念、テスト ケース、デバッグなど、さまざまなコーディング関連の質問に答えることができます。 GitHub Copilot Chat は、コーディング以外の質問に答えたり、コーディング以外のトピックに関する一般的な情報を提供したりするようには設計されていません。

GitHub Copilot Chat でサポートされている主な言語は英語です。

GitHub Copilot Chat は、自然言語処理と機械学習を組み合わせて使用することで機能し、質問を理解して、回答を提供します。 このプロセスは、いくつかの手順に分けることができます。

入力処理

ユーザーからの入力プロンプトは、Copilot Chat システムによって前処理され、コンテキスト情報 (現在表示しているリポジトリの名前やユーザーが開いているファイルなど) と組み合わせて、大規模な言語モデルに送信されます。 ユーザーによる入力は、コード スニペットまたはプレーン ランゲージの形式をとることができます。

大規模な言語モデルではプロンプトが表示され、追加のコンテキスト (GitHub に格納されているリポジトリ データなど) が収集され、プロンプトに基づいた応答が提供されます。 このシステムは、コーディング関連の質問にのみ対応することを目的としています。

言語モデルの分析

事前処理されたプロンプトは、大量のテキスト データでトレーニングされたニューラル ネットワークである Copilot Chat 言語モデルを通過します。 言語モデルにより、入力プロンプトが分析されます。

応答の生成

言語モデルによって、入力プロンプトとそれに提供されたコンテキストの分析に基づいた応答が生成されます。 言語モデルでは、追加のコンテキストを収集し、プロンプトに基づいて応答を提供できます。 この応答は、生成されたコード、コードの提案、または既存のコードの説明の形式をとることができます。

@github チャット参加者を使用すると、Copilot Chat は GitHub に保存されているコードからコンテキストを収集したり、Bing (管理者が有効にしている場合) から検索結果を収集したりできます。

出力の形式

Copilot Chat によって生成された応答は書式設定され、ユーザーに表示されます。 Copilot Chat では、生成された応答をわかりやすくするために、構文の強調表示、インデント、およびその他の書式設定機能を使用できます。 ユーザーからの質問の種類に応じて、ソース コード ファイルやドキュメントなど、モデルが応答を生成するときに使用したコンテキストへのリンクも提供される場合があります。

GitHub Copilot Chat は、質問に最も関連性の高い回答を提供することを目的としています。 ただし、お探しの回答が必ず提供されるとは限りません。 Copilot Chat のユーザーは、システムによって生成された応答を確認して検証し、正確かつ適切であることを確認する必要があります。 さらに、製品開発プロセスの一環として、Copilot Chat の安全性を理解し、改善するためにレッド チームを編成しています。 入力プロンプトと出力入力候補は、コンテンツ フィルターを使用して実行されます。 コンテンツ フィルタリング システムは、有害、不快、またはトピック外のコンテンツを含む特定のカテゴリのコンテンツに対する出力を検出して防止します。 GitHub Copilot Chat のパフォーマンスの向上について詳しくは、「GitHub Copilot Chat のパフォーマンスの向上」をご覧ください。

Web 検索を活用して質問に答える

Note

Copilot Chat への Bing 検索統合は現在 パブリック プレビュー 段階であり、変更される可能性があります。

@github チャット参加者を使用する場合、GitHub Copilot Chat は、管理者によって有効になっている場合、Bing 検索を使用して質問に答えることができます。

GitHub Enterprise の管理者は、エンタープライズ全体で Bing を有効にすることも、この決定を組織の管理者に委任することもできます。 詳しくは、「エンタープライズで GitHub Copilot のポリシーを適用する」を参照してください。

Bing を活用する場合、Copilot はプロンプトの内容と追加の使用可能なコンテキストを使用して、ユーザーに代わって Bing 検索クエリを生成し、Bing Search API に送信します。 Copilot は、検索結果へのリンクとその応答を提供します。 Bing に送信される検索クエリは、Microsoft のプライバシーに関する声明によって管理されます。

GitHub Copilot Chat のユース ケース

GitHub Copilot Chat は、さまざまなシナリオでコーディング支援を提供できます。

単体テスト ケースの生成

Copilot Chat は、エディターで開いているコードまたはエディターで強調表示したコード スニペットに基づいてコード スニペットを生成することで、単体テスト ケースの作成に役立ちます。 これは、繰り返しのタスクに多くの時間を費やすことなく、テスト ケースを記述するのに役立ちます。 たとえば、特定の関数のテスト ケースを作成している場合は、Copilot Chat を使用して、関数のシグネチャと本文に基づいて使用できる入力パラメーターと予想される出力値を提案できます。 また、Copilot Chat では、コードのコンテキストとセマンティクスに基づいて、関数が正しく動作していることを確認するアサーションを提案することもできます。

Copilot Chat は、手動で識別するのが困難な場合があるエッジ ケースと境界条件のテスト ケースを作成するのにも役立ちます。 たとえば、Copilot Chat では、エラー処理、null 値、または予期しない入力型のテスト ケースを提案できるため、コードの堅牢性と回復性を確保するのに役立ちます。 ただし、生成されたテスト ケースが考えられるすべてのシナリオをカバーするわけではないことに注意することが重要です。また、コードの品質を確保するには、引き続き手動テストとコード レビューが必要です。 単体テスト ケースについて詳しくは、「自分のコードについて GitHub Copilot Chat に質問する」を参照してください。

コードの説明と改善点の提案

Copilot Chat は、コードの機能と目的に関する自然言語の説明を生成して、選んだコードを説明するのに役立ちます。 これは、コードの動作を理解したい場合や、コードのしくみを理解する必要がある技術以外の利害関係者にとって便利です。 たとえば、コード エディターで関数またはコード ブロックを選んだ場合、Copilot Chat は、コードの動作およびシステム全体に適合する方法について、自然言語の説明を生成できます。 これには、関数の入力および出力パラメーター、その依存関係、大規模なアプリケーションでの目的などの情報を含めることができます。

Copilot Chat は、エラーやエッジ ケースの処理の改善や、コードをより読みやすくするための論理フローの変更など、選択したコードに対する潜在的な改善を提案することもできます。

説明を生成し、関連ドキュメントを提案することで、Copilot Chat を使用すると、選んだコードを理解し、コラボレーションを向上させ、ソフトウェア開発がより効果的になる可能性があります。 ただし、生成された説明とドキュメントが常に正確または完全であるとは限らないので、Copilot Chat の出力を確認し、場合によっては修正する必要があることに注意することが重要です。

コード修正の提案

Copilot Chat では、エラーまたは問題のコンテキストに基づいてコード スニペットと解決策を提案して、コード内のバグの修正を提案できます。 これは、バグの根本原因の特定に苦労している場合や、それを修正する最善の方法についてのガイダンスが必要な場合に便利です。 たとえば、コードでエラー メッセージまたは警告が生成された場合、Copilot Chat は、エラー メッセージ、コードの構文、および周囲のコードに基づいて修正候補を提案できます。

問題を解決し、コードベースに組み込むことができるコード スニペットを生成する可能性がある変数、制御構造、または関数呼び出しに対する変更が、Copilot Chat によって提案されます。 ただし、提案される修正プログラムが常に最適または完全であるとは限らないので、提案を確認してテストする必要があることに注意することが重要です。

コーディングの質問への回答

Copilot Chat に特定のコーディングの問題に関するヘルプや説明を求めると、自然言語形式またはコード スニペット形式で応答を受け取ることができます。

Copilot Chat によって生成された応答は、モデルのトレーニング データ セットを使用して質問に回答します。

これにより、一般的なコーディング タスクと課題のガイダンスとサポートが提供されるため、プログラマにとって便利なツールです。

GitHub Copilot Chat

のパフォーマンスの向上

Copilot Chat は、コード生成、コード分析、コード修正などの幅広い実用的なアプリケーションをサポートすることができ、それぞれに異なるパフォーマンス メトリックと軽減戦略があります。 パフォーマンスを向上させ、Copilot Chat の制限事項の一部に対処するために、さまざまな手段を採用できます。 Copilot Chat の制限事項ついて詳しくは、「GitHub Copilot Chat の制限事項」をご覧ください。

プロンプトをトピックに沿ったものにする

Copilot Chat は、コーディングのみに関連するクエリに対処することを目的としています。 そのため、プロンプトをコーディングの質問またはタスクに限定すると、モデルの出力品質が向上する可能性があります。

代わりではなく、ツールとして Copilot Chat を使う

Copilot Chat はコードを生成するための強力なツールですが、人間によるプログラミングの代わりではなく、ツールとして使用することが重要です。 Copilot Chat によって生成されたコードを常に確認してテストし、要件を満たしていて、エラーやセキュリティ上の懸念がないことを確認する必要があります。

セキュリティで保護されたコーディングとコード レビュー プラクティスを使用する

Copilot Chat は構文的に正しいコードを生成できますが、常に安全であるとは限りません。 Copilot Chat の制限に対処するには、ハードコーディングされたパスワードや SQL インジェクションの脆弱性を避け、コード レビューのベスト プラクティスに従うなど、セキュリティで保護されたコーディングのベスト プラクティスに常に従う必要があります。

フィードバックの提供

Copilot Chat で問題や制限が発生した場合は、IDE の Copilot Chat インターフェイスの [フィードバックを共有] リンクを通じてフィードバックを提供することをお勧めします。 これは、開発者がツールを改善し、懸念事項や制限事項に対処するのに役立ちます。

最新情報を入手する

Copilot Chat は新しいテクノロジであり、時間の経過と共に進化する可能性があります。 ツールの更新や変更のほか、発生する可能性がある新しいセキュリティ リスクやベスト プラクティスについても、最新の状態を保つ必要があります。 拡張機能の自動更新は、Visual Studio Code、Visual Studio、および JetBrains IDE スイートではデフォルトで有効になっています。 GitHub Copilot Chat in GitHub の場合、常に最新の製品エクスペリエンスにアクセスできます。 自動更新が有効になっている場合、IDE を開くと、Copilot Chat が自動的に最新バージョンに更新されます。 IDE の自動更新について詳しくは、Visual Studio Code のドキュメントVisual Studio のドキュメントJetBrains IDE のドキュメントをご覧ください。

GitHub Copilot Chat

の制限事項

コードベースや入力データなどの要因によっては、Copilot Chat を使う場合に、パフォーマンスのレベルが異なる場合があります。 次の情報は、Copilot Chat に適用されるパフォーマンスに関するシステム制限と主な概念を理解するのに役立ちます。

制限付きのスコープ

Copilot Chat は、大量のコードでトレーニングされていますが、まだスコープが限られており、より複雑なコード構造やあいまいなプログラミング言語を処理できない場合があります。 各言語で、受け取る提案の品質は、その言語のトレーニング データの量と多様性によって異なります。 たとえば、JavaScript は、パブリック リポジトリで適切に表現されており、GitHub Copilot でサポートされている最適な言語の 1 つです。 パブリック リポジトリの表現が少ない言語は、Copilot Chat での支援がより困難になる場合があります。 さらに、Copilot Chat では、書き込まれるコードのコンテキストに基づいてのみコードを提案できるため、より大きな設計やアーキテクチャの問題を特定できない場合があります。

潜在的なバイアス

Copilot のトレーニング データは既存のコード リポジトリから取得されており、ツールによって永続化される場合があるバイアスとエラーが含まれていることがあります。 さらに、Copilot Chat は、特定のプログラミング言語やコーディング スタイルに偏っているおそれがあり、最適ではない、または不完全なコード提案につながる場合があります。

セキュリティ リスク

Copilot Chat は、書き込まれるコードのコンテキストに基づいてコードを生成します。これにより、慎重に使用しないと機密情報や脆弱性が公開されることがあります。 Copilot Chat を使ってセキュリティを重視するアプリケーション用のコードを生成する場合は、慎重に行う必要があり、常に生成されたコードを十分に確認してテストする必要があります。

パブリック コードとの一致

Copilot Chat は、確率論的な方法で新しいコードを生成できます。 トレーニング セット内のコードと一致するコードが生成される可能性は低いですが、Copilot Chat 候補には、トレーニング セット内のコードに一致するいくつかのコード スニペットが含まれている場合があります。

パブリック コードに一致する候補を無効にした場合、Copilot Chat では、GitHub のパブリック リポジトリにあるコードと一致するコードが表示されないようにするフィルターが利用されます。 ただし、独自に作成していないマテリアルを使用するコードと同じ予防措置を、その適合性を確保するための予防措置を含め、常に講じる必要があります。 これには、厳密なテスト、IP スキャン、セキュリティの脆弱性の確認などが含まれます。 ご利用の IDE またはエディターが、生成されたコードをレビューする前に自動的にコンパイルまたは実行しないようにする必要があります。

パブリック コードに一致する候補を有効にした場合で、一致するコードが見つかった場合、Copilot Chat にメッセージが表示されます。 メッセージには、VS Code エディターで、一致したコードの詳細と見つかったライセンスの詳細を表示できるリンクが含まれています。 詳しくは、「GitHub Copilot の候補に一致するパブリック コードの検索」を参照してください。

Copilot Chat は、GitHub リポジトリのパブリック コードとの一致をブロックするフィルターを利用しますが、独自に作成していない素材を使用するコードの場合と同じ予防措置を常に講じる必要があります。これには、適合性を確保するための予防措置も含まれます。 これには、厳密なテスト、IP スキャン、セキュリティの脆弱性の確認などが含まれます。 ご利用の IDE またはエディターが、生成されたコードをレビューする前に自動的にコンパイルまたは実行しないようにする必要があります。

Copilot Chat は、GitHub リポジトリのパブリック コードとの一致をブロックするフィルターを利用しますが、独自に作成していない素材を使用するコードの場合と同じ予防措置を常に講じる必要があります。これには、適合性を確保するための予防措置も含まれます。 これには、厳密なテスト、IP スキャン、セキュリティの脆弱性の確認などが含まれます。 ご利用の IDE またはエディターが、生成されたコードをレビューする前に自動的にコンパイルまたは実行しないようにする必要があります。

不正確なコード

Copilot Chat の制限事項の 1 つは、生成したコードが有効と思われるものでも、実際には意味的または構文的に正しくないか、開発者の意図を正確に反映していない場合があるということです。 不正確なコードのリスクを軽減するには、重要または機密性の高いアプリケーションを処理する場合は特に、生成されたコードを慎重に確認してテストする必要があります。 また、生成されたコードがベスト プラクティスと設計パターンに準拠し、コードベースの全体的なアーキテクチャとスタイル内に収まるように確認する必要もあります。

コーディング以外のトピックに対する不正確な応答

Copilot Chat はコーディング以外の質問に回答するようには設計されていないため、これらのコンテキストでは、回答が正確ではない場合があります。 ユーザーが Copilot Chat にコーディング以外の質問をした場合、無関係または無意味な回答が生成される場合や、または単に有用な応答を提供できないことを示す可能性があります。

次のステップ

GitHub Copilot Chat の使用方法の詳細については、次を参照してください。

参考資料

GitHub Copilot Chat について

GitHub Copilot Chat は、GitHub Copilot と対話できるチャット インターフェイスであり、GitHub Web サイトやサポートされている IDE 内でコード関連の質問をすると回答を受け取ることができます。 チャット インターフェイスを使用すると、ドキュメントに移動したり、オンライン フォーラムを検索したりする必要なく、コーディング情報とサポートにアクセスできます。 詳しくは、「GitHub Copilot とは何ですか?」を参照してください。

GitHub Copilot Chat は、構文、プログラミングの概念、テスト ケース、デバッグなど、さまざまなコーディング関連の質問に答えることができます。 GitHub Copilot Chat は、コーディング以外の質問に答えたり、コーディング以外のトピックに関する一般的な情報を提供したりするようには設計されていません。

GitHub Copilot Chat でサポートされている主な言語は英語です。

GitHub Copilot Chat は、自然言語処理と機械学習を組み合わせて使用することで機能し、質問を理解して、回答を提供します。 このプロセスは、いくつかの手順に分けることができます。

入力処理

ユーザーからの入力プロンプトは、Copilot Chat システムによって前処理され、コンテキスト情報 (現在表示しているリポジトリの名前やユーザーが開いているファイルなど) と組み合わせて、大規模な言語モデルに送信されます。 ユーザーによる入力は、コード スニペットまたはプレーン ランゲージの形式をとることができます。

大規模な言語モデルではプロンプトが表示され、追加のコンテキスト (GitHub に格納されているリポジトリ データなど) が収集され、プロンプトに基づいた応答が提供されます。 このシステムは、コーディング関連の質問にのみ対応することを目的としています。

言語モデルの分析

事前処理されたプロンプトは、大量のテキスト データでトレーニングされたニューラル ネットワークである Copilot Chat 言語モデルを通過します。 言語モデルにより、入力プロンプトが分析されます。

応答の生成

言語モデルによって、入力プロンプトとそれに提供されたコンテキストの分析に基づいた応答が生成されます。 言語モデルでは、追加のコンテキストを収集し、プロンプトに基づいて応答を提供できます。 この応答は、生成されたコード、コードの提案、または既存のコードの説明の形式をとることができます。

出力の形式

Copilot Chat によって生成された応答は書式設定され、ユーザーに表示されます。 Copilot Chat では、生成された応答をわかりやすくするために、構文の強調表示、インデント、およびその他の書式設定機能を使用できます。 ユーザーからの質問の種類に応じて、ソース コード ファイルやドキュメントなど、モデルが応答を生成するときに使用したコンテキストへのリンクも提供される場合があります。

GitHub Copilot Chat は、質問に最も関連性の高い回答を提供することを目的としています。 ただし、お探しの回答が必ず提供されるとは限りません。 Copilot Chat のユーザーは、システムによって生成された応答を確認して検証し、正確かつ適切であることを確認する必要があります。 さらに、製品開発プロセスの一環として、Copilot Chat の安全性を理解し、改善するためにレッド チームを編成しています。 入力プロンプトと出力入力候補は、コンテンツ フィルターを使用して実行されます。 コンテンツ フィルタリング システムは、有害、不快、またはトピック外のコンテンツを含む特定のカテゴリのコンテンツに対する出力を検出して防止します。 GitHub Copilot Chat のパフォーマンスの向上について詳しくは、「GitHub Copilot Chat のパフォーマンスの向上」をご覧ください。

GitHub Copilot Chat のユース ケース

GitHub Copilot Chat は、さまざまなシナリオでコーディング支援を提供できます。

単体テスト ケースの生成

Copilot Chat は、エディターで開いているコードまたはエディターで強調表示したコード スニペットに基づいてコード スニペットを生成することで、単体テスト ケースの作成に役立ちます。 これは、繰り返しのタスクに多くの時間を費やすことなく、テスト ケースを記述するのに役立ちます。 たとえば、特定の関数のテスト ケースを作成している場合は、Copilot Chat を使用して、関数のシグネチャと本文に基づいて使用できる入力パラメーターと予想される出力値を提案できます。 また、Copilot Chat では、コードのコンテキストとセマンティクスに基づいて、関数が正しく動作していることを確認するアサーションを提案することもできます。

Copilot Chat は、手動で識別するのが困難な場合があるエッジ ケースと境界条件のテスト ケースを作成するのにも役立ちます。 たとえば、Copilot Chat では、エラー処理、null 値、または予期しない入力型のテスト ケースを提案できるため、コードの堅牢性と回復性を確保するのに役立ちます。 ただし、生成されたテスト ケースが考えられるすべてのシナリオをカバーするわけではないことに注意することが重要です。また、コードの品質を確保するには、引き続き手動テストとコード レビューが必要です。 単体テスト ケースについて詳しくは、「自分のコードについて GitHub Copilot Chat に質問する」を参照してください。

コードの説明と改善点の提案

Copilot Chat は、コードの機能と目的に関する自然言語の説明を生成して、選んだコードを説明するのに役立ちます。 これは、コードの動作を理解したい場合や、コードのしくみを理解する必要がある技術以外の利害関係者にとって便利です。 たとえば、コード エディターで関数またはコード ブロックを選んだ場合、Copilot Chat は、コードの動作およびシステム全体に適合する方法について、自然言語の説明を生成できます。 これには、関数の入力および出力パラメーター、その依存関係、大規模なアプリケーションでの目的などの情報を含めることができます。

Copilot Chat は、エラーやエッジ ケースの処理の改善や、コードをより読みやすくするための論理フローの変更など、選択したコードに対する潜在的な改善を提案することもできます。

説明を生成し、関連ドキュメントを提案することで、Copilot Chat を使用すると、選んだコードを理解し、コラボレーションを向上させ、ソフトウェア開発がより効果的になる可能性があります。 ただし、生成された説明とドキュメントが常に正確または完全であるとは限らないので、Copilot Chat の出力を確認し、場合によっては修正する必要があることに注意することが重要です。

コード修正の提案

Copilot Chat では、エラーまたは問題のコンテキストに基づいてコード スニペットと解決策を提案して、コード内のバグの修正を提案できます。 これは、バグの根本原因の特定に苦労している場合や、それを修正する最善の方法についてのガイダンスが必要な場合に便利です。 たとえば、コードでエラー メッセージまたは警告が生成された場合、Copilot Chat は、エラー メッセージ、コードの構文、および周囲のコードに基づいて修正候補を提案できます。

問題を解決し、コードベースに組み込むことができるコード スニペットを生成する可能性がある変数、制御構造、または関数呼び出しに対する変更が、Copilot Chat によって提案されます。 ただし、提案される修正プログラムが常に最適または完全であるとは限らないので、提案を確認してテストする必要があることに注意することが重要です。

コーディングの質問への回答

Copilot Chat に特定のコーディングの問題に関するヘルプや説明を求めると、自然言語形式またはコード スニペット形式で応答を受け取ることができます。

Copilot Chat によって生成された応答は、モデルのトレーニング データ セットを使用して質問に回答します。

これにより、一般的なコーディング タスクと課題のガイダンスとサポートが提供されるため、プログラマにとって便利なツールです。

GitHub Copilot Chat

のパフォーマンスの向上

Copilot Chat は、コード生成、コード分析、コード修正などの幅広い実用的なアプリケーションをサポートすることができ、それぞれに異なるパフォーマンス メトリックと軽減戦略があります。 パフォーマンスを向上させ、Copilot Chat の制限事項の一部に対処するために、さまざまな手段を採用できます。 Copilot Chat の制限事項ついて詳しくは、「GitHub Copilot Chat の制限事項」をご覧ください。

プロンプトをトピックに沿ったものにする

Copilot Chat は、コーディングのみに関連するクエリに対処することを目的としています。 そのため、プロンプトをコーディングの質問またはタスクに限定すると、モデルの出力品質が向上する可能性があります。

代わりではなく、ツールとして Copilot Chat を使う

Copilot Chat はコードを生成するための強力なツールですが、人間によるプログラミングの代わりではなく、ツールとして使用することが重要です。 Copilot Chat によって生成されたコードを常に確認してテストし、要件を満たしていて、エラーやセキュリティ上の懸念がないことを確認する必要があります。

セキュリティで保護されたコーディングとコード レビュー プラクティスを使用する

Copilot Chat は構文的に正しいコードを生成できますが、常に安全であるとは限りません。 Copilot Chat の制限に対処するには、ハードコーディングされたパスワードや SQL インジェクションの脆弱性を避け、コード レビューのベスト プラクティスに従うなど、セキュリティで保護されたコーディングのベスト プラクティスに常に従う必要があります。

フィードバックの提供

Copilot Chat で問題や制限が発生した場合は、IDE の Copilot Chat インターフェイスの [フィードバックを共有] リンクを通じてフィードバックを提供することをお勧めします。 これは、開発者がツールを改善し、懸念事項や制限事項に対処するのに役立ちます。

最新情報を入手する

Copilot Chat は新しいテクノロジであり、時間の経過と共に進化する可能性があります。 ツールの更新や変更のほか、発生する可能性がある新しいセキュリティ リスクやベスト プラクティスについても、最新の状態を保つ必要があります。 拡張機能の自動更新は、Visual Studio Code、Visual Studio、および JetBrains IDE スイートではデフォルトで有効になっています。 GitHub Copilot Chat in GitHub の場合、常に最新の製品エクスペリエンスにアクセスできます。 自動更新が有効になっている場合、IDE を開くと、Copilot Chat が自動的に最新バージョンに更新されます。 IDE の自動更新について詳しくは、Visual Studio Code のドキュメントVisual Studio のドキュメントJetBrains IDE のドキュメントをご覧ください。

GitHub Copilot Chat

の制限事項

コードベースや入力データなどの要因によっては、Copilot Chat を使う場合に、パフォーマンスのレベルが異なる場合があります。 次の情報は、Copilot Chat に適用されるパフォーマンスに関するシステム制限と主な概念を理解するのに役立ちます。

制限付きのスコープ

Copilot Chat は、大量のコードでトレーニングされていますが、まだスコープが限られており、より複雑なコード構造やあいまいなプログラミング言語を処理できない場合があります。 各言語で、受け取る提案の品質は、その言語のトレーニング データの量と多様性によって異なります。 たとえば、JavaScript は、パブリック リポジトリで適切に表現されており、GitHub Copilot でサポートされている最適な言語の 1 つです。 パブリック リポジトリの表現が少ない言語は、Copilot Chat での支援がより困難になる場合があります。 さらに、Copilot Chat では、書き込まれるコードのコンテキストに基づいてのみコードを提案できるため、より大きな設計やアーキテクチャの問題を特定できない場合があります。

潜在的なバイアス

Copilot のトレーニング データは既存のコード リポジトリから取得されており、ツールによって永続化される場合があるバイアスとエラーが含まれていることがあります。 さらに、Copilot Chat は、特定のプログラミング言語やコーディング スタイルに偏っているおそれがあり、最適ではない、または不完全なコード提案につながる場合があります。

セキュリティ リスク

Copilot Chat は、書き込まれるコードのコンテキストに基づいてコードを生成します。これにより、慎重に使用しないと機密情報や脆弱性が公開されることがあります。 Copilot Chat を使ってセキュリティを重視するアプリケーション用のコードを生成する場合は、慎重に行う必要があり、常に生成されたコードを十分に確認してテストする必要があります。

パブリック コードとの一致

Copilot Chat は、確率論的な方法で新しいコードを生成できます。 トレーニング セット内のコードと一致するコードが生成される可能性は低いですが、Copilot Chat 候補には、トレーニング セット内のコードに一致するいくつかのコード スニペットが含まれている場合があります。

パブリック コードに一致する候補を無効にした場合、Copilot Chat では、GitHub のパブリック リポジトリにあるコードと一致するコードが表示されないようにするフィルターが利用されます。 ただし、独自に作成していないマテリアルを使用するコードと同じ予防措置を、その適合性を確保するための予防措置を含め、常に講じる必要があります。 これには、厳密なテスト、IP スキャン、セキュリティの脆弱性の確認などが含まれます。 ご利用の IDE またはエディターが、生成されたコードをレビューする前に自動的にコンパイルまたは実行しないようにする必要があります。

パブリック コードに一致する候補を有効にした場合で、一致するコードが見つかった場合、Copilot Chat にメッセージが表示されます。 メッセージには、VS Code エディターで、一致したコードの詳細と見つかったライセンスの詳細を表示できるリンクが含まれています。 詳しくは、「GitHub Copilot の候補に一致するパブリック コードの検索」を参照してください。

Copilot Chat は、GitHub リポジトリのパブリック コードとの一致をブロックするフィルターを利用しますが、独自に作成していない素材を使用するコードの場合と同じ予防措置を常に講じる必要があります。これには、適合性を確保するための予防措置も含まれます。 これには、厳密なテスト、IP スキャン、セキュリティの脆弱性の確認などが含まれます。 ご利用の IDE またはエディターが、生成されたコードをレビューする前に自動的にコンパイルまたは実行しないようにする必要があります。

Copilot Chat は、GitHub リポジトリのパブリック コードとの一致をブロックするフィルターを利用しますが、独自に作成していない素材を使用するコードの場合と同じ予防措置を常に講じる必要があります。これには、適合性を確保するための予防措置も含まれます。 これには、厳密なテスト、IP スキャン、セキュリティの脆弱性の確認などが含まれます。 ご利用の IDE またはエディターが、生成されたコードをレビューする前に自動的にコンパイルまたは実行しないようにする必要があります。

不正確なコード

Copilot Chat の制限事項の 1 つは、生成したコードが有効と思われるものでも、実際には意味的または構文的に正しくないか、開発者の意図を正確に反映していない場合があるということです。 不正確なコードのリスクを軽減するには、重要または機密性の高いアプリケーションを処理する場合は特に、生成されたコードを慎重に確認してテストする必要があります。 また、生成されたコードがベスト プラクティスと設計パターンに準拠し、コードベースの全体的なアーキテクチャとスタイル内に収まるように確認する必要もあります。

コーディング以外のトピックに対する不正確な応答

Copilot Chat はコーディング以外の質問に回答するようには設計されていないため、これらのコンテキストでは、回答が正確ではない場合があります。 ユーザーが Copilot Chat にコーディング以外の質問をした場合、無関係または無意味な回答が生成される場合や、または単に有用な応答を提供できないことを示す可能性があります。

次のステップ

GitHub Copilot Chat の使用方法の詳細については、次を参照してください。

参考資料