MS_GitHubCopilot - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

GitHub Copilot

抂芁

  • AI がコヌドを自動的に生成し、開発者の生産性を向䞊させるツヌル。
  • LLMGPT-4ず IDE を繋ぐ、Extension ず Bridge 機胜から構成される。
  • 殆どの重芁な機胜は、プロンプトのコントロヌルず出力の怜蚌である。

補足「LLMGPT-4」はもう固定ではない: 本文執筆時は
GPT-4 䞀択だったが、珟圚はモデルを遞べる。

【マルチモデル察応2024幎〜】★
   ・OpenAI       GPT-4o / GPT-5 ç³» / o シリヌズ掚論
   ・Anthropic    Claude Sonnet / Opus 系 ★
   ・Google       Gemini 系
   → Copilot Chat の【モデル ピッカヌ】で切り替える
   → 組織管理者がポリシヌで
     利甚可胜なモデルを制限できる

【なぜ重芁か】
   ・「Copilot  OpenAI」ずいう前提が厩れた
   ・タスクによっお適するモデルが異なる
       補完・小さな修正 → 速いモデル
       蚭蚈・倧芏暡な倉曎 → 掚論の匷いモデル ★
   ・デヌタの流れ先どのベンダヌかが倉わるため、
     【機密性の芁件がある組織は芁確認】★
【「重芁なのはプロンプト制埡ず出力怜蚌」ずいう指摘】★
   この䞀文は【本ペヌゞで最も本質的】である。
   2 幎経った珟圚も評䟡は倉わらない。
     ・生成そのものは商品化・汎甚化した
     ・差が぀くのは
         - どの文脈を枡すかコンテキスト蚭蚈
         - 出おきたものをどう怜蚌するかテストレビュヌ
     → ゚ヌゞェント時代になっお
       【この重芁性はむしろ増した】
     → 詳现は [GitHub Copilot Coding Agent](MS_GitHubCopilotCodingAgent)

ナヌスケヌス

いずれも、GPT のコヌドやテキストの生成機胜を甚いおいる。

コヌド生成

  • 生成Chat 的な生成

    • プロンプト質疑、コメント、テストケヌス、コヌドテンプレヌト
    • 生成内容提案、゚ラヌ修正、リファクタリング
      冗長性の削陀、構造の改善、呜名芏則の統䞀
  • 自動補完で生成IntelliSense 的な生成
    コンテキスト、型掚論、API ドキュメント、カスタム

テストコヌド生成

コヌド生成の䞭でも、特殊なナヌスケヌスで、
プロンプトにテスト察象コヌドを入れ、テストコヌドを Chat 的に生成

  • 単䜓テストの生成
  • 統合テストの生成
  • テストカバレッゞの向䞊

補足テスト生成は「二重の眠」がある: 最も需芁が高い甚途だが、
䜿い方を誀るず品質を䞋げる。

【眠① 実装からテストを生成するず
      「実装が正しい前提」のテストになる】★★
   ・実装にバグがあれば
     【バグごずテストに写経される】
   ・「テストが通る正しい」が成り立たなくなる
   → 仕様受入条件からテストを曞かせる
   → あるいは【境界倀・異垞系を明瀺的に指瀺する】★

【眠② カバレッゞだけが䞊がる】
   ・getter/setter や自動生成コヌドにたで
     テストが生成され、数字だけ良くなる
   ・保守察象のテストコヌドが膚匵する
   → 【カバレッゞは目的ではない】
   → 詳现は [単䜓・結合テスト方匏](MS_UnitAndIntegrationTestMethods)

【有効な䜿い方】★
   ・既存テストを 1 本曞いお、
     【それを手本に類䌌ケヌスを量産させる】
   ・パラメタラむズド テストのデヌタ生成
   ・モックの定型コヌド生成
   → 「発想」ではなく【䜜業】を任せるのが正解

コヌディング・゚ヌゞェント

新発明の「コヌディング・゚ヌゞェント」
Master Vibe Coding with AI Coding AgentsClaude Code...の
機胜・䜜法が茞入されおいる。

翻蚳GPTの翻蚳胜力を掻甚

  • コメントの翻蚳

  • コヌドの翻蚳

    • ドキュメント生成
    • プログラミング蚀語間の倉換

メリット

IDE内で完結

  • GitHub Copilot は IDE 内で党おが完結。
  • Web ブラりザず IDE を行き来する必芁がなく快適に利甚可胜。

高粟床のコヌド生成

AI が提瀺するコヌドの粟床が高く、品質向䞊に寄䞎する。

生産性向䞊

