GitHub Copilotの機能はコーディング支援にとどまらない
GitHub Copilotはいち早く「Copilot」を冠することになったプロダクトだ。業務に生成AIが有用であることを証明し、エンジニアの開発生産性を急速に高める契機となった。開発でコーディングするエンジニアなら、GitHub Copilotまたは何らかの生成AIを日常的に使用していることだろう。
GitHubの調査によるとGitHub Copilotは開発業務を55%高速化し、コード品質を15%高めるという結果が出ている。生産性向上は疑いの余地がないところだ。ただしソフトウェア開発のための作業はコーディングだけではない。エンジニアの業務時間のうち、コーディングを中心とした開発作業は25%程度。それ以外の75%は調整のための会議、資料作り、リサーチなどに費やされている。
ギットハブ・ジャパン シニアカスタマーサクセスアーキテクト 服部佑樹氏は「ありがたいことにGitHub Copilotは多くの方に使われていますが、Visual Studio Codeのプラグインで終わってはいけないと分かっています。GitHubがソースコードホスティングのプラットフォームから、いかにAI駆動の機能を埋め込んでいくかが勝負どころだと思っています」と話す。
具体的には、まずGitHub Copilot EnterpriseがGAで提供されていて、他にも「モデルのファインチューニング」や「GitHub Copilot Extensions」が限定公開されている(詳しくは後述)。服部氏は「いまGitHub Copilotが進んでいる世界は従来のエディターから飛び出て、いかにソフトウェア開発ライフサイクルに行くのか。エージェントとしてアクションをするか。こうしたものを担うAIをターゲットとしています」と説明する。
なおAIというと、プロンプトエンジニアリングが想起されがちだ。しかしGitHub Copilotではツールの使いこなしや、自分の開発対象となるコンテキストにAIをどう駆使していくのかがテーマとなる。プロンプトエンジニアリングとは少し違う世界だ。
プロンプトエンジニアリングが特に求められる場面というのは、例えばユーザーからの問い合わせに回答するチャットボットで安定した精度や品質が求められるところや、何らかのファンクションコールをする場面で正しいものをコールできるようにするところになる。
一方、エンジニアの作業は「1回きりの作業で創造性を含むものが多い」と服部氏。そうした時にAIに求めるものはモデルとしての精度は重要ではあるものの、それだけではない。ツールがどれだけ実用的かが重要になる。
例えばGitHub Copilotのエディターでコーディングしてコード補完で20秒待たされたら集中力が切れてしまうし、精度の高い回答を求めてチャットウィンドウに切り替えたのに精度が低かったらがっかりしてしまう。つまりそれぞれのツールごとに期待値が異なるため、GitHubでは期待に合わせてAIモデルを使い分けることもしている。
2024年7月時点では、自動補完型(GitHub Copilot)では速さ優先でGPT-3.5 Turbo、ボット型(GitHub Copilot Chat)はGPT-4o、エージェント型(GitHub Copilot Workspace)はGPT-4oを主に使用することにしている (言語モデルはGitHubの開発チームにより適宜評価され、機能に最適なものが選定される)。
コードレビューにドラフト作成、進化した新機能を見てみよう
これまで生成AIというと、いち早く登場した自動補完型のイメージがあるためか、最近登場したエージェント型となるGitHub Copilot Workspaceで「誤解のようなものがある」と服部氏。例えば「ERPの大量の設計書を投げたらすべて実装してくれるのだろうか」という感じの期待だ。それはちょっとずれていて、服部氏は「開発者がすべき1つひとつの判断において、文脈に合わせてアクションを起こすのを楽にできるか」がこれからのGitHub Copilotの特徴になるのだという。
例として、服部氏はGitHub Copilot Enterpriseの新機能となるコードレビュー機能(現在プレビュー版)について言及した。GitHub Copilotがプルリクエストに対して、差分を見て、概要を把握してレビューするエンジニアを支援する。つまりGitHub Copilotがそれぞれの場面ごとに、文脈を理解してエンジニアの作業を助けていくようになっていく。
GitHub Copilot Workspaceも同様だ。デモではGitHub Copilot Workspaceを使い、サンプルの電卓アプリに新機能を追加していくという流れを見せた。まずはGitHubイシューで書き始めるところは同じだ。これまではクローンしてブランチ切って……という流れが主流だったかもしれないが、GitHub Copilot Workspaceではたたき台を作成した上で調整していく流れになる。
ドラフトを作成してもらうものの、やはり「Copilot」の名の通り、副操縦士としてエンジニアの補佐をするところがポイントだ。都度エンジニアにインプットを求めるところが特徴的だ。
服部氏は「結局のところAI時代の人間の役割は意思決定なので、それぞれの場面で方向性を間違えていないか確認しなくてはなりません」と話す。ロジックやアルゴリズムが絡むところ、既存のコードと整合性を合わせるところなどは、エンジニアがパイロットとなり、GitHub Copilotと相互作用しながら開発していくというのが近未来の姿と言えそうだ。
今回のデモは電卓アプリにべき乗の計算をする機能を追加するというシンプルなものだった。現実的にはコードがどれだけ端正に書かれているかという問題はあるものの、最初のとっつきやすさが大きなメリットと言えそうだ。イシュー作成の画面にて、日本語で要件を書いてドラフトを作成してもらうことになるので、とっかかりの部分でエンジニアの工数を下げることができそうだ。
これからのGitHubはこれまで紹介してきたような新機能だけではなく、GitHub CodespacesのようにプラットフォームでVisual Studio Codeを起動したり、GitHub Actionsでビルドしたりするなど連携が進む。そうなるとGitHub Copilotはコードエディターを越えて、AIが介在しながら機能連携していくことで、アプリケーションの開発からデリバーまで行うような世界になっていく。
いたるところに広がるAI機能、これからの開発者に求められることとは
次はGitHub Copilot Extensionsだ。これはユーザーがIDEやGitHubを離れることなく、任意のサードパーティーのツール、データベース、サービスを統合するものだ。服部氏は「GitHub Copilotが学習された知識のモデルに依存するのでは最終的には開発生産性は頭打ちになってしまいます。そのためオープンソースや専門的な知識など、それぞれのエンジニアがそれぞれの開発現場で必要なツールや知識をどのように引き込んでいけるかにチャレンジしています」と話す。
例えばDockerファイルがないリポジトリがあるとすると、ユーザーがチャットに「Dockerファイルを作って」とリクエストすればGitHubがDockerファイルを作成し、プルリクを投げるところまでやってくれる。
服部氏は「エージェントというものが何をもってエージェントたらしめるかというと、アクションなのです。質問にテキストで返答するだけではなく、アクションでワンステップ先に進んでもらうところが次のAI駆動の機能になります」と言う。
こうした機能は主にGitHub Copilot Enterpriseに実装され、それぞれの処理や作業のなかで自然言語で入力して対話するような形で進んで行く。単純な機能ではないので、「それぞれのツールで何が重要かを定義して、AIモデルの選定やレスポンスを設計するなどを細かく実装しています」と服部氏は説明する。
今後はGitHub のプラットフォームにAIがさらに組み込まれていくことになるが、どの機能がどのようなことができるのかをよく理解して、うまく使いこなしていくのが重要になりそうだ。もちろんユーザーが手動でやるべき部分もある。服部氏はたとえとして「移動手段と同じで、全工程を新幹線または自動車で行けるかというとそうではありません。やはりどこかで徒歩も必要になります。現状のAIツールもそれと同じで、GitHubは最もうまくいく方法を探っているところです」と話す。
今回の講演は20分という短時間だったため、紹介できるものが限られてしまい他にもメトリクスのAPIなど開発が進行/計画中のものもある。要所で適切に開発の生産性を高められるものを提供しており、適材適所で使いこなしていくといいだろう。
最後に服部氏は「AIネイティブ開発では、エディターだけではなくポイントごとにAI機能が散らばっていくということが理解していただけたら幸いです。GitHub Copilot Enterpriseだけではなく、いろんなユースケースでAIを使っていただけるように今後もいろんな機能を実装していきますので、ぜひ楽しみにしてください」と力強く述べた。
11月27日開催!GitHub Universe Recap 東京
GitHub CopilotがAIコードアシスタントの分野で業界を牽引し、ソフトウェア開発の生産性を向上し参入障壁を下げる存在となった今年も、10億人の開発者の実現に向けてGitHubは技術革新と開発者エクスペリエンスの改善を続けています。前年に引き続き2回目の開催となる本イベントでは、10月に米国サンフランシスコで開催の年次開発者カンファレンス、GitHub Universeから注目の発表や新機能を日本語でご紹介します。ぜひイベント登録ページをご確認ください。