[go: up one dir, main page]

Skip to main content

GitHub Copilot CLI の責任ある使用

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

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

GitHub Copilot CLI は、GitHub Copilot Pro、GitHub Copilot Pro+、GitHub Copilot Business、GitHub Copilot Enterprise プランで使用できます。

Copilot を organization から受け取る場合は、organization の設定で Copilot CLI ポリシーを有効にする必要があります。

GitHub Copilot CLI について

GitHub Copilot CLI がターミナルで提供するチャットに似たインターフェイスは、コンピューター上のファイルを自律的に作成および変更し、コマンドを実行できます。 アクティブなディレクトリ内のファイルに対して任意の操作を実行するよう、Copilot に指示できます。

GitHub Copilot CLI を使うと、バグ修正、新機能の段階的な実装、プロトタイプ作成、ドキュメント作成、コードベースのメンテナンスのようなタスクなど、説明と構成に基づいてカスタマイズされた変更を生成できます。

タスクの作業中、Copilot エージェントはユーザーのローカル ターミナル環境にアクセスでき、そこでコードの変更、自動テストの実行、リンターの実行、ユーザーの環境で使用可能なコマンドの実行を行うことができます。

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

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

入力処理

ユーザーからの入力プロンプトが他の関連するコンテキスト情報と組み合わされて、プロンプトが形成されます。 そのプロンプトは、処理のために大規模言語モデルに送信されます。 入力には、わかりやすい自然言語、コード スニペット、またはターミナル内のファイルへの参照を使用できます。

言語モデルの分析

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

応答の生成

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

出力の形式

エージェントによって生成された応答は、書式設定されてユーザーに示されます。 GitHub Copilot CLI は、構文の強調表示、インデント、その他の書式設定機能を使って、生成される応答をいっそうわかりやすくします。

エージェントは、タスクを完了するために、ローカル環境でコマンドを実行し、ユーザーのファイル システム内のファイルを作成、編集、または削除することが必要な場合もあります。

ユーザーは、エージェントが対話型チャット ウィンドウで応答を返した後、それにフィードバックを提供できます。 そうすると、そのフィードバックはエージェントから言語モデルに再送信され、さらに分析されます。 エージェントは、フィードバックに基づく変更を完了すると、追加の応答を返します。

Copilot は、タスク解決に最も適切なソリューションを提供することを目的としています。 ただし、お探しの回答が必ず提供されるとは限りません。 ユーザーは Copilot によって生成された回答をレビューして検証し、正確かつ適切であることを確認する必要があります。 詳しくは、この記事で後述する「GitHub Copilot CLI の結果の改善」セクションをご覧ください。

GitHub Copilot CLI のユース ケース

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

  • コードベースのメンテナンス: セキュリティ関連の修正、依存関係のアップグレード、対象を絞ったリファクタリングへの取り組み。
  • ドキュメント: ドキュメントの更新と新規作成。
  • 機能開発: 機能要求の段階的な実装。
  • テスト カバレッジの向上: 品質管理のための追加テスト スイートの開発。
  • 新しいプロジェクトのプロトタイプ作成: 新しい概念のグリーンフィールド開発。
  • 環境のセットアップ: 既存のプロジェクトで動作するようにローカル環境を設定するための、ターミナルでのコマンドの実行
  • タスクを実行するための適切なコマンドを見つける: Copilot は、達成しようとしているタスクを実行するためのコマンドについての提案を提供できます。
  • よく知らないコマンドについて説明する: Copilot は、コマンドの機能と目的について自然言語の説明を提供できます。

GitHub Copilot CLI の結果の改善

GitHub Copilot CLI は幅広いタスクをサポートできます。 受け取る応答を向上させ、エージェントの制限の一部に対処するために、ユーザーができることがいろいろあります。

制限について詳しくは、この記事で後述する「GitHub Copilot CLI の制限」セクションをご覧ください。

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

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

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

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

GitHub Copilot CLI は、変更の提案を生成するときのコンテキストとして、ユーザーのプロンプト、コメント、リポジトリのコードを利用します。 Copilot のパフォーマンスを向上させるには、カスタム Copilot 指示を実装して、エージェントがユーザーのプロジェクトと、変更をビルド、テスト、検証する方法を、よりよく理解できるようにすることを検討します。 詳しくは、「タスクの作業での GitHub Copilot の使用に関するベスト プラクティス」の「リポジトリへのカスタム指示の追加」をご覧ください。

GitHub Copilot CLI は置き換えではなくツールとして使う

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

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

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

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

GitHub Copilot CLI で問題や制限が発生した場合は、/feedback コマンドを使ってフィードバックを提供することをお勧めします。

GitHub Copilot CLI のセキュリティ対策

Copilot のアクセス許可の制約

既定では、Copilot は、GitHub Copilot CLI が呼び出されたディレクトリ内とその下にあるファイルとフォルダーにのみアクセスできます。 このディレクトリ内のファイルを信頼するようにします。 Copilot は、現在のディレクトリの外部にあるファイルにアクセスする必要がある場合は、アクセス許可を要求します。 そのディレクトリの内容を信頼できる場合にのみ、アクセス許可を付与します。

Copilot は、ファイルを変更する前にアクセス許可を要求します。 アクセス許可を付与する前に、正しいファイルが変更されていることを確認してください。

Copilot は、危険かもしれないコマンドを実行する前にも、アクセス許可を要求します。 実行のアクセス許可を付与する前に、これらのコマンドを慎重に確認してください。

GitHub Copilot CLI の使用時のセキュリティ習慣について詳しくは、「GitHub Copilot CLI について」の「セキュリティに関する考慮事項」をご覧ください。

GitHub Copilot CLI の制限

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

制限付きのスコープ

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

潜在的なバイアス

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

セキュリティ リスク

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

不正確なコード

GitHub Copilot CLI が生成するコードは、有効であるように見えても、実際には意味的または構文的に正しくない場合や、開発者の意図を正確に反映していない場合があります。

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

パブリック コード

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

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

コマンド実行におけるリスク管理とユーザーアカウンタビリティ

GitHub Copilot CLI にコマンドの実行を指示または許可するときは、特に一部の提案されたコマンドの破壊的な可能性に関して、いっそう注意する必要があります。 ファイルの削除またはハード ドライブのフォーマットに関するコマンドが発生する可能性があり、誤って使用した場合、問題が発生する可能性があります。 特定のシナリオではこのようなコマンドが必要になる一方、これらのコマンドを受け入れて実行するときは注意が必要です。

また、最終的には、ユーザーが GitHub Copilot CLI によって実行されたコマンドの責任を負います。 GitHub Copilot CLI によって生成されたコマンドを使用するかどうかは、完全にユーザーの判断です。 フェイルセーフ装置と安全メカニズムが存在するにもかかわらず、コマンドの実行には内在するリスクがあることを理解する必要があります。 GitHub Copilot CLI は強力なツール セットを提供しますが、その推奨事項に慎重に取り組み、コマンドが意図と要件と合致していることを確認する必要があります。

参考資料