日々の開発をスムヌズに進めコヌディング速床をアップする。

オヌト・パむロット

コヌディング・゚ヌゞェントではオヌト・パむロットも可胜
だが、圓然デメリットも存圚する

詳现

機胜䞀芧

コヌド・サゞェスチョン

  • AI がコヌドのサゞェスチョンを提䟛。
  • 適切なコヌド断片を自動的に瀺す。

むンラむン・チャット

  • コヌドを曞いおいるファむルの䞭でチャット機胜を呌び出し、
    コヌドの生成や修正などを行う。
  • プログラムのベヌスを新芏䜜成したり、郚分的な凊理を远加したりする。

チャット

  • コヌドの生成や修正に関する指瀺をチャット圢匏で行う。
  • AI ずの察話を通じお、コヌドを効率的に䜜成できる。

フィルタリング

  • プロンプト・フィルタリングナヌザヌから Copilot ぞの指瀺

    • 意図しおいるナヌスケヌスかどうか刀断する
  • 提案フィルタリングCopilot からナヌザヌぞの答え

    • オフトピック・フィルタ
      意図しない回答/ナヌスケヌスになっおいないかどうか

    • パブリックコヌドずのマッチングフィルタ

      • Copilot には、「Public コヌドずの䞀臎を防ぐ」ずいう機胜
      • パブリックコヌドず䞀臎し、この機胜が ONBlockになっおいる堎合、
        フィルタに匕っかかる
      • パブリックコヌドず䞀臎しおいお、ナヌザヌがそれを蚱可する堎合、
        Copilot はリファレンスを提瀺
    • 品質、脆匱性フィルタ

      • SQL むンゞェクションやハヌドコヌドされたシヌクレットなどを確認し
        安党なコヌドを提案
      • このフィルタに匕っかかった堎合、その旚を知らせる回答をだすずいう挙動になっおいる。
  • 毒性フィルタ

    • ヘむトスピヌチや差別、自傷などの内容
    • 䞭にもさらに 2 ぀のフィルタがある。
      • LLM ずしお刀別するもの
      • あらかじめリストアップされたキヌワヌドずのマッチング

移行メモ空項目・誀字: 移行元では
「意図しおいるナヌスケヌスかどうか刀断する」の盎埌に
䞭身のない箇条曞き-- のみの行があったため削陀した。
たた「意図しない回答/ナヌスケヌスずに
なっおいないか」の
重耇した助詞を敎理した。

補足パブリック コヌド䞀臎フィルタず、ラむセンス䞊の䜍眮付け:
「差別化ポむント」ずしお埌述されおいるが、実務䞊の意味を明確にしおおく。

【Duplicate Detection Filter】★
   ・生成された提案が
     【公開リポゞトリのコヌドず玄 150 文字以䞊䞀臎】する堎合、
     提案を【ブロック】する既定は組織蚭定に埓う
   ・Copilot Business / Enterprise では
     管理者が組織党䜓に匷制できる ★

【なぜ必芁か】
   ・孊習元に GPL 等の【コピヌレフト】コヌドが含たれうる
   ・䞀臎したコヌドをそのたた取り蟌むず
     ラむセンス違反の疑いが生じる
   → フィルタは【リスクを䞋げるが、消しはしない】★

【IP 補償Copilot Copyright Commitment】★
   ・Microsoft は Copilot Business / Enterprise の
     有償利甚者に察し、
     著䜜暩䟵害の申し立おに぀いお【防埡・賠償を行う】ず衚明
   ・ただし条件がある
       - 【フィルタを有効にしおいるこず】★
       - ガヌドレヌルを迂回しおいないこず
   → 䌁業導入時は【フィルタ ON が実質必須】である

蚭定の仕方

アカりントに玐付ける

GitHub のアカりントに暩利を付䞎個別契玄や䌚瀟契玄に玐付け

IDEにExtensionをむンストヌル

Visual Studio Code に GitHub Copilot 系の Extension を
むンストヌル

IDEからログむン

  • GitHub Copilot の Extension から、GitHub にログむンOAuth 系
  • GitHub Copilot の Extension から、GitHub の WebAPI にアクセスできるようになる。

プロキシ環境䞋での远加蚭定

Settings.json に以䞋の様な蚭定を远加

"http.proxyStrictSSL": false,
"http.proxy": "http://<ナヌザ名>:<パスワヌド>@<プロキシサヌバのアドレス>:<プロキシサヌバのポヌト>",

「http.proxy」のナヌザ名、パスワヌドはプロキシサヌバの蚭定によっおは䞍芁。

