Skip to content

GitHub Copilot の仕組みとデータフロー ​

プロンプトを入力してから、提案が画面に表示されるまでの間に、GitHub Copilot の内部では何が起きているのでしょうか。このページでは、その処理の流れと、データの扱い、提案を作り出す AI(LLM)の仕組みを整理します。

この記事で分かること ​

  • プロンプトが処理される流れ(インバウンドフローとアウトバウンドフロー)
  • 途中で働く 2 つのフィルター(プロキシと、有害性フィルタリング)
  • 提案を返す前に行われるチェック
  • コード補完と Copilot Chat での、データの扱いの違い
  • コンテキストウィンドウの制限と、その対処
  • LLM とは何か。微調整と LoRA

試験範囲では、「GitHub Copilot のデータとアーキテクチャを理解する」(比重 10〜15%)の分野にあたります。

数値や名称について

このページの元になっている公式の教材は、2024 年に書かれたものです。そのため、現在の公式情報と食い違う部分があります。

  • 「データの扱い」の節は、2026 年 10 月に、GitHub の最新の公式情報で確認し直しました。教材の説明と、現在の公式情報の両方を載せています。
  • 公開されているコードとの一致の基準は、現在の公式ドキュメントの説明を書き添えています。
  • コンテキストウィンドウの大きさは、教材の説明のままです。最新の公式情報では確認していません。

用語の整理 ​

用語意味
インバウンドフロー(inbound flow)利用者のプロンプトが、Copilot の側へ送られて、処理されるまでの流れ
アウトバウンドフロー(outbound flow)生成された提案が、チェックを経て、利用者に届くまでの流れ
コンテキスト(context)提案を作るときに参考にされる、周囲の情報
プロキシサーバー(proxy server)利用者と AI モデルの間に立って、通信を中継する仕組み。ここで通信の検査が行われる
LLM(Large Language Model:大規模言語モデル)大量の文章で学習し、人の言葉を理解・生成できる AI モデル
トークン(token)LLM が文章を扱うときの、細かく区切った単位
コンテキストウィンドウ(context window)モデルが一度に処理できる、周囲のコードや文章の量
微調整(fine-tuning:ファインチューニング)学習済みのモデルを、特定の作業や分野に合わせて、追加で学習させること

全体の流れ ​

Copilot の処理は、プロンプトを受け取るインバウンドフローと、提案を返すアウトバウンドフローに分けられます。全部で 7 つの段階があります。

text
【インバウンドフロー】プロンプトが Copilot の側へ送られる
  1. 安全なプロンプト送信と、コンテキストの収集
        ↓
  2. プロキシフィルター
        ↓
  3. 有害性フィルタリング
        ↓
  4. LLM によるコード生成

【アウトバウンドフロー】提案が利用者に返される
  5. 後処理と、応答の検証
        ↓
  6. 提案の提示と、フィードバックループの開始
        ↓
  7. 後続のプロンプトに対して繰り返す

インバウンドフロー ​

1. 安全なプロンプト送信と、コンテキストの収集 ​

処理は、プロンプトを HTTPS(通信の内容を暗号化する方式)で安全に送信するところから始まります。プロンプトには、Copilot Chat への入力と、コードの中に書いた自然な言葉のコメントの、両方が含まれます。

同時に、Copilot は次のコンテキストを集めます。

集める情報目的
カーソルの位置の前後のコードプロンプトのすぐ近くの状況を理解する
編集しているファイルの名前と種類ファイルの種類に合った提案にする
隣接する、開いているタブの情報同じプロジェクトのほかのコードと、整合する提案にする
プロジェクトの構造と、ファイルのパス—
プログラミング言語と、フレームワーク—

集めた情報は、Fill-in-the-Middle(FIM) という手法で前処理されます。これは、カーソルより前のコードだけでなく、後ろのコードも考慮に入れる手法です。より広いコンテキストを使えるので、正確で、状況に合った提案を作れます。

