GitHub Copilotによる技術革新と未来のエンジニアリング

技術・デザイン

生成系AIの台頭とツールの浸透により、私たちは時代の変化の真っ只中にいます。そしてGitHub Copilotによって、開発ワークフローには大きな変化がもたらされています。先日サイバーエージェントでは「GitHub Copilotで変わる開発文化の現実」と題したイベントを開催しました。こちらでは特に好評いただいたパネルディスカッションの内容を編集してお届けします。

Profile

  • 【モデレーター】
    服部 佑樹氏
    GitHub Japan
    主にGitHubの企業向けの技術的な支援を実施。日本国内において GitHub Copilotの普及を積極的に推進している。また、オープンソースの文化やプラクティスを企業内に導入し、企業のサイロを解消する「インナーソース」の普及にも力を入れている。この活動を通じて、非営利団体であるInnerSource Commonsファンデーションのボードメンバーを務めており、インナーソースの世界的な発展に貢献している。

  • 【ゲストスピーカー】
    髙橋 健一氏
    GMOペパボ株式会社
    2014年入社。技術基盤チームにて様々なサービスの課題解決に取り組んだ後、EC事業部シニアエンジニアリングリードとしてカラーミーショップの開発に従事。2021年CTO室技術責任者に就任。全社の技術組織のマネジメントの一環として、GitHub Copilotの導入をはじめとした開発生産性の向上に取り組んでいる。余暇はメトロシティでストリートファイトに明け暮れる日々。

  • 【ゲストスピーカー】
    黒瀧 悠太氏
    GMOペパボ株式会社
    2012年4月よりGMOペパボ株式会社に入社、ソフトウェアエンジニアとして複数のWebサービスの開発を担当、現在はシニアエンジニアリングリードとしてSUZURIの開発およびエンジニアリング組織のマネージメントを担当。GMOインターネットグループのデベロッパーエキスパートとして次世代IoTシステムの研究活動も行っている。

  • 【スピーカー】
    黒崎 優太
    所属:サイバーエージェント AI事業本部
    2015年新卒入社 AI事業本部 協業リテールメディアディビジョン 兼 CTO統括室所属。バックエンドの実装やインフラ、セキュリティを担当。趣味で中古サーバやネットワーク機器を買ってデータセンタに設置して運用。

GitHub Copilotで上手くいくこと、上手くいかないこと

服部氏(GitHub Japan)
本日は、日本でGitHub Copilotを積極的に活用しているトップランナーの皆さまと「GitHub Copilotの活用実践」「エンジニアのAIとの関わり方」「技術革新と組織文化の融合」といった3つのテーマについてお話していきたいと思います。早速ですが「GitHub Copilotの活用実践」について、それぞれどんな状況でしょう?

高橋氏(GMOペパボ)
GMOペパボでは、サーバーサイドエンジニアがフロントエンドを書いたりするケースも日常的にあります。GitHub Copilotは、そういった場面で非常に上手く機能することを実感していますし、現場からも声があがっています。

GitHub Copilotから出てくるコードについて、現時点では ”100%良いコード” とは言えないので、専門性の高い人へのレビューは必須ですが、とりあえず書き始めるだったり、プルリクエストを出すみたいなところまではすごく早くなった印象です。

黒瀧氏(GMOペパボ)
確かにそうですね。普段RubyやGoでサーバーサイドをメインで開発しているエンジニアが「経験のないTypeScriptやVue.jsをGitHub Copilotに助けてもらいながらフロントエンドに挑戦してみたところ、プルリクエストまですぐに出来ました」と言っていて、凄いんだなと思いました。

服部氏(GitHub Japan)
我々もGitHub Copilotを現場の方がどのように上手く活用してくださっているのか、非常に注目して見ているところです。というのも私たちからすると、何をもって生産性が上がったのかって、非常に分かりにくい部分でもあるので。

サイバーエージェントさんは、国内で最も利用者数が多い企業ですが、GitHub Copilotでまだ上手く出来ない部分はどんなところでしょうか?

黒崎(サイバーエージェント)
機能的な部分はいくつかあると感じていて、どうしてもコードにコンテキストが現れないようなもの。例えばインフラでTerraformとかだったら割と反映されやすいけれど、管理外のリソースが混ざってたり。バックグラウンドとしてGitHub Copilotが知りようがないコンテキストが入ってたりすると、そこの推薦ってうまくいかないので、何かしら文脈を入れられるといいなと思っています。

あとは言語によって精度に差異はありますよね。当社における言語別の数字を見ると、TypeScriptやGoは推薦が効きやすい印象です。私自身は広告系のプロダクトでScalaを書いてた時期もあるのですが、関数型言語や相対的に書く人の母数が少ない言語になると、少し推薦の精度が弱いと思うことはあります。