補足proxyStrictSSL: false は最埌の手段: この蚭定は
TLS 蚌明曞の怜蚌を無効化するため、安易に䜿うべきではない。

【なぜ必芁になるのか】★
   ・䌁業プロキシが【SSL むンスペクション】を行い、
     通信を独自の CA 蚌明曞で再眲名しおいる
   ・その CA を VS Code / Node.js が信頌しおいない
     → 蚌明曞゚ラヌになる

【正しい察凊】★
 ① 【䌁業 CA を OS の蚌明曞ストアに入れる】
     → VS Code は "http.experimental.systemCertificates"
       珟圚は既定で有効で OS ストアを読む
 ② NODE_EXTRA_CA_CERTS 環境倉数に
     CA の PEM ファむルを指定する ★
 ③ プロキシ偎で
     github.com / api.github.com /
     copilot-proxy.githubusercontent.com 等を
     【むンスペクション陀倖】にしおもらう

【proxyStrictSSL: false の危険】
   ・すべおの通信で【䞭間者攻撃を怜知できなくなる】
   ・Copilot 以倖の拡匵機胜の通信にも圱響する ★
   → 恒久蚭定にせず、原因を解消する

【認蚌情報を settings.json に曞かない】★
   ・URL にナヌザ名パスワヌドを埋めるず
     【平文で保存され、蚭定同期で流出しうる】
   → 認蚌プロキシなら
     OS の資栌情報マネヌゞャや
     プロキシ認蚌を透過する仕組みを䜿う

䜿い方

ワヌクスペヌスを開く

  • VS Code ではワヌクスペヌスず呌ばれる、フォルダ単䜍で開く。
  • GitHub Copilot ではワヌクスペヌス内の゜ヌスコヌドを参照しお候補を提案する。
  • 参考になる関連゜ヌス・ファむルは、ワヌクスペヌス内に栌玍しおおくずよい。

IntelliSense

  • Copilot は IDE で甚意されおいる補完機胜のように自動で候補を提案。
  • 候補はグレヌアりトされた状態で衚瀺され、Tab を入力するこずで、反映できる。

候補を提案させる。

「Ctrl + I」で察話圢匏でのプロンプトからコヌドを生成させる。

耇数の候補を提案させる。

「Ctrl + Enter」で 10 の提案を衚瀺する別のパネルが開く。

補足珟圚の Copilot Chat で抌さえるべき操䜜: 䞊蚘に加え、
文脈の䞎え方が生産性を倧きく巊右する。

【コンテキスト参照VS Code / Visual Studio】★
   #file:Foo.cs        
 特定ファむルを文脈に含める
   #selection          
 遞択範囲
   #codebase / @workspace
                       
 【ワヌクスペヌス党䜓を怜玢させる】★
   #terminalLastCommand
 盎前のコマンドず出力
   #problems           
 珟圚の゚ラヌ䞀芧

【スラッシュ コマンド】
   /explain            
 遞択コヌドの説明
   /fix                
 修正案
   /tests              
 テスト生成 ★
   /doc                
 ドキュメント コメント生成
   /new                
 新芏プロゞェクトの雛圢

【カスタム指瀺最も効果が倧きい】★
   .github/copilot-instructions.md
     → プロゞェクトの芏玄・呜名・䜿甚ラむブラリを曞く
     → 【毎回の指瀺が䞍芁になる】
     → 詳现は [GitHub Copilot CLI](MS_GitHubCopilotCLI) の
       Instruction ファむルの節も参照
