Skip to main content

IDE での GitHub Copilot チャットの責任ある使用

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

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

Copilot Pro、Copilot Pro+、または Copilot無料 プランをお持ちのすべてのユーザーは、サポートされている IDE と GitHub の Web サイトで Copilot チャット にアクセスできます。

Copilot 事業 プランを所有する organization の所有者は、Copilot チャット へのアクセスを許可するかどうかを決定できます。

GitHub Copilot チャット について

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

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

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

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

入力処理

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

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

言語モデルの分析

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

応答の生成

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

          `@github` チャット参加者を使用すると、Copilot チャット は、 GitHub に格納されているコードと、Bingからの検索結果 (管理者によって有効になっている場合) からコンテキストを収集できます。

出力の形式

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

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

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

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

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

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

GitHub Copilot

で自分のキーを持ち込んで使用する (Bring Your Own Key, BYOK)

GitHub Copilot チャット で Bring Your Own Key を使用すると、既定の Copilot モデルを超えて、サポートされているプロバイダーの大規模な言語モデルにチャット エクスペリエンスを接続できます。 サポートされているプロバイダーの例としては、Anthropic、AWS Bedrock、Google AI Studio、Microsoft Foundry、OpenAI、OpenAI 互換プロバイダー、xAI などがあります。 選択したプロバイダーの API キーは、Copilot 設定に直接追加します。

BYOK がアクティブな場合:

  •         **特徴範囲**: 選択したモデルはGitHub Copilot チャット 内で使用されます。 エージェント モードでは、BYOK によってメインの会話が行われますが、コード アプリケーションやその他のツール呼び出しなどの特定のアクションでは、GitHubでホストされるモデルがそれらのタスク用に最適化されている場合があります。 これらの組み込みモデルは、BYOK プロバイダーを介して実行されません。
    
  •         **安全プロセス**: どのプロバイダーがアクティブであるかに関係なく、結果が表示される前に、GitHubの安全システム (コンテンツ フィルタリングを含む) を通じて応答が引き続き渡されます。
    
  •         **品質に関する考慮事項**: 提案は、選択したプロバイダーの強みとトレーニング範囲によって異なる場合があります。
    
  •         **データ処理**: BYOK を使用する場合、プロンプトと応答は選択したプロバイダーに送信され、そのプロバイダーのデータ保持とプライバシー ポリシーの対象となる場合があります。 GitHub は、安全性フィルター処理のためにこのデータを一時的に処理しますが、セッション期間を超えて BYOK 会話コンテンツは保持されません。
    
  •         **お客様の責任**: お客様は以下の責任を負います。
    
    • プロバイダー API キーのセキュリティ
    • 使用コストまたはクォータ
    • 出力の検証
    • 選択したモデルが安全性と品質の要件を満たしているかどうかを評価する
    • 選択したプロバイダーの条件に準拠する
    • 選択したモデルが適用される法律に準拠しているかどうかを判断する
    • 人間が出力を使用して人に影響を与える意思決定を行う前に、必ずレビューするようにする。
  •         **エクスポートの制限**: 特定の AI モデルは、エクスポート制御の対象となる場合があります。 選択したプロバイダーとモデルが、管轄区域での使用が承認されていることを確認します。
    

BYOK を使用すると、GitHubの安全インフラストラクチャの恩恵を受けながら、ニーズに最適な言語モデルを選択できます。 モデルのパフォーマンスと安全性の特性はプロバイダーに依存します。

GitHub Copilot チャット のユース ケース

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

単体テスト ケースの生成

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

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

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

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

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

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

コード修正の提案

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

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

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

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

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

          `@github` チャット参加者を使用する場合、生成される応答には、Bingの検索結果やリポジトリ内のコードが追加で使用されることがあります。

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

GitHub Copilot チャット

のパフォーマンスの向上

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

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

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

Copilot チャット は置き換えではなくツールとして使う

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

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

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

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

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

GitHub Copilot チャット

の制限

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

制限付きのスコープ

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

潜在的なバイアス

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

セキュリティ リスク

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

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

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

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

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

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

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

不正確なコード

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

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

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

次のステップ

GitHub Copilot チャット の使い方について詳しくは、以下をご覧ください。

参考資料

GitHub Copilot チャット について

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

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

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

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

入力処理

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

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

言語モデルの分析

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

応答の生成

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

          `@github` チャット参加者を使用すると、Copilot チャット は、 GitHub に格納されているコードと、Bingからの検索結果 (管理者によって有効になっている場合) からコンテキストを収集できます。

出力の形式

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

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

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

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

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

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

GitHub Copilot

で自分のキーを持ち込んで使用する (Bring Your Own Key, BYOK)

GitHub Copilot チャット で Bring Your Own Key を使用すると、既定の Copilot モデルを超えて、サポートされているプロバイダーの大規模な言語モデルにチャット エクスペリエンスを接続できます。 サポートされているプロバイダーの例としては、Anthropic、AWS Bedrock、Google AI Studio、Microsoft Foundry、OpenAI、OpenAI 互換プロバイダー、xAI などがあります。 選択したプロバイダーの API キーは、Copilot 設定に直接追加します。

