GitHub Copilot Enterprise を検討している方へ -機能、制約、注意事項-

## はじめに

:::note info
2024/11/20 時点の情報です
:::

以前、 GitHub Copilot の導入に関する記事を書きました

https://qiita.com/RyoWakabayashi/items/1207128e88669c76bf5f

個人は Copilot Individual を使用すれば VSCode などの IDE で AI によるコーディング支援を受けることができます

企業では Copilot Business を使用することで、 Copilot を使用する社員の管理や、機能制限をかけることができます

しかし、更に上位のプランである Copilot Enterprise はまだ使ったことがなかったので、検証してみました

## GitHub Copilot とは

GitHub Copilot は AI によるコーディング支援サービスです

https://github.com/features/copilot

3種類のプランがあります

- Copilot Individual
  - 個人用
  - 月額 1 ユーザーあたり $10
  - 個人のアカウントで契約する
- Copilot Business
  - 企業、組織用
  - 月額 1 ユーザーあたり $19
  - **GitHub Organization で契約する**
  - 所属している個人アカウントのうち、誰に Copilot を使わせるか管理できる
  - 所属している個人アカウントに対して Copilot の利用方針（ポリシー）を制限できる
- Copilot Enterprise
  - 大企業用
  - 月額 1 ユーザーあたり $39
  - **GitHub Enterprise で契約する**
  - 所属している Organization のプランを Business と Enterprise から選択できる
  - 所属している Organization に対して Copilot の利用方針（ポリシー）を制限できる

## GitHub の契約

GitHub Copilot Enterprise は GitHub Enterprise の契約が前提になっています

https://github.co.jp/enterprise.html

GitHub Copilot の前提となる GitHub 本体の契約について確認しておきましょう

GitHub Enterprise と Organization と各個人のアカウントは以下のような関係になっています

```mermaid
flowchart TB
    subgraph GitHub Enterprise
        ent[Enterprise アカウント 1]
    end
    subgraph GitHub Organization
        org1[Organization アカウント 1]
        org2[Organization アカウント 2]
    end
    subgraph 個人アカウント
        user1[個人アカウント 1]
        user2[個人アカウント 2]
        user3[個人アカウント 3]
        user4[個人アカウント 4]
        user5[Enterprise のオーナーなど]
    end
    ent --> org1
    ent --> org2
    ent --> user5
    org1 --> user1
    org1 --> user2
    org2 --> user3
    org2 --> user4
```

上位のアカウントが下位のアカウントを管理する構造になっています

個人アカウントの上位が Organization アカウント、 さらにその上位が Enterprise アカウントです

上位アカウントは下位アカウントに対して権限管理やポリシーによる制約を課すことができます

料金は以下の通りです

- Free
  - 無料
  - 個人アカウントと Organization で契約する
- Team
  - 月額 1 ユーザーあたり $4
  - 個人アカウントと Organization で契約する
- Enterprise
  - 月額 1 ユーザーあたり $21
  - Enterprise の場合は必ずこの契約になる

https://github.co.jp/pricing.html

料金の例を示します

- 個人 Free プラン + Copilot Individual: 月額 $10
- Organization Team プラン 3 人 + うち 2人 Copilot Business: 月額 $50
- Enterprise 3 人 + うち 2人 Copilot Enterprise: 月額 $141

## 注意点

個人や Organization で Copilot Enterprise を使うことはできないため、
必ず `GitHub Enterprise（月額 $21） + Copilot Enterprise（月額 $39） = 月額 $60` が掛かります

<b><font color="red">$\huge{GitHub Enterprise には 1 ヶ月の無償プランがありますが、}$</font></b>
<b><font color="red">$\huge{無償期間中は Copilot Enterprise が使用できません}$</font></b>

なので、試すだけでも月額一人当たり $60 を覚悟する必要があります

無償期間中に Copilot Enterprise の設定ページを開くと以下のように表示されます