この段階で、利用者の大まかな依頼が、具体的なコーディングの作業に置き換えられます。

2. プロキシフィルター ​

コンテキストが集められ、プロンプトが組み立てられると、プロキシサーバーに安全に渡されます。このプロキシサーバーは、GitHub が所有する Microsoft Azure の環境で動いています。

プロキシは通信を検査して、次のような試みを阻止します。

  • プロンプトを乗っ取ろうとする試み
  • モデルがどのように提案を生成しているのかを、聞き出そうとしてシステムを操る試み

3. 有害性フィルタリング ​

意図の読み取りとコードの生成に進む前に、内容のフィルタリングが行われます。生成されるコードや応答に、次のものが含まれないようにするためです。

対象内容
ヘイトスピーチと不適切な内容憎悪をあおる表現、攻撃的な言葉など、害を与えたり不快にさせたりする内容を検出して、取り込まないようにする
個人データ名前、住所、識別番号などの個人データを、積極的に取り除く。利用者のプライバシーと、データの安全を守るため

4. LLM によるコード生成 ​

フィルターを通り、分析されたプロンプトが、LLM に渡されます。LLM は、プロンプトと周囲のコンテキストをもとに、適切なコードの提案を生成します。

アウトバウンドフロー ​

5. 後処理と、応答の検証 ​

モデルが応答を生成すると、まず有害性フィルターが、有害な内容や不快な内容を取り除きます。そのあと、プロキシサーバーが最終的なチェックを行います。

チェック内容
コードの品質よくある不具合や脆弱性が含まれていないかを調べる。例として、クロスサイトスクリプティング(XSS)と SQL インジェクションが挙げられている
公開されているコードとの一致(任意)管理者が有効にできるフィルター。約 150 文字を超える提案が、GitHub で公開されている既存のコードによく似ている場合に、その提案を返さないようにする

公開されているコードとの一致のフィルターは、偶然一致したコードが、新しく作られたものとして提案されるのを防ぐためのものです。

「約 150 文字を超える提案」という説明は、教材(2024 年)のものです。現在の公式ドキュメントでは、Copilot は、提案と、その前後の約 150 文字のコードを、GitHub で公開されているコードと照合する、と説明されています。設定のしかたは、「GitHub Copilot のプライバシーとデータ保護」で扱っています。

チェックに通らなかった部分は、切り詰められるか、破棄されます。

6. 提案の提示と、フィードバックループの開始 ​

すべてのフィルターを通過した応答だけが、利用者に届けられます。

そのあと、利用者の行動をもとにしたフィードバックループが始まります。

  • 受け入れられた提案から、知識を増やす
  • 提案が修正されたり、拒否されたりしたことから学び、改善する

7. 後続のプロンプトに対して繰り返す ​

利用者が新しいプロンプトを入力するたびに、この流れが繰り返されます。Copilot は、積み重なったフィードバックとやり取りのデータを活かして、利用者の意図の理解と、コードの生成の精度を高めていきます。

フィルターとチェックのまとめ ​

どの段階で、何が、何を確認しているのかを整理します。

段階流れ働くもの確認する内容
2インバウンドプロキシプロンプトの乗っ取りや、モデルの仕組みを聞き出そうとする操作
3インバウンド有害性フィルタリングヘイトスピーチや不適切な内容、個人データ
5アウトバウンド有害性フィルター生成された応答に含まれる、有害な内容や不快な内容
5アウトバウンドプロキシコードの品質(不具合や脆弱性)、公開されているコードとの一致(任意)

入力の側と出力の側の両方で、フィルターが働く点が要点です。

データの扱い ​

データの扱いは、どこで Copilot を使うかと、契約しているプランによって違います。この節では、まず公式の教材(2024 年)の説明を紹介し、そのあとで、現在の公式情報を整理します。試験は教材の内容をもとに出題される可能性があるので、両方を知っておくと安心です。

