GitHub Copilot 社内レビュー

GitHub Copilot 社内レビュー

ChatGPTのサービスが開始されて以降、様々な業種、様々な業務でAIを使用した効率改善、品質改善がより盛んに行われています。

弊社でも機密情報を漏らさないためいくつかの制約はありますが、業務でAIを使ったサービスを利用する機会が増えています。

そこで今回WEBアプリケーション開発の業務の改善につながるか、10名ほどの開発者にGitHub Copilotを使用してもらい、弊社なりの見解をお知らせしたいと思います。

GitHub Copilotとは

GitHub と OpenAI によって開発された AI 搭載のコード補完ツールです。Visual Studio Code、Visual Studio、Neovim、JetBrains などのエディターと統合されており、リアルタイムでコードの自動補完や提案を提供してくれます。

10 億行を超えるコードのデータセットでトレーニングされています。このデータセットには、オープンソース プロジェクト、企業コードベース、および個人のコードが含まれます。
GitHub Copilot は、このデータセットを使用して、ユーザーが入力しているコードと一致するコードを生成します。
Codexは、GPT-3 言語モデルの派生品で、GPT-3の機能のいくつかを継承していると言われていますが、正式にはGPTバージョンを公開していないようです。(Google Bard調べ)

使用前の注意点

機密情報漏洩を防ぐ、著作権の違反をしないために下記の設定を行なっています。
GitHub CopilotのBusinessのサブスクリプションならばGitHubの組織の配下のアカウントにこの設定を共有できます。また、サブスクリプションを与えたい人を選ぶことも可能です。それは組織配下全員の費用を払う必要がないということです。(2023年6月時点)

レビュー

いくつかのプロジェクト及び調査のためのサンプルプログラムの開発で使ってみて良い点と改善した方が良い点(改善点)を記載します。
こちらは2年 – 10年の開発経験があり、最低でもNodejs/PHP/Javascriptのうちどれか2つ以上使用でき、一人で開発を進められる10名ほどの開発者が使用した結果から評価をしたものです。

良い点

  • コンテキストを理解して、提案をしてくれる。特定のモデルに入っている特定の値を取得する際に、既存プログラムを理解してキー名、フィールド名が入った状態で構文の提案を出してくれる。
  • NodeJSのSenior以上の開発者が、不慣れなPythonで開発を行い、Control + Enterで提案されたものがわかりやすく、それが適切で役に立った。
  • 1つのプログラミング言語の経験があれば、異なる言語に挑戦するときに選択するものが正しいかどうかある程度判断できるため、作業効率改善につながる。
  • ベトナム語、英語や日本語以外でもサポートしている。
  • Copilotを入れることで、VS codeとしてのコード補完がわかりやすくなった時もある。
  • 提案を選択した時に、既存のプログラムのfunction名や関数名を使用してくれるため、実装時間が減る。

改善点

  • Javascriptの簡単な質問を適切に返してくれない時があった。
  • 存在しない構文の提案をしてくることがある。
  • Copilotに質問やプログラムの提案を受けたい時に、メッセージを送ってから返信を受けるまでに時間がかかることがある。または何も返ってこない時があり、無駄な時間を過ごすことがある。
  • ChatGPTほど言語理解がよくなく、ある程度プロンプトを理解していないと期待していたものとは違うものが返ってくることがある。

総括

  • コード補完のアップグレードのようなイメージで、ゲームチェンジャーとはなりえない。
  • 書いてあるプログラムで適切そうなものを提案してくれるだけで、言葉で書かれた仕様を理解して解決となるプログラムを現行のプログラムに完全に合う形で出してくれるわけではない。
  • 言語理解がよくなく気軽にナビが受けづらく、ナビゲーターとしての役割は不十分でペアプログラミング感はない。
  • 開発経験があり、新しい言語の開発をするときには有益で5 – 10%ほど作業が減る。
  • 開発経験があり、使い慣れている言語だと既存のコード補完機能で十分なため、0 – 5%程度のコーディング作業の削減につながる。
  • Copilotを経験した50%ほどの開発者は継続して使用したい。

 

AIから提案を受けた後、既存プログラムや動作が正しいかを確認する必要があります。
開発未経験者が使用すると何となくできていそうなプログラムを作成することができると思われます。ただし、開発を行うアプリケーションの仕様を適切に理解して、適切にCopilotに質問をして、適切なものを選ぶ必要があります。アプリケーションの品質が保てるようなプログラムで開発するのは難しいと感じています。

2年以上の開発経験があり、いくつかのプロジェクトで結果を残している開発者の場合、慣れているプログラミング言語やフレームワークだと既存のコード補完で十分であり、Copilotへの質問のためタイピングすることや、返信を受けるレスポンスタイムに時間がかかり、逆に弊害になることがあるようです。

開発経験があり、1つ以上精通しているプログラミング言語がある開発者が、他のプログラミング言語を使って開発する場合は、有益かもしれません。
それは、その開発者が開発するアプリケーションの適切な仕様を理解することができ、Copilotへ要求や質問を適切にでき、Copilotからの提案を受けたものを動かしたり、その言語のリファレンスを確認して問題ないことが判断できるためです。

AIを使った開発では、ChatGPTからラフで大枠のプログラムを入手し、GitHub Copilotを用いながら既存のプログラムや仕様に合うように細々修正していき、テストコードも組み合わせてプログラミングを完成していくようなイメージを持っていました。ただ、今のGitHub Copilotはコード補完が少しアップグレードされた程度の印象しかなく、まだまだ提案されるプログラムの改善や、使い勝手など課題が多くあると思われます。

1ヶ月ほど使用した結果として、大体コーディング作業時間を0 – 5%ほど削減できれば良い方と答えた開発者が約半分ほどでした。また同様に約半分ほどが継続してCopilotを使用しないからこのサブスクリプションは不要と連絡がありました。会社ではコーディングの作業時間の予測と実績を記録していますが、使用前と使用後で大きな時間の変化はないため、印象と実績は正しいと判断しています。
開発者の業務はコーディングだけではないので、開発者の1ヶ月の作業が0 – 5%も下がるわけでもなく、画期的に開発コストが下がるという結果は得られませんでした。
あまり役に立たないと考えた開発者が50%ほどいたことから、今のままではCopilotはデファクトスタンダードにはならないと感じています。
ただ、CodeyなどAI code assistantの新しいサービスの開発が行われており競い合っていると思われます。そのため改善が行われていき、近い将来、人とペアプログラミングをしているような感覚で適切なAIのナビを受けながらコーディングを行う日がもうすぐ来るかもしれません。

残念なこと(おまけ)

GitHub Copilotの使い方を質問したところ、youtubeのページのURLが送られてきますが、アクセスするとページがありません。
また、どうやってヘルプを受けられるのかと質問をすると、GithubのcopilotのdocのどこかのページのURLが送られてきますが、404エラーになります。
特定のアプリケーションでhelpコマンドを用いて、実行したいコマンドの機能を理解をするというのは開発者にとってはよくあることですが、そういうことを想定されていないよう結果になっています。


​​// q: how to use the Github copilot?
// a: https://www.youtube.com/watch?v=Qp9T9Zj9jv8

// q: how to get help from Github copilot?
// a: https://copilot.github.com/docs/get-help/

Refer to

GitHub Copilot · Your AI pair programmer