Skip to main content

GitHub.com でのGitHub Copilotコーディング エージェントの責任ある使用

Copilotコーディングエージェント の目的、機能、制限を理解して、GitHub.com 上で責任を持って使う方法について説明します。

GitHub.com

での Copilotコーディングエージェント について

Copilotコーディングエージェント は、GitHub に統合された自律的で非同期のソフトウェア開発エージェントです。 エージェントは、issue または Copilot チャット からタスクを取得し、pull request を作成して、コメントに応じて pull request を反復処理することができます。

Copilotコーディングエージェント を使って、バグ修正、新機能の段階的な実装、プロトタイプ作成、ドキュメント作成、コードベースのメンテナンスなどのタスクを含め、説明と構成に基づいてカスタマイズされた変更を生成できます。 最初の pull request を作成した後は、エージェントを使ってユーザーのフィードバックとレビューに基づいて反復処理を行うことができます。

タスクの作業中、エージェントは一時的な開発環境にアクセスできます。ここで、コードを変更し、自動テストやリンターを実行できます。

エージェントはさまざまなプログラミング言語で評価されており、主に英語がサポートされています。

エージェントを使って、自然言語処理と機械学習を組み合わせてタスクを理解し、コードベースに変更を加えてタスクを完了することができます。 このプロセスは、いくつかの手順に分けることができます。

プロンプトの処理

Issue、pull request コメント、または Copilot チャット メッセージを通じて Copilot に提供されたタスクは、他の関連する情報と合わせてプロンプトとしてまとめられます。 そのプロンプトは、処理のために大規模言語モデルに送信されます。 入力には、プレーンな自然言語、コード スニペット、または画像の形式を使用できます。

言語モデルの分析

次に、プロンプトは、大量のデータでトレーニングされたニューラル ネットワークである大規模言語モデルに渡されます。 言語モデルによって入力プロンプトが分析され、エージェントでタスクについて推論し、必要なツールを利用できるようになります。

応答の生成

言語モデルにより、プロンプトの分析に基づいて応答が生成されます。 この応答は、自然言語の提案とコードの提案の形式を取ることができます。

出力の形式

エージェントによる最初の実行を完了すると、変更内容に応じて pull request の説明が更新されます。 エージェントにより、アクセスできなかったリソースに関する補足情報が追加されたり、解決する手順について提案されたりする場合があります。

エージェントにフィードバックを提供するには、pull request 内でコメントするか、エージェント (@copilot) に明示的にメンションします。 そうすると、そのフィードバックはエージェントから言語モデルに再送信され、さらに分析されます。 エージェントによるフィードバックに基づいた変更が完了すると、コメントに更新内容が反映されて回答されます。

Copilotは、タスク解決に最も関連するソリューションを提供することを目的としています。 ただし、お探しの回答が必ず提供されるとは限りません。 ユーザーは Copilot によって生成された回答をレビューして検証し、正確かつ適切であることを確認する必要があります。

さらに、GitHub では、製品開発プロセスの一環として、エージェントの安全性を理解し、改善するためにレッド チーミング (テスト) を実施しています。

パフォーマンスを向上させる方法については、以下の「Copilotコーディングエージェント のパフォーマンスの向上」を参照してください。

Copilotコーディングエージェント の活用事例

さまざまなシナリオで、次のようなタスクを Copilot に委任できます。

  •         **コードベースのメンテナンス:** セキュリティ関連の修正、依存関係のアップグレード、対象を絞ったリファクタリングへの取り組み。
    
  •         **ドキュメント:** ドキュメントの更新と新規作成。
    
  •         **機能開発:** 機能リクエストの段階的な実装。
    
  •         **テスト範囲の改善:** 品質管理用の追加のテスト スイートの開発。
    
  •         **新しいプロジェクトのプロトタイプ作成:** 新しい概念のグリーンフィールド開発。
    

Copilotコーディングエージェント の性能を向上させること

Copilotコーディングエージェント は幅広いタスクをサポートできます。 エージェントのパフォーマンスを高め、その制限に対処するために、さまざまな対策を講じることができます。

制限の詳細については、「Copilotコーディングエージェント の制限」(後述) を参照してください。

タスクのスコープを適切に設定する

Copilotコーディングエージェント で pull request を生成する際には、主要なコンテキストとしてプロンプトが利用されます。 エージェントに割り当てるプロンプトが明確であり、スコープが適切であるほど、より良い結果が得られます。 理想的な issue には次の要素が含まれています。

  • 解決すべき問題または必要な作業の明確な説明。
  • 適切なソリューションのイメージに関する完全な受け入れ基準 (単体テストが必要かなど)。
  • 変更する必要があるファイルに関するヒントまたはポインター。