公式の教材での説明(2024 年) ​

コード補完

  • コードエディターの中の Copilot は、提案を作るために使ったプロンプト(コードや、そのほかのコンテキスト)を、基盤となるモデルの学習のために保持しない
  • 提案を返したら、プロンプトを破棄する
  • 個人向けのプラン(教材では「GitHub Copilot Individual」)の利用者は、プロンプトを GitHub と共有しないように設定できる。設定しない場合、プロンプトは GitHub の基盤となるモデルの微調整に使われる

Copilot Chat

Copilot Chat は、会話の形でやり取りをする機能です。コード補完とは違う処理として、次の 3 つが挙げられています。

処理内容
書式の整形生成した応答を、チャットの画面で見やすいように整える。コードの部分を強調して表示し、自分のコードに直接取り込むための操作を付けることもある
利用者とのやり取り続けて質問したり、説明を求めたり、情報を追加したりできる。チャットは会話の履歴を保持していて、あとのやり取りで文脈を理解するために使う
データの保持コードエディターの外で使う Copilot Chat では、GitHub は通常、プロンプト、提案、関連するコンテキストを 28 日間保持する。コードエディターの中の Copilot Chat については、保持の扱いが異なる場合がある

教材では、コードエディターの外で使う場合の扱いは、CLI(コマンドで操作する画面)、モバイル、GitHub.com 上の Copilot Chat にも当てはまる、とされています。このうち CLI の扱いは、現在の公式情報とは違っています(後述)。

現在の公式情報(2026 年 10 月に確認) ​

GitHub は、Copilot のデータの扱いを、Trust Center(GitHub がデータの扱いを説明しているページ)と、公式ドキュメントで公開しています。

GitHub が保持する期間 ​

企業向けのプラン(Business、Enterprise)の、既定の扱いです。保持される対象は、入力(プロンプト)と出力(Copilot の応答)です。

使い方入力と出力の保持
IDE(コードエディター)の中での、チャットとコード補完。Copilot CLI既定では保持しない
それ以外の使い方(GitHub.com 上のチャットなど)既定で、最大 28 日間

どちらの場合も、次の例外があります。利用規約や利用上のルールへの違反が確認されて、その調査に必要な場合、または、サービスの安全と健全性を守るために必要な場合には、GitHub は入力と出力を、限られた期間保持することがあります。この保持は、対象を絞り、期間を限って行う、とされています。

入力と出力のほかに、次のデータも保持されます。

データの種類内容保持期間
利用状況のデータ(user engagement data)提案を受け入れたか、拒否したか、といった操作の記録2 年間
フィードバックのデータ(feedback data)利用者が送った評価や意見目的のために必要な期間
コーディングエージェントの作業の記録作業を任せると GitHub の側で自律的に進める機能の、作業の記録アカウントが存在する間

GitHub.com 上のチャットの履歴 ​

GitHub.com 上の Copilot Chat について、公式ドキュメントでは、次のように説明されています。

項目内容
保存される会話の数最近の会話を、最大 100 件まで
メッセージの保存期間会話の中の各メッセージを、28 日間
28 日が過ぎるとメッセージは完全に削除される
メッセージがなくなった会話履歴から、自動的に取り除かれる

保持する理由は、機能を動かすためです。Copilot Chat は、前のやり取りを踏まえて答えます。そのためには、これまでの会話が保存されている必要があります。

保存期間を延ばす設定は、公式ドキュメントには書かれていませんでした。残しておきたい内容は、28 日が過ぎる前に、自分でファイルなどに保存しておく必要があります。

画面に見えている履歴は、どこにあるのか ​

「GitHub が保持するデータ」と、「自分の画面に見えている、過去の会話の履歴」は、使う場所によって、同じものの場合と、別のものの場合があります。