![スクリーンショット 2024-10-28 111624.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/1fe84c25-ac18-6db6-c51b-00820ace0ce3.png)

Copilot Enterprise を使いたい場合、画面上部に出ている `Activate paid Enterprise` をクリックして無償期間を終わらせましょう

![スクリーンショット 2024-10-28 111633.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/99ddae73-57d1-81af-3611-645830a67814.png)

無償期間を終わらせると、 Enterprise 内の Organization 毎に Copilot のプランを選択できるようになります

![スクリーンショット 2024-10-28 112456.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/6fcb1fad-dcc2-b087-8f37-961bb7aa7479.png)

![スクリーンショット 2024-10-28 112518.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/3a815564-d16f-deb5-6dc2-2d890a861137.png)

## GitHub Copilot の共通機能

以下に、全プラン共通で（Copilot Indivisual から）使用できる機能を紹介します

### Copilot in IDE

VSCode や Vim など、 IDE （統合開発環境）上でコードの補完やチャットへの応答ができます

例えば VSCode に GitHub Copilot プラグインを導入していると、以下の画像のようにコードの補完をしてくれます

![random.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/7deda57a-8ac5-6d9a-a505-8b68b35bdb9d.gif)

https://marketplace.visualstudio.com/items?itemName=GitHub.copilot

GitHub Copilot Chat プラグインを導入すると、コードに関する質問に答えてくれたり、コードを直接編集してくれます

![copilot_chat.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/b62cc2a8-ff8d-7b01-9bf4-c5b6b8cd4da1.gif)

![copilot_edits.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/070cfb08-173a-24f0-f2e2-b9418ec0d777.gif)

https://marketplace.visualstudio.com/items?itemName=GitHub.copilot-chat

ただし、 ChatGPT のような画像生成や画像説明はできません（あくまでもコーディング支援用のAIです）

![スクリーンショット 2024-11-20 16.00.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/e417b5fb-9031-3ac8-fdd8-4afb841445b3.png)

### Copilot in the CLI

GitHub CLI で Copilot に指示を出すことができます

