GitHub Copilot for Businessの社内活用状況を大公開!

目次

はじめに

Insight Edgeで開発チームのLead Engineerをしている三澤です。

Insight Edgeではチームの開発効率の向上と品質の向上を狙い、さまざまなツールやサービスの検証と導入を進めています。その中で弊社内で活用しているGitHub Copilot Businessについて社内の活用状況を公開します。実際の利用統計の他、ソフトウェアエンジニア・データサイエンティストそれぞれの視点で感想を公開しますので是非ご覧ください。

GitHub Copilotとは

GitHub Copilotは、GitHubが提供する開発者がコードをよりすばやく書き込みできるようになるAIを活用したコード補完ツールです。GitHub Copilotは、開発者がコードを書く際に、コードのコンテキストに合わせてコードの補完候補を提案してくれます。これにより、開発者はコードをより迅速に書くことができるようになります。

このGitHub Copilotには3種類のプランがあり、それぞれ図に示すような特徴があります。

我々が導入しているのはGitHub Copilot Businessです。このプランは、個人用アカウントであるGitHub Copilot Individualと比べて、価格が1か月のユーザーあたり19米国ドルと若干高額ですが、その分機能が充実しています。例えば、GitHubのOrganization全体にわたるポリシー管理や、指定したファイルをGitHub Copilotの学習から除外する機能があります。また、Copilot Businessは、Copilot Individualと比べて、パブリックコードに一致する候補をブロックする機能や監査ログの機能があります。これらの機能は、ビジネス用途でGitHub Copilotを使用する際には必要不可欠な機能です。

また、通常のコード中での補完だけでなく、GitHub Copilotと対話できるチャットインターフェイスのCopilot Chatも提供されています。Copilot Chatは、コードの説明や質問にも対応してくれるため、開発者はより効率的にコードを書くことができるようになります。

導入目的と期待効果

なぜGitHub Copilotを導入したのか

GitHub Copilotを導入した背景には、以下のような4つの理由があります。

  1. 開発効率の向上
  2. コード品質と一貫性の向上
  3. 学習曲線の短縮
  4. 最新技術トレンドへの適応

それぞれについて詳しく説明します。

開発効率の向上

コードの補完候補を提案してくれるため、開発者はコードをより迅速に書くことができるようになります。これにより、開発効率が向上することを期待できます。

コード品質と一貫性の向上

コードのコンテキストに合わせてコードの補完候補を提案してくれるため、コードの品質と一貫性が向上します。これにより、バグの発生を防ぐことができます。ただしこちらについては注意が必要です。Copilotはあくまで補完候補を提案するツールです。開発者が提案されたコードをそのまま採用するのではなく、提案されたコードを検証し、適切なコードを採用するようにすることが必要になります。

学習曲線の短縮

コードの補完候補を提案してくれるため、開発者はたとえ新しい技術やフレームワークに迅速に適応することができます。これにより、学習曲線が短縮されます。

最新技術トレンドへの適応

AI支援ツールを活用したソフトウェア開発は現在トレンドとなっており、早期に導入することで最新の技術トレンドに迅速に追従することが可能です。これにより、競争力を維持することができます。

以上の4点の効果を見込み、我々は導入を決定し運用してきました。

組織内の活用状況

ここからは、GitHub Copilotの社内活用状況についてご紹介します。

GitHub Copilotの利用状況

弊社では2023年3月からGitHub Copilot Businessを導入し、現在までに約40名の開発者が利用しています。まずは、実際にどれくらいの頻度でどのような言語に対して利用されているかをご紹介します。これらの情報はGitHubが提供するAPIを通じて取得したものです。

統計情報の取得

GitHub Copilotの統計情報はAPIを通じて取得できるため、利用頻度を分析することができます。ただし本APIは直近28日間の情報しか取得できないため、それよりも長い期間をそのまま分析することはできません。長きに渡る利用統計を分析するためには、現時点では1ヶ月1回等の定期的な頻度でAPIを実行し情報を取得保存して集計する必要があります。なお、今回はAPIが最近利用可能になったということもあり、直近28日間の情報を取得し利用頻度を分析しました。

APIを利用する最も簡単な方法は、Pythonのrequestsモジュールを使用することです。以下に、GitHub CopilotのAPIを使用して統計情報を取得するPythonのコードを示します。こちらのコードを実行することで直近28日間の統計情報を取得できます。

import requests

# GitHub API URL
enterprise_name = "XXX"
url = f"https://api.github.com/enterprises/{enterprise_name}/copilot/usage"

# APIにアクセスするためのトークン
token = "YOUR_TOKEN"

# リクエストヘッダー
headers = {
    "Accept": "application/vnd.github+json",
    "Authorization": f"Bearer {token}",
    "X-GitHub-Api-Version": "2022-11-28",
}

# GETリクエストを送信
response = requests.get(url, headers=headers)

# リクエストが成功したかどうかを確認
if response.status_code == 200:
    data = response.json()  # JSON形式のデータを取得
    print("データの取得に成功しました:")
    print(data)  # データを表示
else:
    print(f"データの取得に失敗しました。ステータスコード: {response.status_code}")
    print(response.text)  # エラーメッセージを表示