コンテキストを追加してエクスペリエンスをカスタマイズする

提案された変更の生成時に、Copilotコーディングエージェント ではプロンプト、コメント、リポジトリのコードがコンテキストとして利用されます。 Copilotのパフォーマンスを向上させるには、エージェントがプロジェクトを理解し、その変更をビルド、テスト、検証する方法を理解するのに役立つカスタム Copilot命令を実装することを検討してください。 詳しくは、「GitHub Copilot を使用してタスクに取り組むためのベスト プラクティス」の「リポジトリへのカスタム指示の追加」をご覧ください。

Copilotコーディングエージェント のその他のカスタマイズについては、以下を参照してください。

  •         [AUTOTITLE](/copilot/customizing-copilot/customizing-the-development-environment-for-copilot-coding-agent)
    
  •         [AUTOTITLE](/copilot/customizing-copilot/customizing-or-disabling-the-firewall-for-copilot-coding-agent)
    
  •         [AUTOTITLE](/copilot/using-github-copilot/coding-agent/extending-copilot-coding-agent-with-mcp)
    

Copilotコーディングエージェント は置き換えではなくツールとして使う

Copilotコーディングエージェント はコードとドキュメントを生成するための強力なツールですが、人間によるプログラミングの置き換えではなく、ツールとして使うことが重要です。 マージする前に、エージェントによって生成されたコンテンツを必ずレビューしてテストし、要件を満たしていること、エラーやセキュリティ上の懸念がないことを確認する必要があります。

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

Copilotコーディングエージェント を使うと、構文としては正しいコードを生成できますが、必ずしも安全であるとは限りません。 エージェントの制限に対処するには、ハードコーディングされたパスワードや SQL インジェクションの脆弱性を避け、コード レビューのベスト プラクティスに従うなど、安全なコーディングのベスト プラクティスに常に従う必要があります。 独自に作成していないマテリアルを使用するコードと同じ予防措置を、その適合性を確保するための予防措置を含め、常に講じる必要があります。 これには、厳密なテスト、IP スキャン、セキュリティの脆弱性の確認などが含まれます。

フィードバックを提供する

GitHub.com上のCopilotコーディングエージェントで問題や制限に遭遇した場合は、各エージェントの回答の下にある低評価アイコンをクリックしてフィードバックを提供することをお勧めします。 これは、開発者がツールを改善し、懸念事項や制限事項に対処するのに役立ちます。 さらに、コミュニティ ディスカッション フォーラムでフィードバックを提供することもできます。

最新情報を入手する

Copilotコーディングエージェント は新しいテクノロジであり、時間の経過と共に進化する可能性があります。 新たに発生する可能性があるセキュリティ リスクやベスト プラクティスについては、常に最新の情報を入手する必要があります。

Copilotコーディングエージェント のセキュリティ対策

設計上、Copilotコーディングエージェント は、データとコードベースのセキュリティを確保するためにいくつかの軽減策を組み込んで構築されています。 軽減策は存在しますが、エージェントの制限とそれがコードに与える影響を理解しながら、セキュリティのベスト プラクティスを継続的に実装してください。

特権エスカレーションの回避

Copilotコーディングエージェント は、リポジトリ書き込みアクセス権限を持つユーザーからの操作 (エージェントの割り当てやコメントなど) に対してのみ回答します。

Copilotコーディングエージェント によって発行された pull request に応じてトリガーされる GitHub Actions ワークフローの場合、実行前にリポジトリ書き込みアクセス権限を持つユーザーからの承認が必要です。

エージェントは、GitHub.com に表示されない非表示文字をフィルター処理します。これにより、ユーザーがコメントや issue 本文に有害な指示を隠すことができなくなります。 これにより、脱獄などのリスクから保護されます。

Copilotのアクセス許可の制約

Copilotは、プル要求を作成しているリポジトリにのみアクセスでき、他のリポジトリにはアクセスできません。

アクセス許可は制限されており、コードのプッシュと他のリソースの読み取りのみを実行できます。 組み込みの保護により、Copilotはcopilot/で始まる名前のブランチにのみプッシュできるようになっています。 つまり、Copilotは既定のブランチ (たとえば、main) にプッシュできません。

実行時に Copilotコーディングエージェント から Actions organization またはリポジトリのシークレットまたは変数にアクセスすることはできません。 copilot 環境に特別に追加されたシークレットと変数のみがエージェントに渡されます。

データ流出の防止