macOS の場合、 GitHub CLI は以下の [Homebrew](https://brew.sh/ja/) でインストールできます

```bash
brew install gh
```

GitHub Copilot を契約しているアカウントにログインしましょう

```bash
gh auth login
```

GitHub Copilot プラグインをインストールします

```bash
gh extension install github/gh-copilot
```

`gh copilot explain <コマンド>` でコマンドの内容について説明してくれます

![copilot_cli_explain.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/4f513704-1811-3a86-fc48-e4bf5bdee8fd.gif)

:::note warn
説明は英語になってしまいます
:::

`gh copilot suggest <やりたいこと>` でやりたいことを実行するコマンドを提案してくれます

![copilot_cli_suggest.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/4d87197e-8d69-7bd1-7136-3e26b6ef10ed.gif)

:::note warn
日本語でも応えてくれますが、基本は英語です
:::

### Copilot in GitHub Mobile

モバイルアプリの中で Copilot とのチャットができます

https://apps.apple.com/jp/app/github/id1477376905

https://play.google.com/store/apps/details?id=com.github.android&hl=ja

![copilot_mobile.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/ec042e37-bbb2-6b5c-3e6d-9825767e7124.gif)

### Copilot in github.com (preview)

ブラウザで GitHub を開いているとき、 Copilot とチャットできます

一般的な質問だけでなく、特定のリポジトリー内のコードやドキュメントについての質問にも対応しています

リポジトリ内の情報を検索できるようにするためにはリポジトリを index （索引作成）する必要があります

![スクリーンショット 2024-11-20 16.31.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/3ae662dd-033f-6715-80be-a7afcdd6ebe9.png)

![copilot_dotcom.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/93b5c423-594c-2c0e-040b-6e2da9369228.gif)

### Copilot Extensions

Copilot Chat に機能を追加します

#### Copilot in github.com 用の拡張機能

GitHub Marketplace で追加できます

https://github.com/marketplace?type=apps&copilot_app=true

例えば mermaind-chart の拡張機能を使うと、 [Mermaid.js](https://mermaid.js.org/) の形式で図を表現してくれます

![スクリーンショット 2024-11-20 17.14.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/c2e57ad6-2e37-bade-0db0-5e893f31bf68.png)

末尾の "Mermaid Chart Playground" をクリックすると、実際に図として表示できます

![スクリーンショット 2024-11-20 17.17.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/4f2622ad-8519-b73d-038e-321adf993ecc.png)

#### VSCode 用の拡張機能

拡張機能を `@tag:chat-participant` で検索すると、 GitHub Copilot Chat を拡張できる機能が見つかります

![スクリーンショット 2024-11-20 16.19.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/32642324-14ad-d930-b0b4-b658805f74c2.png)

例えば "Regex Previewer" の拡張機能をインストールしていると、 GitHub Copilot Chat で `@regex /new <正規表現にしたい内容>` を入力することで該当する正規表現が生成されます

![copilot_regex.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/cb33789c-a6e3-0fc5-cf95-74c8063c98ca.gif)

### Pull Request の概要生成

Pull Request の作成時、変更内容の概要を文章として生成してくれます

![copilot_pr.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/99d2ded5-f502-99be-fb5e-a2bcacd266ad.gif)

:::note warn
英語でしか生成してくれないので、英語ネイティブなチームでないと使えません
:::

### モデルの選択 (preview)

デフォルトの GPT 4o 以外に、 Claude 3.5 Sonnet 、 o1-mini 、 o1-preview などのモデルが選択できるようになっています

![copilot_models.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/ba2145b1-393f-0839-159c-6b608390ad68.gif)

### Copilot access to Bing (preview)

Copilot が Web 検索をして最新情報に基づいた回答をします

以下の画像の例だと、回答末尾のバージョン番号部分（v4.0.1）がリンクになっていて、 [pre-commit のリリースページ](https://github.com/pre-commit/pre-commit/releases/tag/v4.0.1)を参照しています

![copilot_bing.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/5cc09d75-ea78-c69e-bb5e-b87ed7dd5837.gif)

## GitHub Copilot Business の機能

以下に Copilot Business 以上で利用可能となる機能（Indivisual では使えない機能）を紹介します

### ユーザー管理

誰に GitHub Copilot を使用させるのか選択できます

![スクリーンショット 2024-11-20 20.13.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/2562af81-64c0-45e2-09fc-e764c9a71807.png)

### ポリシー設定の強制

Copilot の機能毎に有効かどうか選択できます

ポリシーの設定自体は個人でもできますが、 Organization に所属している個人には Organization のポリシーが強制的に適用されます

これにより、オプトインさせる（Copilot に入力を学習させない）かどうかなど、企業が社員の利用方法を制限できます

Copilot Business ではデフォルトでオプトインしないようになっています

![スクリーンショット 2024-11-20 20.16.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/1272bac2-d286-dcdd-94ab-3cb7701f1870.png)

ただし、上位に Enterprise がいる場合、 Enterprise の方で有効無効を選択するため、 Organization では選択できません

### 監査ログ

Organization の Settings メニューの下の方にある "Logs" -> "Audit log" から、組織に対する操作のログが確認できます

![スクリーンショット 2024-11-20 17.42.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/87ba9846-9bc1-53c4-901e-128e90d8c4b3.png)

"action:copilot" で検索すると、 Copilot に対する操作が確認できます

![スクリーンショット 2024-11-20 17.42.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/930258a7-594f-58bb-7bda-b44f6c0639e6.png)

### 利用量取得

API から利用量が取得できます

```bash
gh api \
  -H "Accept: application/vnd.github+json" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  /enterprises/oec-enterprise/copilot/metrics
```

結果は以下のように、何日にどのツールからどの言語でどれくらい使ったか、などが分かるようになっています

```json
[
...
  {
    "date": "2024-11-15",
    "copilot_ide_chat": {
      "total_engaged_users": 0
    },
    "total_active_users": 1,
    "copilot_dotcom_chat": {
      "total_engaged_users": 0
    },
    "total_engaged_users": 1,
    "copilot_dotcom_pull_requests": {
      "total_engaged_users": 0
    },
    "copilot_ide_code_completions": {
      "editors": [
        {
          "name": "vscode",
          "models": [
            {
              "name": "default",
              "languages": [
                {
                  "name": "elixir",
                  "total_engaged_users": 2,
                  "total_code_acceptances": 6,
                  "total_code_suggestions": 11,
                  "total_code_lines_accepted": 7,
                  "total_code_lines_suggested": 19
                },
                {
                  "name": "unknown",
                  "total_engaged_users": 2,
                  "total_code_acceptances": 2,
                  "total_code_suggestions": 4,
                  "total_code_lines_accepted": 2,
                  "total_code_lines_suggested": 4
                },
                {
                  "name": "markdown",
                  "total_engaged_users": 2,
                  "total_code_acceptances": 2,
                  "total_code_suggestions": 5,
                  "total_code_lines_accepted": 5,
                  "total_code_lines_suggested": 10
                }
              ],
              "is_custom_model": false,
              "total_engaged_users": 2
            }
          ],
          "total_engaged_users": 2
        }
      ],
      "total_engaged_users": 2
    }
  },
...
]
```

### コンテンツの除外（preview）

GitHub Coplilot にアクセスさせないリポジトリやパスを指定できます

![スクリーンショット 2024-11-20 20.24.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/ee945251-8b03-ceee-712d-2ddbf3b17ed3.png)

## GitHub Copilot Enterprise の機能

以下に Copilot Enterprise のみで利用可能となる機能を紹介します

### Copilot knowledge base

リポジトリをナレッジ（知識体系）として参照できるようにします

例えば、以下のような社内手続文書を Markdown 形式としてリポジトリ内で管理します

:::note warn
Word や Excel 、 PDF などでは読み込めません
:::

![スクリーンショット 2024-11-20 20.31.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/1b14dc90-d6d0-9567-07c0-264de8fac055.png)

リポジトリを knowledge base に登録します

![スクリーンショット 2024-11-20 20.34.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/d0611dc9-b4b7-26d8-c9e4-95f73145dee8.png)

チャットで knowledge base を指定すると、リポジトリ内の情報を元に回答し、参照元へのリンクも提供してくれます

![copilot_knowledge.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/9102369a-dabd-03e0-1102-feeea5a75341.gif)

### コードレビュー

GitHub Copilot が Pull Request をレビューします

https://docs.github.com/en/copilot/using-github-copilot/code-review/using-copilot-code-review

開発ガイドラインを設定し、レビューをカスタマイズすることも可能です

https://docs.github.com/en/copilot/using-github-copilot/code-review/configuring-coding-guidelines

ただし、まだ公開されていない機能であるため、 waitlist に入って待つ必要があります

https://github.com/github-copilot/code-review-waitlist/

というわけでまだ使えていません

### モデルの Fine Tuning （微調整）

GitHub Copilot のモデルを自分たちのコードで微調整できます

独自フレームワークや独自コーディング規約などがある場合に有効です

https://github.blog/jp/2024-09-12-fine-tuned-models-are-now-in-limited-public-beta-for-github-copilot-enterprise/

こちらも waitlist に入って待つ必要があります

https://github.com/github-copilot/fine_tuning_waitlist_signup/join

待てど暮らせど、使用許可のメールが来ません

## まとめ

Copilot Indivisual や Copilot Business でもかなりのことができるため、まだコードレビューや Fine Tuning が未公開の現状では、急いで Copilot Enterprise にする必要はなさそうです

とにかく、早く waitlist から抜け出たい、、、