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