これは私の推測ですが、関数型言語だとコード的にはすごく抽象化されるので、コードの中にコンテキストが近いところに現れなかったり抽象化され、同じコードでも文脈によって補完が効きづらそうだなと感じることはあります。

服部氏(GitHub Japan)
ありがとうございます。それは社内でも議題にあがっており、プロンプトなどで補給をできないかという議論が行われているところです。

ちなみにテンプレートですが、OSS の Open Interpreterをデバッグモードでやると、プロンプトが見えるらしいのです。やっぱり誰がどうプロンプトを書いてるのかって、レビューだと見えづらいので、それをどう社内で共有して、良いプロンプトが書けるようになるのかっていうところも肝かもしれないですね。

今後GitHub Copilotに欲しい機能や期待している部分はどんなところでしょう?

黒瀧氏(GMOペパボ)
音声でGitHub Copilotと対話が可能になる「Copilot Voice」がこの先リリースされると拝見して、すごく楽しみにしています。

ペアプロを行うとき、話しながらやることも多いと思うのですが、人と人でコードを書いている中で、GitHub Copilotに ”この行に飛んでこういうことをやって” などの命令ができるサンプルが書いてあって、今後のペアプロはエンジニア2人とGitHub Copilotの3人でのコラボレーションになるのではとワクワクしています。

高橋氏(GMOペパボ)
私は主にプロジェクトの進行を見ることが多いので、GitHubのProjectsやIssueとか、プルリクみたいなところへのインテグレーションが、これからどういうふうに進化していくのかをとても楽しみにしています。

黒崎(サイバーエージェント)
私もプルリクエスト作成時に説明文を自動生成してくれる機能「Copilot for Pull Requests」に注目しています。現状でもlinterを入れることでプルリクエストを出した瞬間に一通り指摘されそうなものは洗い出せるとは思うのですが、それよりもう一段抽象度が高い指摘をもらえたらとても効率化になるだろうと思っています。

他社のツールだったかもしれないですけれど、コードのエラー・実行時のエラーを検知して、それをAPMでトレースして、そこに対して修正の提案を行うものもあったりして、単に書くだけでなく、実行時の情報を拾って能動的にコードの提案をしてくれるということが加速すると、開発サイクルが上がって良いだろうなと期待しています。
 

AIの進化でエンジニアに求められるスキルはどう変化する?

服部氏(GitHub Japan)
続いてのテーマは「エンジニアとAIの関わり方」です。

生成AIの登場によって、エンジニアやエンジニア組織はどのように変化していくのかって、皆さん各社でも議論をされていると思うのですが、いかがでしょう?

黒崎さんにお伺いしたいのですが、エンジニアがAIと協力して新たなアイデアを生み出すための効果的なアプローチだったり、潜在的な力を引き出すためのスキルはどのように学んでいったらいいと思いますか?

黒崎(サイバーエージェント)
私自身も、まだ使いこなせている立場ではないので、試行錯誤中という状況です。

具体的な作業をGitHub Copilotのようなツールが代替してくれることは非常に助かっているので、その分私自身はもっと新しいことを考えたり、0→1を生み出す部分に時間を割きたいと思っているところです。それすらをAIに奪われてしまうと仕事が楽しくなくなってしまうので(笑)、そうならないように自分の発想を強化していく必要があると思っています。

服部氏(GitHub Japan)
本質的な仕事に集中できるっていうようなところですよね。GMOさんはいかがですか?

高橋氏(GMOペパボ)
スキルという意味では、まだやっぱり今のAIには限界があると思っています。一方で状況は日々進化しているので、固定概念を持ってはいけないという思いはあります。今のGitHub Copilotにはどういったところまで任せられるのかだったり、他のAIツールに関しても、それぞれの得意・不得意を把握する力が、今のタイミングだと重要そうだと感じています。

且つそれを活用するとなると、やっぱり今はLLMのような自然言語をいかに上手く扱うか、という部分にフォーカスされているので、エンジニアとしては言語化能力や、それを正しく人・AIに伝える力みたいな部分は、今まさに必要とされるスキルなのかなと。

服部氏(GitHub Japan)
黒瀧さんに質問です。GMOペパボさんの中でGitHub Copilotを浸透させていくにあたり、社内ではどんな反応でしたか?また個人のスキルセットがどう変化していくのか?といった話はありましたか?

黒瀧氏(GMOペパボ)
社内でも色んな声があがりましたね。今までの個人のスキルが活かせなくなってしまうのではないかだったり、コードそのものを書くプロセスが好きなエンジニアはGitHub Copilotが登場したことによって、コードを書く楽しみが奪われてしまうんじゃないかと不安に感じたことがある人もいるようです。けれど上手く共存することで、自分の表現の幅が広がると前向きに捉えている人も多かったです。

スキルセットやキャリアを考えた時には、今後はどこに行ってもAIが組み込まれていく時代になることは間違いないので、AIを使いこなすスキルは誰もが持つべきだと思います。