BYOK がアクティブな場合:

  •         **特徴範囲**: 選択したモデルはGitHub Copilot チャット 内で使用されます。 エージェント モードでは、BYOK によってメインの会話が行われますが、コード アプリケーションやその他のツール呼び出しなどの特定のアクションでは、GitHubでホストされるモデルがそれらのタスク用に最適化されている場合があります。 これらの組み込みモデルは、BYOK プロバイダーを介して実行されません。
    
  •         **安全プロセス**: どのプロバイダーがアクティブであるかに関係なく、結果が表示される前に、GitHubの安全システム (コンテンツ フィルタリングを含む) を通じて応答が引き続き渡されます。
    
  •         **品質に関する考慮事項**: 提案は、選択したプロバイダーの強みとトレーニング範囲によって異なる場合があります。
    
  •         **データ処理**: BYOK を使用する場合、プロンプトと応答は選択したプロバイダーに送信され、そのプロバイダーのデータ保持とプライバシー ポリシーの対象となる場合があります。 GitHub は、安全性フィルター処理のためにこのデータを一時的に処理しますが、セッション期間を超えて BYOK 会話コンテンツは保持されません。
    
  •         **お客様の責任**: お客様は以下の責任を負います。
    
    • プロバイダー API キーのセキュリティ
    • 使用コストまたはクォータ
    • 出力の検証
    • 選択したモデルが安全性と品質の要件を満たしているかどうかを評価する
    • 選択したプロバイダーの条件に準拠する
    • 選択したモデルが適用される法律に準拠しているかどうかを判断する
    • 人間が出力を使用して人に影響を与える意思決定を行う前に、必ずレビューするようにする。
  •         **エクスポートの制限**: 特定の AI モデルは、エクスポート制御の対象となる場合があります。 選択したプロバイダーとモデルが、管轄区域での使用が承認されていることを確認します。
    

BYOK を使用すると、GitHubの安全インフラストラクチャの恩恵を受けながら、ニーズに最適な言語モデルを選択できます。 モデルのパフォーマンスと安全性の特性はプロバイダーに依存します。

GitHub Copilot チャット のユース ケース

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

単体テスト ケースの生成

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

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

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

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

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

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

コード修正の提案

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

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

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

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

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

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

GitHub Copilot チャット

のパフォーマンスの向上

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

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

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

Copilot チャット は置き換えではなくツールとして使う

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

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

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

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

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

GitHub Copilot チャット

の制限

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

制限付きのスコープ

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

潜在的なバイアス

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

セキュリティ リスク

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

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

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

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

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

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

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

不正確なコード

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

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

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

次のステップ

GitHub Copilot チャット の使い方について詳しくは、以下をご覧ください。

参考資料

GitHub Copilot チャット について

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

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

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

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

入力処理

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

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

言語モデルの分析

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

応答の生成

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

出力の形式

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

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

GitHub Copilot

で自分のキーを持ち込んで使用する (Bring Your Own Key, BYOK)

GitHub Copilot チャット で Bring Your Own Key を使用すると、既定の Copilot モデルを超えて、サポートされているプロバイダーの大規模な言語モデルにチャット エクスペリエンスを接続できます。 サポートされているプロバイダーの例としては、Anthropic、AWS Bedrock、Google AI Studio、Microsoft Foundry、OpenAI、OpenAI 互換プロバイダー、xAI などがあります。 選択したプロバイダーの API キーは、Copilot 設定に直接追加します。

BYOK がアクティブな場合:

  •         **特徴範囲**: 選択したモデルはGitHub Copilot チャット 内で使用されます。 エージェント モードでは、BYOK によってメインの会話が行われますが、コード アプリケーションやその他のツール呼び出しなどの特定のアクションでは、GitHubでホストされるモデルがそれらのタスク用に最適化されている場合があります。 これらの組み込みモデルは、BYOK プロバイダーを介して実行されません。
    
  •         **安全プロセス**: どのプロバイダーがアクティブであるかに関係なく、結果が表示される前に、GitHubの安全システム (コンテンツ フィルタリングを含む) を通じて応答が引き続き渡されます。
    
  •         **品質に関する考慮事項**: 提案は、選択したプロバイダーの強みとトレーニング範囲によって異なる場合があります。
    
  •         **データ処理**: BYOK を使用する場合、プロンプトと応答は選択したプロバイダーに送信され、そのプロバイダーのデータ保持とプライバシー ポリシーの対象となる場合があります。 GitHub は、安全性フィルター処理のためにこのデータを一時的に処理しますが、セッション期間を超えて BYOK 会話コンテンツは保持されません。
    
  •         **お客様の責任**: お客様は以下の責任を負います。
    
    • プロバイダー API キーのセキュリティ
    • 使用コストまたはクォータ
    • 出力の検証
    • 選択したモデルが安全性と品質の要件を満たしているかどうかを評価する
    • 選択したプロバイダーの条件に準拠する
    • 選択したモデルが適用される法律に準拠しているかどうかを判断する
    • 人間が出力を使用して人に影響を与える意思決定を行う前に、必ずレビューするようにする。
  •         **エクスポートの制限**: 特定の AI モデルは、エクスポート制御の対象となる場合があります。 選択したプロバイダーとモデルが、管轄区域での使用が承認されていることを確認します。
    