利用頻度

弊社では1日平均12.0人がGitHub Copilotを利用しています。これは弊社の約1/3が毎日利用しているということになります。ちなみにCopilot Chatの利用者は1日平均0.16人であり、Copilot Chatの利用者は非常に少ないことが分かりました。こちらの機能については私自身以前は何回か使ったことがあるものの、日常の開発シーンにおいては利用はほとんどありません。利用開始当初は実装をしながらChatGPT等のサービスと行き来せずにVS Code内で自由に対話ができることに期待していたものの、実際に使ってみると利便性を感じることができず次第に利用しなくなってしまいました。他の開発者も同様の理由でCopilot Chatの利用がなくなったか、あるいは存在を知らない可能性があるため、改めてその機能について検証し、必要であれば周知をする必要があるかもしれないと考えています。

利用言語

以下は、直近28日間の利用言語で実際にCopilotが提案したコードから採択された行数を元に算出した結果になります。最も利用されている言語はPythonであり、次いでTypeScript、hcl、yamlと続いています。

弊社では、主にPythonやTypeScriptを使用しているため、これらの言語が上位にランクインしていることは自然な結果と言えます。また、インフラ管理のためにTerrformを使用しているため、hclとyamlも上位にランクインしていることはとても自然な結果と言えます。

提案されたコードの採択率

最後に、Copilotが提案したコードの採択率についても調査しました。提案されたコードの採択率は、提案されたコードのうち、実際に採用されたコードの割合を示しています。これは開発者がCopilotの提案をどの程度採用しているかを示す指標となります。言語問わずの平均は30.12%となりました。言語別では、採用された行数で最も多かったPythonに対して、JSONが最も高い採択率を示しています。これはテストデータの生成やAPIのレスポンスのモックなど、JSONを扱う機会が多いためと考えられます。

利用者の声

弊社のエンジニアの声をヒアリングしましたのでご紹介します。エンジニアの声を聞くことで、GitHub Copilotの導入による効果や課題についてより具体的に把握することができます。ちなみに弊社のエンジニアは大きく2つのグループに分かれています。システム開発を担う開発チームと、データ分析を担う分析チームです。今回はそれぞれ異なる視点からGitHub Copilotについてどのような定性効果があったのかをヒヤリングしましたので、その結果をご紹介します。

開発チーム (ソフトウェアエンジニア)

開発チームからは、生産性の向上や学習効果に関するポジティブな意見が多く聞かれました:

定型的なコードをいちいち書く必要がなくなり、開発スピードが格段に上がった。よりコアなロジックに集中できるようになった。

テストコードを書くのが面倒だったが、Copilotが自動生成してくれるので助かる。テストケースを考える時間もしっかり取れるようになった。

Copilotがないと生きていけない体になってしまった。

一方で、Copilotの提案の質や依存度に関する課題も指摘されています:

Copilotが提案してくれるコードが、いつも最適な方法とは限らない。時には、自分で書いた方が早いし、分かりやすい場合もある。

クラウド環境のSDKを使う場合、Copilotが生成するコードが不安定で、エラーが発生することがある。最新のAPIに対応できていないこともある。

分析チーム (データサイエンティスト)

分析チームからは、特に学習効果や新しい知識の獲得に関するポジティブな意見が聞かれました:

Copilotが提案してくれるコードを通して、知らなかったAPIやライブラリを知ることができ、学習の機会になっている。

データ前処理や可視化のコードを書く際に、Copilotの提案を参考にすることで、より効率的なアプローチを学べることがある。

Copilotのおかげで、コードを書く際のストレスが減り、より分析業務に集中できるようになった。

一方で、分析チームからもCopilotの提案の質や依存度に関する課題が指摘されています:

Copilotが提案するコードは、あくまでも参考程度に捉えている。最終的には、自分の知識と経験に基づいて判断する必要がある。

以上のように、開発チームと分析チームともに、Copilotの利用による生産性向上や学習効果については肯定的な意見が多く聞かれましたが、提案の質や依存度に関する課題も指摘されています。ただし、総じて、Copilotの導入による効果は大きいと考えています。

まとめと今後の展望

ここまで、GitHub Copilotの導入背景と目的、組織内の活用状況についてご紹介しました。最後に、まとめと今後の展望について述べます。

まとめ

GitHub Copilotは、我々の開発において生産性向上や学習効果の向上に大きく貢献しています。特に、定型的なコードの自動生成や馴染みのないAPIやライブラリの学習や定型的なコードの自動生成において、Copilotの提案は非常に有用であると感じています。一方で、提案の質や依存度に関する課題もあるため注意は必要ですが、総じて、Copilotの導入による効果は大きいと考えています。むしろ、なくてはならないツールとなっています。

今後の展望

今後は、GitHub Copilot Enterpriseの導入を検討しています。Copilot Enterpriseは、Copilot Businessよりもさらに高度な機能を提供しており、より大規模な組織での利用に適しています。弊社では7月中にCopilot Enterpriseの検証開始を予定しており、その結果を踏まえて、Copilot Enterpriseの導入を検討していきます。なお、その結果については今後の報告でご紹介しますので是非ご期待ください!