AIを生み出すベースのエンジニアリングを極めるのか、色んなツールやSaaSを上手く組み合わせてビジネスを作る人になるのか、色んなキャリアパスがあると思うので、それぞれが目指す方向性が決まっていけば良いかと思うのですが、今はまだ模索している人が多い印象です。

服部氏(GitHub Japan)
サイバーエージェントさんはいかがでしょうか?

黒崎(サイバーエージェント)
サイバーエージェントでも毎週のように議論を重ねています。当社では4月以降GitHub Copilotの活用を社内で推し進めてきて、国内で最も利用している企業だと聞いています。この半年、組織的に頑張って試している中で、現時点でGitHub Copilotが人に置き換えられるほどではないですが、大きなターニングポイントであることは実感しています。

GitHub Copilotを使いこなすことで、プログラミングの経験が浅い人でも、それなりに業務で使えるアウトプットが出せるとなると、若手の育成方法も変えていかなければいけないし、採用基準も変える必要がありそうだとか。まだ結論は出せていないですが、各管轄のCTOたちと日々意見を交わしているところです。
 

AIがソフトウェアデザインや組織を変えていく可能性はあるのか?

服部氏(GitHub Japan)
AIを導入していくにあたって、組織としてどういう文化を育んでいったら良いのでしょうか?

高橋氏(GMOペパボ)
直接回答になるかちょっと分からないんですけれど、GMOペパボではAIを活用するということがベーシックなスキルになっていく前提で、いろいろな取り組みをやっています。例えば弊社ではSlackbotを使ってOpenAIのAPIを利用して自由に質問ができるようになっています。また、そこでどんな質問がされてどんな回答があるのかを誰でも見れたりします。

この狙いとしては、日常業務の中でAIを上手く活用しながら仕事を進めていくことが当たり前なんだということを広める活動の1つだと私は理解しています。

黒崎(サイバーエージェント)
これはエンジニアに限った話ではありませんが、最近は全社をあげて「生成AIを活用した業務効率化・生成AIを活用して生み出せる新たな価値」が何なのかアイデアを求められています。

業務効率化については、各部署ごとにひたすらアイデアを出して検証することを繰り返していて、本当に今みんな探り探りやっているという感じです。

服部氏(GitHub Japan)
GitHub CopilotのようなAIが開発生産性の向上だけでなく、ソフトウェアデザインや組織を変えていく可能性はあるのでしょうか?

黒瀧氏(GMOペパボ)
思いつくところは、システムの設計等でAIをベースに考えた時に、ここは全部自律的に動いてくれた方がいいみたいなところは、AIに任せたコンポーネントを立てていっても良いのかと思っています。

自動でスケーリングする、その状況によって勝手にアップデートしてくれる、アップデートしたら自動的にテスト・検証・信頼性の評価が行われる、というあたりまではAIの領域で実現できそうだなと思っています。

組織に関してはこれまでのチーム構成にAIが1人としてカウントして追加されるようになるのでしょうか。PM・エンジニア・デザイナー・AIの4人チームです、みたいな。

黒崎(サイバーエージェント)
一時期、マイクロサービスとかが流行って、今はモノリシックな方に流れがきて、モジュラルモノリスとかそういうものも出てきて、集める方にまた来てると思うんですけれど、もしかしたらまたマイクロサービス的な分散させる方向に行くのかなと思っています。

というのも、関数などのパーツパーツがそれぞれきちんと独立して動いてるっていうのがうまくできてるの場合に、その関数一覧などをCopilotに渡すことでプロンプトでいい感じのJSONの入力に対していい感じのJSONのレスポンスしてくれみたいな、雑なプロンプトを書くだけで、もしかしたらAPIが出来る可能性があるのかな。

コードを書くことを補助してもらうというより、それぞれの部品を人間が提供して、上手く組み合わせるところをAIにやってもらう。そうするとAPIを実装することなく、それっぽいものが作れてしまうかもしれないですし、そうなった場合はもしかすると、またマイクロサービスの流れが来るかもしれないなと思ったりもします。

服部氏(GitHub Japan)
本日はGitHub Copilotを活用してくださっているお三方より、たくさんのヒントをいただきました。ぜひ皆さんもGitHub Copilotを使いながら、未来がどう変化していくのか、といった議論を引き続き繰り広げていただけると我々も幸いです。本日はご参加いただきありがとうございました。

パネルディスカッション「GitHub Copilotで変わる開発文化の現実」(サイバーエージェント、GMOペパボ、GitHub Japan)~ GitHub Copilotで変わる開発文化の現実 ~

この記事をシェア

オフィシャルブログを見る

記事ランキング

WebパフォーマンスのExpertsが目指す 持続性の高いWeb開発

技術・デザイン

Page Top