BYOK を使用すると、GitHubの安全インフラストラクチャの恩恵を受けながら、ニーズに最適な言語モデルを選択できます。 モデルのパフォーマンスと安全性の特性はプロバイダーに依存します。

GitHub Copilot チャット のユース ケース

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

単体テスト ケースの生成

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

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

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

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

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

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

コード修正の提案

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

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

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

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

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

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

GitHub Copilot チャット

のパフォーマンスの向上

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

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

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

Copilot チャット は置き換えではなくツールとして使う

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

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

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

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

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

GitHub Copilot チャット

の制限

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

制限付きのスコープ

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

潜在的なバイアス

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

セキュリティ リスク

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

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

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

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

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

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

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

不正確なコード

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

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

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

次のステップ

GitHub Copilot チャット の使い方について詳しくは、以下をご覧ください。

参考資料

GitHub Copilot チャット について

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

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

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

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

入力処理

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

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

言語モデルの分析

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

応答の生成

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

出力の形式

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

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

GitHub Copilot

で自分のキーを持ち込んで使用する (Bring Your Own Key, BYOK)

GitHub Copilot チャット で Bring Your Own Key を使用すると、既定の Copilot モデルを超えて、サポートされているプロバイダーの大規模な言語モデルにチャット エクスペリエンスを接続できます。 サポートされているプロバイダーの例としては、Anthropic、AWS Bedrock、Google AI Studio、Microsoft Foundry、OpenAI、OpenAI 互換プロバイダー、xAI などがあります。 選択したプロバイダーの API キーは、Copilot 設定に直接追加します。

BYOK がアクティブな場合:

  •         **特徴範囲**: 選択したモデルはGitHub Copilot チャット 内で使用されます。 エージェント モードでは、BYOK によってメインの会話が行われますが、コード アプリケーションやその他のツール呼び出しなどの特定のアクションでは、GitHubでホストされるモデルがそれらのタスク用に最適化されている場合があります。 これらの組み込みモデルは、BYOK プロバイダーを介して実行されません。
    
  •         **安全プロセス**: どのプロバイダーがアクティブであるかに関係なく、結果が表示される前に、GitHubの安全システム (コンテンツ フィルタリングを含む) を通じて応答が引き続き渡されます。
    
  •         **品質に関する考慮事項**: 提案は、選択したプロバイダーの強みとトレーニング範囲によって異なる場合があります。
    
  •         **データ処理**: BYOK を使用する場合、プロンプトと応答は選択したプロバイダーに送信され、そのプロバイダーのデータ保持とプライバシー ポリシーの対象となる場合があります。 GitHub は、安全性フィルター処理のためにこのデータを一時的に処理しますが、セッション期間を超えて BYOK 会話コンテンツは保持されません。
    
  •         **お客様の責任**: お客様は以下の責任を負います。
    
    • プロバイダー API キーのセキュリティ
    • 使用コストまたはクォータ
    • 出力の検証
    • 選択したモデルが安全性と品質の要件を満たしているかどうかを評価する
    • 選択したプロバイダーの条件に準拠する
    • 選択したモデルが適用される法律に準拠しているかどうかを判断する
    • 人間が出力を使用して人に影響を与える意思決定を行う前に、必ずレビューするようにする。
  •         **エクスポートの制限**: 特定の AI モデルは、エクスポート制御の対象となる場合があります。 選択したプロバイダーとモデルが、管轄区域での使用が承認されていることを確認します。
    

BYOK を使用すると、GitHubの安全インフラストラクチャの恩恵を受けながら、ニーズに最適な言語モデルを選択できます。 モデルのパフォーマンスと安全性の特性はプロバイダーに依存します。

GitHub Copilot チャット のユース ケース

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

単体テスト ケースの生成

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

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

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

Copilot チャット は、コードの機能と目的に関する自然言語の説明を生成して、ファイル内のコードを説明するのに役立ちます。 これは、コードの動作を理解したい場合や、コードのしくみを理解する必要がある技術以外の利害関係者にとって便利です。 たとえば、現在表示されているファイル内の名前付き関数について説明するように Copilot に依頼すると、Copilot チャット により、コードの動作に関する自然言語による説明が生成されます。 たとえば、関数の入力および出力パラメーター、その依存関係などの情報が含まれます。

Copilot チャット を使って、エラーやエッジ ケースの処理の改善や、コードをより読みやすくするための論理フローの変更など、コードの改善点について提案を受けることもできます。

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

コード修正の提案

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

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

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

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

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

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

GitHub Copilot チャット

のパフォーマンスの向上

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

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

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

Copilot チャット は置き換えではなくツールとして使う

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

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

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

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

GitHub Copilot チャット

の制限

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

制限付きのスコープ

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

潜在的なバイアス

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

セキュリティ リスク

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

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

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

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

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

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

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

不正確なコード

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

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

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

次のステップ

GitHub Copilot チャット の使い方について詳しくは、以下をご覧ください。

参考資料