GitHub.com 上のチャット、モバイルアプリVS Code などの IDE の中のチャット
履歴が保存される場所GitHub のサーバー自分の PC の中
GitHub による保持最大 28 日間既定では保持しない
28 日が過ぎると完全に削除される。画面の履歴からも消える28 日の期限は関係しない。PC の中に残る
ほかの PC から見られるか見られる見られない

1 つの会話が 2 か所に保存されるわけではありません。どこで使ったかによって、保存される場所が決まります。

VS Code の拡張機能の GitHub Copilot は、右の列にあたります。VS Code で過去の会話を見られるのは、VS Code が自分で PC の中に記録しているためです。

なお、「保持しない」というのは、処理が終わったあとに保存しない、という意味です。VS Code で会話を続けるとき、これまでのやり取りは、その都度 Copilot に送られて、応答を作るために処理されます。

この項目の根拠について

VS Code の履歴が PC の中に保存されることは、公式ドキュメントでは確認できていません。GitHub の利用者向けの掲示板と、VS Code の不具合の報告の内容にもとづいています。保存の形式は VS Code の内部の仕様で、バージョンによって変わる可能性があります。

保持されたデータの使われ方 ​

GitHub が Copilot のデータを使う目的として、Trust Center では、次のものが挙げられています。

目的内容
サービスの提供と維持利用者の設定や使い方に合わせて、サービスを提供し、維持し、更新する
問題への対処不具合や、セキュリティ上の問題を、防ぎ、見つけ、解決する
品質の向上サービスの信頼性、品質、プライバシー、安全性などを高める
不正利用の検出と防止利用規約に違反する使い方を見つけ、防ぐ
法的な義務への対応、料金とアカウントの管理法律で求められる対応や、請求を行う

AI モデルの学習に使われるかどうかは、プランによって違います。

プランAI モデルの学習への利用
個人向け(Free、Pro、Pro+、Max)入力、出力、やり取りの中で生成されたコードが、AI モデルの学習と改善に使われることがある。設定で、使われないようにできる。 使われないようにしても、Copilot の機能はそのまま使える
企業向け(Business、Enterprise)使われない。 利用者のデータは、データ保護契約(DPA:Data Protection Agreement)の対象で、利用者の許可なく学習に使うことは禁じられている

組織のコードを扱うときは、使っているのが、組織が契約した企業向けのプランなのか、個人のプランなのかを確認しておくと安心です。

教材と、現在の公式情報の違い ​

項目教材(2024 年)現在の公式情報
Copilot CLI の入力と出力コードエディターの外で使う場合と同じく、28 日間保持されるIDE の中での利用と同じ扱いで、既定では保持しない
個人向けのプランの名前GitHub Copilot IndividualFree、Pro、Pro+、Max。まとめて「Individual」と呼ばれる
個人向けのプランでの、学習への利用共有しない設定にしなければ、プロンプトがモデルの微調整に使われる入力や出力が、学習と改善に使われることがある。設定で止められる

Copilot Chat が扱えるプロンプトの種類 ​

種類内容例
直接の質問コーディングの考え方、ライブラリ、問題の解決について、具体的に質問する「Python でクイックソートを実装するには、どうすればよいか」
コードに関する依頼コードの生成、修正、説明を依頼する「階乗を計算する関数を書いて」「このコードを説明して」
自由な形の質問考え方を調べたり、一般的な助言を求めたりする「読みやすいコードを書くためのベストプラクティスは何か」
コンテキストを添えたプロンプトコードの一部を示したり、状況を説明したりして、それに合った支援を求める「これが私のコードの一部です。改善点を提案してください」

コンテキストウィンドウの制限 ​

コンテキストウィンドウとは、提案を生成するために、モデルが一度に処理できる、周囲のコードや文章の量のことです。この量には上限があります。

公式の教材では、次のように説明されています。

対象コンテキストウィンドウの大きさ
GitHub Copilot(コード補完)通常、約 200〜500 行のコード、または数千トークンまで
Copilot Chat4,000 トークン(4k トークン)