Copilotコーディングエージェント の既定ではファイアウォールが有効になっており、誤って、またはユーザーによる入力に悪意がある場合のコードやその他の機密データの流出を防ぐことができます。

詳しくは、「GitHub Copilot コーディング エージェントのファイアウォールのカスタマイズまたは無効化」をご覧ください。

生成されたコードのセキュリティ脆弱性の防止

コード生成プロセス中、Copilotコーディングエージェント は、新しく生成されたコードのセキュリティ脆弱性を自動的に分析し、それらを解決して、検出された問題が発生しないようにします。 分析は、次のツールとプロセスを使用して実行されます。

  •         **CodeQL**: 潜在的な脆弱性とエラーを特定するために実行されます。
    
  •         **Secret scanning**: 既知の種類のシークレットをスキャンして、応答でシークレットが取り込まれないようにします。
    
  •         **依存関係分析**: 新しいコードによって参照される依存関係は、GitHub Advisory Database の既知の脆弱性についてチェックされます。
    

Copilotコーディングエージェント の制限

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

制限付きのスコープ

Copilotコーディングエージェント で使われている言語モデルは、大量のコードでトレーニングされていますが、まだスコープが限定されており、特定のコード構造や難解なプログラミング言語を処理できない可能性があります。 各言語で、受け取る提案の品質は、その言語のトレーニング データの量と多様性によって異なります。

潜在的なバイアス

Copilotコーディングエージェント のトレーニング データで使われている言語モデルと、大規模言語モデルによって収集されたコンテキストには、偏りやエラーが含まれており、それがツールによって永続化される可能性があります。 さらに、Copilotコーディングエージェント は特定のプログラミング言語やコーディングのスタイルに偏っていることがあり、結果として、最適ではない提案や不完全な提案につながる場合があります。

セキュリティ リスク

Copilotコーディングエージェント を使って、リポジトリ内の issue またはコメントのコンテキストに基づいてコードと自然言語を生成できますが、慎重に使わないと、機密情報や脆弱性が公開される可能性があります。 マージする前に、エージェントによって生成されたすべての出力を慎重にレビューする必要があります。

不正確なコード

有効であるように見えても、実際には意味的または構文的に正しくない、または開発者の意図を正確に反映していないコードが Copilotコーディングエージェント から生成される場合があります。

不正確なコードのリスクを軽減するには、重要または機密性の高いアプリケーションを処理する場合は特に、生成されたコードを慎重に確認してテストする必要があります。 また、生成されたコードがベスト プラクティスと設計パターンに準拠し、コードベースの全体的なアーキテクチャとスタイル内に収まるように確認する必要もあります。

パブリック コード

Copilotコーディングエージェント は、[Suggestions matching public code] ポリシーが [Block] に設定されている場合でも、一般公開されているコードと一致またはほぼ一致するコードを生成する可能性があります。 「個々のサブスクライバーとしての GitHub Copilot ポリシーの管理」を参照してください。

この場合、Copilot は、エージェント セッション ログ内の一致した箇所を、一致したコードの詳細を表示するリンクを付けて表示します。 詳しくは、「GitHub Copilot のセッションを追跡する」をご覧ください。

ユーザーは、AI サービスやソリューションを使用する際に、該当する法律や規制上の義務を評価する必要がありますが、すべての業界やシナリオに適しているとは限りません。 さらに、AI サービスまたはソリューションは、該当するサービス利用規約と関連する行動規範で禁止されている方法のために設計されておらず、そのような方法で使うこともできません。

Copilot コーディング エージェントとの外部統合

Copilotコーディングエージェント は、Microsoft Teams、Linear、Slack、Jira などの外部アプリケーションから情報とコンテキストを受信できます。 これらのプラットフォームで外部アプリケーションに言及したり、接続されたワークフローを介してタスクをコーディング エージェントに割り当てたりすると、関連するコンテキスト (メンションされたスレッドの会話履歴や、問題の詳細やアクティビティのタイムラインなど) にアクセスできます。 これにより、コーディング エージェントは開発ニーズをより深く理解し、より関連性の高い支援を提供できます。 これらの統合により、チームはツールを切り替えることなく、コードで共同作業を行い、タスクを割り当て、既存のワークフロー内で直接進行状況を追跡できます。 チームが共有されている情報を理解し、組織のプライバシーとデータ処理ポリシーに従って統合を構成します。

Copilotコーディングエージェント との外部統合の詳細については、以下を参照してください。 * Copilot コーディング エージェントと Teams の統合 * Copilot コーディング エージェントと Linear の統合 * Slack と Copilot コーディング エージェントを統合する