【原文の「Ctrl + Enter で 10 の提案」に぀いお】
   ・これは初期の Copilot提案パネルの仕様
   ・珟圚の UI では
     【むンラむン提案の切替Alt + ] / Alt + [】ず
     Chat が䞻䜓になっおおり、
     10 件パネルは目立たなくなった ★

雑感

タむタニックデヌタセットのデヌタ分類問題を GPT を䜿っお解いた
開発基盀郚䌚 Wiki の Kaggle - Competitions - Getting Started。

圓然ず蚀えば圓然だが、同様のこずが、他の GPT ç³» Chat サヌビスでも可胜。

移行メモ誀字: 移行元の「GPT を䜿っお描いた」を
文意デヌタ分類問題を解いたに沿っお「解いた」に改めた。

GPT性胜

  • 基本的に、コヌドの提案は実甚レベルに達しおいる。
  • ただし、あくたでサンプルコヌドずしおの扱い脆匱性、ラむセンスなど。
  • コレは、ググったサンプルコヌドの扱いず同じなので、今曎感。
  • たた、ある芁件に察しお、どのような仕様をくむべきかず蚀う点は、
    GPT では回答できないケヌスもあるタむタニックデヌタセット䟋で回答できた。

移行メモ誀字: 移行元の「どのようか仕様を」を
「どのような仕様を」に修正した。

IDE組み蟌み

IDE 組み蟌みの堎合、

  • IntelliSense 的な利甚が最も意味が圚りそう。

  • IDE ず GPTWeb間の行き来が䞍芁ず蚀う点は、コヌダヌ的にはメリットが倧きそう
    アヌキテクトにはメリットは少なそう

  • たた、様々なコマンドが甚意されおいるが、これらを䜿いこなすのは難しいため、
    慣れるたではデメリットず考える。

プロンプティング

他の GPT ç³» Chat サヌビスずの差別化ポむント

  • Chat 的に䜿う堎合は、他の GPT ç³» Chat サヌビスずの差別化ポむントは、
    自動的なプロンプティングずなる。
  • ただし、プロンプティングがブラックボックス化されおいるこずは
    逆にデメリットになりかねない。

フィルタリング

他の GPT ç³» Chat サヌビスずの差別化ポむント

  • GitHub Copilot にはフィルタリングが実装されおおり、
    他の GPT ç³» Chat サヌビスずの差別化ポむントずなっおいる。
  • ただし、フィルタリングから埗られるベネフィットに぀いおは評䟡が難しいず考える
    機胜も䞍透明。
  • 銀行系システムなどで Web 参照なども犁止されるようなシステム開発では
    安心感を䞎える可胜性がある。

補足「雑感」の評䟡を珟圚から振り返る: 各項目の芋立おを
その埌の経過ず突き合わせるず、圓たった点ず倖れた点がはっきりする。

【圓たった点】★
 ・「サンプルコヌドずしおの扱い」
     → 【今も正しい】。生成物のレビュヌ責任は利甚者にある
 ・「どのような仕様を組むべきかは回答できない」
     → 芁件定矩・トレヌドオフの刀断は
       䟝然ずしお人間の仕事
 ・「プロンプティングのブラックボックス化はデメリット」
     → だからこそ
       【AGENTS.md / copilot-instructions.md】ずいう
       「明瀺的に指瀺を曞く」方匏が䞻流になった ★
       ブラックボックスを開ける方向ぞ進んだ

【倉わった点】★
 ・「アヌキテクトにはメリットが少なそう」
     → 【逆転し぀぀ある】
       - 倧芏暡なリファクタリング蚈画の立案
       - 既存コヌドベヌスの調査・芁玄
       - 蚭蚈案の耇数生成ず比范
       → コヌディング・゚ヌゞェントの登堎により
         【蚭蚈・調査フェヌズでの掻甚】が広がった
 ・「コマンドを䜿いこなすのは難しい」
     → 自然蚀語で足りるようになり、
       コマンドの重芁性は䞋がった
 ・「IntelliSense 的な利甚が最も意味がありそう」
     → 補完は今も䟡倀があるが、
       䞻戊堎は【Chat ず゚ヌゞェント】ぞ移った
【「銀行系システムでの安心感」に぀いお】★
   この指摘は的確で、実際に䌁業導入の焊点になった。
   珟圚の Copilot Business / Enterprise では
     ・【プロンプトず提案を孊習に䜿わない】ず明蚘
     ・保持期間の明瀺
     ・監査ログEnterprise
     ・IP 補償前述
     ・【Copilot Enterprise は
       自瀟リポゞトリを文脈にできる】★
   → 「䞍透明さ」ぞの回答が制床面で敎備された
   → ただし導入前に
     自組織の芏皋ず突き合わせる必芁がある点は倉わらない

参考

補足最埌のリンクの読み方: 「Security Filters Don't Work」は
競合補品Codeiumのブログであり、立堎を螏たえお読む必芁がある。
ただし䞻匵の栞フィルタは䞇胜ではなく、生成コヌドの脆匱性怜査は
別途 SAST 等で行うべき
は劥圓である。

【生成コヌドに察する珟実的な守り】★
   ・【CodeQL / GitHub Advanced Security】  SAST
   ・【Dependabot】  䟝存の脆匱性
   ・【Secret scanning + push protection】★
     → ハヌドコヌドされた資栌情報の混入を防ぐ
   ・通垞のコヌド レビュヌ
   → 「Copilot が安党なコヌドを出す」こずに䟝存せず、
     【パむプラむンで怜出する】蚭蚈にする

Tags: 移行, .NET開発, 構成管理ツヌル, CI, BI/AI

⚠ **GitHub.com Fallback** ⚠