この大きさは、使っている Copilot の実装やバージョンによって変わる、とされています。

制限への対処 ​

上限を超える情報は、モデルが一度に扱えません。プロンプトを作るときは、次の工夫が有効です。

  • 込み入った問題を、小さく、焦点を絞った質問に分ける
  • 関連するコードの一部を示す

「プロンプトエンジニアリングの基本」で扱った、単一(Single)や短くする(Short)の原則は、この制限への対処にもなっています。

LLM とは ​

LLM(大規模言語モデル) は、人の言葉を理解し、生成し、操作するように設計され、学習された AI モデルです。GitHub Copilot は、LLM を使って動いています。

LLM の特徴として、4 つの面が挙げられています。

面内容
学習データの量さまざまな出どころの、膨大な量の文章で学習している。そのため、言葉、文脈、表現の細かな違いを、幅広く理解できる
コンテキストの理解文脈に合った、一貫性のある文章を生成できる。文の続き、段落、文書全体まで生成できる
機械学習と AI の統合機械学習と人工知能の考え方に基づいている。数百万から数十億ものパラメーター(学習によって調整される数値)を持つ、ニューラルネットワークである
汎用性特定の種類の文章や言語に限られない。特定の作業に合わせて調整でき、さまざまな分野や言語に使える

Copilot での LLM の役割 ​

Copilot は、LLM を使って、コンテキストを踏まえたコードの提案を行います。LLM は、現在のファイルだけでなく、IDE(統合開発環境:コードを書くためのソフトウェア)で開いているほかのファイルやタブも考慮に入れます。

微調整と LoRA ​

微調整(ファインチューニング) ​

微調整は、学習済みの LLM を、特定の作業や分野に合わせて調整する手続きです。大きなデータで学習済みのモデルが持っている知識とパラメーターを活かしながら、その作業に特化した、より小さなデータでモデルを追加学習させます。

言葉意味
ソースモデル(source model)大きなデータで、あらかじめ学習されたモデル
ターゲットデータセット(target dataset)特定の作業に特化した、より小さなデータ

LoRA による微調整 ​

従来の、完全な微調整は、ニューラルネットワークのすべての部分を学習させます。そのため、時間がかかり、多くの計算資源が必要になります。

LoRA(Low-Rank Adaptation:低ランク適応) は、これに代わる方法です。すべての学習をやり直さずに、学習済みの LLM を、特定の作業でうまく働くようにします。GitHub は、この方法を使っています。

項目内容
仕組みすべてを変える代わりに、学習済みのモデルの各層に、小さな学習可能な部品を追加する
元のモデル変わらない。そのため、時間と資源を節約できる
ほかの方法との比較アダプター(adapters)や、プレフィックスチューニング(prefix-tuning)といった、ほかの適応の方法よりも優れている、とされている
完全な微調整LoRA
学習させる範囲ニューラルネットワークのすべての部分各層に追加した、小さな部品だけ
元のモデル変わる変わらない
時間と資源多く必要節約できる

訳語の違いに注意 ​

日本語版の教材は機械翻訳です。英語とセットで覚えておくと安心です。

英語日本語版の教材での表記
Inbound flow / Outbound flowインバウンド フロー / アウトバウンド フロー
Proxy filterプロキシ フィルター
Toxicity filtering有害性フィルタリング
Post-processing and response validation後処理と応答の検証
Matching public code一般公開されているコードとの一致
Feedback loopフィードバック ループ
Context windowコンテキスト ウィンドウ
Fine-tuning微調整。「ファインチューニング」とも表記される
LoRA(Low-Rank Adaptation)LoRA(低ランク適応)
Foundational model基本モデル。一般には「基盤モデル」とも呼ばれる
Data retentionデータ保有期間

まとめ ​

  • Copilot の処理は、インバウンドフロー(送信とコンテキストの収集 → プロキシフィルター → 有害性フィルタリング → LLM による生成)と、アウトバウンドフロー(後処理と検証 → 提示とフィードバックループ → 繰り返し)に分けられる。
  • フィルターは、入力の側と出力の側の両方で働く。すべてのフィルターを通過した応答だけが、利用者に届く。
  • 公開されているコードとの一致のフィルターは、管理者が任意で有効にする。約 150 文字を超える提案が対象である。
  • GitHub による入力と出力の保持は、使い方で違う。IDE の中での利用は既定では保持されず、GitHub.com 上のチャットなどは最大 28 日間保持されて、そのあと完全に削除される。
  • 学習への利用は、プランで違う。個人向けのプランでは使われることがあり、設定で止められる。企業向けのプランでは使われない。
  • コンテキストウィンドウには上限がある。問題を小さく分け、関連するコードを示す。
  • LoRA は、学習済みのモデルの各層に小さな部品を追加する微調整の方法で、元のモデルは変えない。

確認問題 ​

このページの内容から作った、自作の問題です。実際の試験問題ではありません。選択肢を選んで「答えを確認する」を押すと、正解と解説が表示されます。

問 1. インバウンドフロー(inbound flow)の処理の順番として、正しいものはどれですか。 (1 つ選んでください)
問 2. 次のうち、Copilot がコンテキストとして集める情報に当てはまらないものは、どれですか。 (当てはまらないものを 1 つ選んでください)
問 3. インバウンドフローの「プロキシフィルター(proxy filter)」の役割として、適切なものはどれですか。 (1 つ選んでください)
問 4. 有害性フィルタリング(toxicity filtering)で、取り除かれる対象として挙げられているものは、どれですか。 (2 つ選んでください)
問 5. アウトバウンドフローで行われる「公開されているコードとの一致(matching public code)」のフィルターの説明として、適切なものはどれですか。 (1 つ選んでください)
問 6. LoRA(Low-Rank Adaptation)による微調整の説明として、適切なものはどれですか。 (1 つ選んでください)
問 7. GitHub.com 上の Copilot Chat のメッセージについて、公式ドキュメントでの説明として適切なものはどれですか。 (1 つ選んでください)
問 8. コンテキストウィンドウ(context window)の制限を踏まえた、プロンプトの作り方として適切なものはどれですか。 (1 つ選んでください)
問 9. 企業向けのプラン(Business、Enterprise)で、IDE の中のチャットとコード補完を使った場合、入力と出力は、既定でどのように扱われますか。 (1 つ選んでください)
問 10. 個人向けのプラン(Free、Pro など)での、AI モデルの学習へのデータの利用について、適切な説明はどれですか。 (1 つ選んでください)

参考資料と確認の記録 ​

項目内容
最終確認日2026 年 10 月 11 日
検証の状況公式の教材(英語版と日本語版)の 3 つの単元(プロンプトの処理の流れ、データ、LLM)と照合した。「データの扱い」の節の「現在の公式情報」は、GitHub の Trust Center と公式ドキュメントで確認した。確認問題と、整理のための表は、このサイトで作成したもの
公式の情報で確認できていない内容VS Code のチャットの履歴が PC の中に保存されること(利用者向けの掲示板などの情報にもとづく)。個人向けのプランでの、入力と出力の保持期間(Trust Center の説明は、企業向けのプランについてのもの)
変わる可能性がある内容コンテキストウィンドウの大きさ(200〜500 行、4,000 トークン)は、2024 年の教材の説明で、最新の公式情報では確認していない。保持期間やプランの名前も、今後変わることがある
更新の記録2026 年 10 月 11 日:「データの扱い」の節を、現在の公式情報をもとに書き直した。確認問題の問 7 を作り直し、問 9 と問 10 を追加した。公開されているコードとの一致の基準について、現在の公式ドキュメントの説明を書き添えた
このページで扱っていない内容プライバシーの設定と、コンテンツの除外は、別のページ(13)で扱っている