STORES Product Blog

こだわりを持ったお商売を支える「STORES」のテクノロジー部門のメンバーによるブログです。

STORES でのGitHub Copilot Enterprise活用方法

2024年4月18日に『GitHub Copilot Enterprise 使ってますか? STORES での活用風景』を開催しました。イベントでお話した内容を文字起こし形式で紹介します。

hey.connpass.com

Copilot Enterpriseを導入した経緯

hogelog:簡単に自己紹介させていただきます。hogelogです。技術基盤グループでエンジニアマネージャーをしています。よろしくお願いします。

waniji:佐々木と申します、ハンドルネームはwanijiです。開発A本部サービスGTMグループ所属、STORES 予約 のエンジニアをやっています、よろしくお願いします。

phayacell:山下です、ハンドルネームはphayacellです。エンジニアで STORES ネットショップ や STORES レジ のエンジニアをやっています。機能開発がメインです。よろしくお願いします。

hogelog:まずCopilot Enterpriseを導入した経緯を簡単に紹介させていただきます。Copilot Enterpriseに至る前、GitHub Copilotが2023年に発表されて、すごく気になっていたわけです。しかし利用規約などから会社のコードベースで使うにはどうなんだろうという議論を社内でしていました。そういった折に、GitHub Copilot Businessが発表されて、会社でも安全に使えそうとなり、2023年3月にCopilot Businessの検証を開始しました。検証開始時、山下さんとかに使ってみてもらえますかみたいなお願いをしてましたね。使い始めた時の気持ちとかを覚えてますか?

phayacell:VSCodeを今も使ってるんですけど、別で使っていた自動補完よりも精度が高くて感動したことを覚えてますね。サジェスト優秀だなって感じました。

hogelog:山下さんや他のメンバーで検証した後、2023年4月から STORES 全エンジニア向けにCopilot Businessの展開を始めました。そこからからちょうど1年経ちましたね。

2023年11月のGitHub Universe 2023でCopilot Enterpriseが発表されて、なんかよさそうとなったわけです。2023年11月はちょうどいい時期で、GitHubもそれを意識してるんですかね? 予算策定がまだ終わっていない時期で、急ぎ予算を組みなおし2024年3月にGitHub Copilot Enterpriseを導入したという流れになっています。

GitHub Copilot Enterpriseにはお金がかかるわけで、もしかしてイベントに参加されている方でお金の説得はどのようにしたのかが気になる人が多いかもしれないんですが、そこはご期待に答えられなくて。経営層も開発速度を上げられるんだったら絶対にやったほうがいいという後押しをしてくれたので、スムーズに導入できました。検証でいい感触が得られていた上で、Copilot Enterpriseにも乗ったほうがいい流れだろうという判断ができました。

一番最初にCopilot Enterpriseを有効化したときの画面を記念にスクショしてました。2024年3月、先月ですね。まだ先月なんですが、有効化してあるのが当たり前な道具になっているので、今無くなると、面倒くさいなって気持ちになります。

アプリケーションコードの深堀りに役立つChat

hogelog:Copilot Businessに関しては、機能的にはほぼCopilot Individualと変わりはないので知っているところが多いかと思うんですが、Copilot Enterpriseについてはサイトを見ていただくのがいいかと思います。

github.com

比較表があって、プルリクエストのdiffの表示、organizationのリポジトリについて質問したり、organizationの中でナレッジを貯めていくことができるなど、Copilot Enterpriseになると強化される機能が多数あります。社内でどのように活用しているかにフォーカスしてお話しします。まずは山下さんから。これはどんな質問ですか?

phayacell:リポジトリに対してChatで質問ができるというサンプルです。こうなったらdirtyになりますかっていう初心者の質問をしたら、返答がわかりやすかったので、このスクショを持ってきました。

hogelog:オープンソースのリポジトリも対象になっていて、定義をしている箇所はどこですかって質問したりもできるんですよね。例えば、actionpack gemなどオープンソースのコードについて聞くこともできる。既存のオープンソースのライブラリに対しても聞けるので便利だし、社内のコードベースについても質問できます。

社内のコードベースについてChatで聞いているところをリアルタイムにデモをするためには、社内のコードベースを見せなきゃいけなくなるので、今日はスクリーンショットで紹介します。コードを深く理解していくときに非常に便利ですね。社内のアプリケーションコードについても質問したりしますか?

phayacell:しますね。サービスの運用歴が長くなると多機能になるじゃないですか。なんとなくこの名前を知ってるんだけど、このモデルってなんだっけなとか、この機能ってなんだっけとなった時に、 人に聞くよりCopilotに聞いた方が気兼ねないですし、リファレンス込みで探し出してくれるので、わかりやすいですね。

hogelog:最近あったのが、僕はRubyを普段書いていて、Goを今まで読み書きした経験が少ないんですね。社内にはGoで書かれたアプリケーションもあって、そのコードベースを読み解くときに、Goのエントリーポイントはどういうところに書いて、どういうふうにやっているのかみたいなよくわからないことを聞いて、どんどん問い詰めていけるので便利です。

phayacell:いいですね。

hogelog:社内の識者の時間を無限に使っていいんだったら、別にそれより精度のいい答えは返ってくるわけですけども。各アプリケーションの構造やどこで何をやっているっていうのを聞くのは、贅沢な時間の使い方になってしまう。Copilotだと気兼ねなく、聞き続けられるのはいいですね。

waniji:質問するにしても、何もわからずどう質問していいかもわからないっていう状態だと、有識者の時間を奪ってしまうので、最初の知識をつける第一歩目を踏み出すところでCopilotに聞いて、さらに深く理解する時に有識者に聞くという段階を踏めるところがいいと思うんですよね。

hogelog:Chatをそんな感じで活用していますという感じです。

Chat&Knowledge

hogelog:これもCopilot Chatなんですけど、ナレッジ機能を使ったやつですね。

phayacell:Slackのやり取りの中で「会員」という言葉を使わなくなったというやりとりがあり、なぜその決定になったのかが気になったのでCopilotに聞いたら答えてくれました。そして、みんなが感動している様子です。

hogelog:会員、ユーザー、ゲストといった言葉は、いろんなWebサービスで使ったりするけども、揺らいだりしがちですね。特に STORES は元々別のプロダクトだったものが STORES になった経緯もあり、元々の言葉、元々のアプリケーション内でのモデルでユーザーとされているものの概念が違ったりして、言葉を揃えていくことをドキュメントベースで割とやっていて、それがうまく答えられていました。

phayacell:「会員」という言葉をやめたってことをマークダウン形式のドキュメントに残しておいたら、参照してくれて、使わない理由まで教えてくれたので、ドキュメンテーションのモチベーションが上がる例でしたね。

hogelog:現時点での最新の知識をドキュメントに整理してることの価値がすごいあるなと思って。

waniji:本当ですね。ちょっとしたことでもドキュメントに書くことがすごく重要になってきた、ドキュメントの価値が爆上がりしてるなって思うことが最近は多くなってますね。ドキュメンテーションって後回しになりがちじゃないですか。でもみんな大事だと思ってるという共通認識があったと思うんですけど、Copilot Chatでいろいろ質問できるので、鮮度の高い情報をどんどん入れていこうというモチベーションも上がります。こういう意思決定したログがChatに出てくるのはいい例ですよね。

phayacell:ドキュメンテーションを書くモチベーションって上下が激しいなと思っていて、書きっぱなし、write onlyな状況になるとモチベーションは下がっていくじゃないですか。そこをreadしていくことで明らかにモチベーションを上げられる気がしたので、 めっちゃいいなってテンションが上がってますね。

hogelog:それなりに間違うこともあるんだろうなっていう感触もちょっとあるなと思って。ChatGPTでもハルシネーションがあるじゃないですか。GitHub Copilotもうまいこと言葉を綺麗につなげて、間を変に繋いでしまう時はちょっとある。なので、ちゃんと今の正しい情報をまとめておいたほうがそういう間違いが減るというか。

ChatのKnowledgeって今はリポジトリにコミットされているマークダウンファイルしか見ないんですよね。プルリクエストの情報やIssueの情報を見てくれないかなみたいな声もあったりするんですけども、いい感じに最新の情報をキャッチアップしてくれたら嬉しいなと思う一方、それってすごい難しくて、Issueって移りゆく情報じゃないですか。

waniji:そうですね。

hogelog:Issueってジャストアイデアだったりとか、決定した最新の仕様やナレッジが更新されてる場所じゃないので。プルリクエストやIssueよりもCopilotがちゃんと最新のナレッジだと思えるドキュメントを整備していくのが重要じゃないかなっていうのが、今のところ触ってる感触的にはありますね。

質疑応答パート1

hogelog:質問をいただいているので回答していきます。

「Q. 最新のライブラリについてのアップデート情報などを加味した回答ってどの程度最新まで反映されたりするんでしょうか?」

正直よくわからないですね。でも、リポジトリに質問をする場合は、基本最新のコードベースに沿って返してくれてるなという感触がありますね。Copilot Chatはどこの記述をベースに答えたかを教えてくれて、ソースを必ず示してくれる。これはChatGPTにはない、Copilot Chatが重要視しているところなんだと思います。

waniji:さっきのスライドの例にもありましたけど、ちゃんとソースのリンクが必ず出てるので、詳しいことはそこを見ればいいので、そこはいいですね。

hogelog:「顧客.md」っていう渋いマークダウンのファイルがGitHubのどこかに置かれているわけですが、実際見にいったら、これがちゃんとメンテナンスされてるリポジトリのドキュメントということがわかったりします。

「Q. Copilotを使う場合、コードアシストをしてもらう方が多いでしょうか?それとも、用語などの説明を聞くことの方が多いでしょうか?」

基本的にCopilot利用者各位はコードアシストを受けているのではないでしょうか。コードアシストを受けている自覚ももはやあんまりないですけど。もう忘れてません?

waniji:そうですね。テストを書くときに、コメントを書いたら続きを書いてくれるのが普通になってきました。

phayacell:サジェストを外されたら、生産力が下がりそうな感じがしますよね。

hogelog:Copilot Chatに関しては、今GitHub Copilot Enterpriseを始めたばかりで、GitHub Copilot Businessより(料金が)高いので、ちゃんと使い倒さなきゃと思って、積極的に使っています。今のところはCopilot Chat、KnowledgeなどのEnterpriseの機能は頑張って使ってますね。

「ハルシネーションしてるなって感じることはどれくらいありますでしょうか?」

感覚的にありますかね?

waniji:ちゃんとドキュメントには用語の説明を定義してるんですが、それをうまく拾ってくれないことはたまにありますね。質問の仕方がまずいのかちょっとわからないんですけど。

phayacell:拾えないことはありますし、間違っていることもありますけど、正しいかのように振る舞うことはないですよね。

waniji:今のところ感覚としてはないですね。

hogelog:ChatGPTだと、振る舞いとしては全部知っていて、いい感じに答えてくれるって感じですけどCopilot Chatは質問をいい感じの検索にして、引っかかった情報を集めていい感じに答えてくれる、そういうシンプルな振る舞いに倒してるのかな。なので、質問したことがうまく見つからなかったとか、ドキュメントの情報が古くて、それを拾ってる、そういったことはある。間のロジックを適当に埋めることは、あんまりないかもしれない。見つからなかった感はわりとありますね。与えてる情報の中にはその情報なかったかもなみたいなものもあったり。日本語で聞いてもうまく答えられなくて、英語で聞いたほうがうまく理解できるときはあったりしますね。

「Q.GitHubホストしているドキュメントの更新があった場合、最新版だけではなく、過去の履歴分も考慮して回答してくれるのでしょうか?」

過去の履歴分は考慮してない気がします。僕らは一利用者なので正確な回答かはわからないですが、していないんだろうなと思います。

「Q.Enterprise版を使って特によかったなと思った所はどこらへんでしょうか?」

今お話している通り、KnowledgeやChatは非常に便利だなと思ってます。

「Q. 社内でGitHub Copilot以外に利用している生成AIはありますでしょうか?」

社内でChatGPT Teamを利用しているところがあります。全社的にChatGPT Plusの利用検証をしたこともありましたが、現状は必要なチームがチームライセンスを導入しています。あと一部Amazon Bedrockを触ってみたりしています。

「Q. コードアシストは皆さんVSCodeで使ってるんでしょうか?」

VSCode が多いような気はします。

waniji:VSCodeがかなり多いですね。

hogelog:VSCodeが多いのと、JetBrains 製品の RubyMineやIntelliJを使ってる人は多いですね。私自身はRubyMineを使ってます。Cursorは全社導入は今のところはしていないです。CTOは今Cursorに夢中ですけどね。 AI First Code Editorと謳っていますが、良いという話だけ聞いていて、使い倒したほうがいいのかなとか思っています。CTOが夢中になっているので、必要になったら言い出すかなと。

Knowledge basesの活用

hogelog:一旦進みます。次は、Knowledge basesの活用ですね。

waniji:はい。STORES 予約 のチームでCopilot Enterpriseの話が出たときに「Knowledge basesが作れるんだ」ってすごい湧き上がりました。STORES 予約 のチームではScrapboxに技術的なドキュメントをまとめていて、このままだと使えないんじゃないかという話があったんですけど、Knowledge basesに対する期待がすごいんですよ。これは未来だ、これでどんどん機能がいっぱいリリースできるぞってエンジニアリングマネージャー、プロダクトマネージャー、エンジニアも湧き上がったんで、 どうやって集約できるかっていうのを考えました。一旦ドキュメントのリポジトリに入れてみようという流れになりました。

でも結構な数のドキュメントがあるんですよね。それをどうやって入れようかとなったんですけど、マークダウンに変換するスクリプトを書いて、とりあえず入れて試してみることになりました。しかもこの変換スクリプトもChatGPTに書いてもらったので、フルで生成AIを使ってました。Copilot Enterpriseを全社で導入した日にスクリプトを書いて変換して、その日に全部リポジトリに投入したので、ここのスピード感はすごかったですね。熱量から来るスピードっていうのが大きかったのかなと思います。

実際にこれを使ってどれだけいい感じに回答が返ってくるかの例なんですが、あまりに内部の実装や仕様の話をしてるので、モザイクだらけになりました。STORES 予約 のモデルがいくつかあって、何パターンかあり、使い分けもあり、複雑なので、新しくチームに入った人が理解する時の障壁になってたんですよね。けど、このKnowledge basesを使うと、このモデルであるこれこれを教えてって聞いたら、詳しく教えてくれて、リファレンスも表示してくれる。4月は入社される方が多くて、オンボーディングをすることも多いんですけど、それまでにこういう質問をしたらわかりやすいよとか、こういう回答を返してくれるという知見も得られて、かなりいい感じになったと思ってます。

hogelog:モザイクの量からすると、こういう情報って内部で作り込まない限りはChatGPTは答えてくれないような情報ですよね。

waniji:そうなんですよ。

hogelog:別にCopilot Enterpriseじゃなくてもできるのかもしれないですが、ChaptGPTや社内用のモデル、社内用の検索ベースをあれこれやってと、実現するにはそれなりの努力が必要になりそうですね。Copilot Enterpriseだとマークダウンを特定のリポジトリに全部入れただけで実現できる。

waniji:本当にそれだけですね。

hogelog:期待していたKnowledge basesがそれだけで出てきたと。

waniji:既存のドキュメント資産を活かせたいい感じの事例になりました。

hogelog:今も活用されていて、新しく入ってきた人も、そこに聞いていると。

waniji:ですね。

Copilot Suggestions

hogelog:Copilot Suggestionsを一番最初に検証した時の声です。 検証導入後、一カ月ぐらい使ってもらった後に、社内の人たちのなくなったら残念ですという声を上げているスクショです。

生産性が上がりましたかという質問に、慣れてない言語に対する開発効率の向上はすごいあるっていう声が多かったですね。 一番上のコメントは僕なんですが、普段GoとかPythonをそこまで書いてないのでCopilotを使って書くと、楽でした。phayacellさんもバックエンド軸足でやっていたところから、フロントエンドもやることになったタイミングで使ってもらいました。どうでしたか?

phayacell:テストを書く時に楽だなと思いました。言語が読めて、うっすら書ける時の一番の課題ってテストをどう書くかなんですね。既存のコードを見ても、昔書いたテストはこうだけど、最近だとこうみたいなと差があったり。その中でサジェストしてもらえると、これっぽいっていうのを出してもらえるので、補助輪をひいてもらえて助かりました。

hogelog:そのようにありがたいという声がたくさん集まりました。プロトタイプをがっと書くのにも便利だったりとか、職能越境の武器と言われていたり。

これは回答を誘導しているような質問ですけど、「転職するとしたらCopilot for Businessがあるか気になる?」という。Copilot BusinessやCopilot Enterpriseを導入しているかどうか、転職時に気になると思いますか?

phayacell:気になりますね。

waniji:もう当たり前になってしまってるから、なくなった時に気付くかもしれないですね。

phayacell:なんか調子悪いなって感じになりそうですね。

hogelog:今あって当たり前のものになっているので、これのおかげで効率があがっているという感覚をすでに忘れてはいるんだが、ないとめんどくさいと感じる。CopilotをセットアップしてないVimで何となくコードを書き始める時があるんですけど、あー補完されないんだってなったりします。

新人の教育にも。物知りな先輩として使えるGitHub Copilot

hogelog:途中でデモ的なものをお見せしましたが、教育にも役立つというのを紹介します。現状、STORES ではGitHub Copilotの利用は申請制なんですが、エンジニア職種だと申請後すぐに利用できます。新しいメンバーが入ってきて、そのプログラミング言語に慣れていないこともあるわけですが、そういった方にも困った時にはCopilotに聞いてもらえれば、物知りな先輩として使いやすいかなと思っています。

プログラミング言語をやり始めた時って、当たり前にやっていることもよくわからなかったりすると思うんですね。何がわからないのかもよくわからないことがありますが、Copilotだとひたすらに質問し続けることができる。

それを人に質問するのだと、そんなに質問してもいいのかなと心配になると思うんですけど、Copilotだとひたすらに聞きまくっても何の罪悪感もない。この春、大学などを卒業して社員になった人もいるんですが、新入社員の教育の中でもひたすらCopilotを使うというのを強く推奨しています。

質疑応答パート2

hogelog:質問をいただいているので答えます。

「Q. マークダウンドキュメントの新規作成や更新はどのように行っていますか?定期的に手動でリポジトリに追加、更新してるのでしょうか?うまいこと自動化されてますでしょうか?」

wanijiさんが話してくれていたのは、Scrapboxから一気に取り込んだのは、アドホックな実行なんですかね?

waniji:そうですね。一旦アドホックにやってみて、どれだけ価値があるのかを検証しました。今貯めてるドキュメントの中には古い部分もあったりします。あと定期的に質問しなくても、参照しないものとかもあるよねっていう気づきもあって。今、Scrapboxは書きやすいので共同編集で使っていて、そこから高頻度で参照されるものをマークダウンで書いて、リポジトリに入れる運用になっています。

hogelog:他のところでもだいたいそんな感じです。GitHubに直接追加、更新をして、GitHubをベースにやっていこうかとだんだん寄せているかなという気はしますね。

waniji:そうですね。

hogelog:先ほどお話したように、Knowledge basesをちゃんと活用するためには、最新の情報がそこにある状態を作ったほうが良さそう。情報の性質が違うのかなと思っています。Scrapboxや STORES 社内だとesaも使ってたりするんですけども、そういった共同編集に強い、時々のスナップショットの情報を載せていく場所と、GitHubのKnowledge basesに貯めていく情報は性質が少し違う。Knowledge basesとして最大限活用するためには、定期的にどこかと自動連携するのではなく、GitHubにしっかりコミットしていくぐらいの感じでもいいのかなと。今のところ手動でやっていますね。

「Q. GitHub Copilot Enterpriseを導入して、効率が〇倍くらいになったとかありますでしょうか?」

Copilot Enterpriseで効率が何倍になったという数字的なものは、残念ながら取れていないです。Copilot Business、Copilot Suggestionsに関しては、国内でもいろんなところが定量っぽい数字を出していますね。ちょうど昨日マネーフォワードさんがブログ記事を出してましたね。ああいった数字をCopilot Enterpriseで出すのはさらに難しいかもなと思ったりしました。

「Q. 少数であってもCopilotに対してネガティブな反応はありましたか?」

ネガティブな反応は特になかったです。使えるのかな、便利なのかなみたいな声は多少あったかもしれません、別にいらないかなと判断をしている人がいるかもしれないです。実際、全エンジニアが使っているわけではないです。特にiOSエンジニアの人は、iOSの開発ツールの中で公式なCopilotのサポートがないのでモチベーションがないのかなと。

おっと「iOSも意外と良いですよ!!」「iOS エンジニアは Ruby を書くときに活用してますね。あと VSCode でコードを開くと補完してくれます」と STORES 社員のiOSエンジニアの声がコメントに届いてますね。最初の頃はいまいちうまくいってないという声がありましたが、iOSも最近良くなったみたいですね。SwiftもVSCodeで開くことができるので、そういう活用方法があるんですね。iOSに限らないんですが、Copilotはテキストが得意なので、テキストベースの開発に倒していくと、Copilotの回答性能が高くなったりするのかな。

「Q. リポジトリ内の画像検索なども支援してくれますか?」

画像検索は今のところ、全くないんじゃないかなと思います。

チーム力が上がるきっかけになった

hogelog:そろそろ時間なのでクロージングに入ります。wanijiさん、phayacellさん、Copilot Enterpriseの感想をいただけますか?

waniji:Copilot Enterpriseですごい優秀なドメイン知識の回答者ができたっていうのは大きいんですけど、それの副次的な効果でドキュメントの価値が上がって、みんな積極的に書いてくれるようになったのが、すごくいいと思っています。相乗効果でチーム力が上がるきっかけになったので、これからも活用しつつ、改善していきたいなと思っています。

phayacell:途中で話していた通りCopilot Suggestionsが当たり前になっていて、ChatやKnowledge basesに関しても当たり前になっていくのかなと感じています。なくなったら嫌だなというか、必須になっていくと思うので、活用を頑張っていきたいです。Enterprise Planの機能の強化も今後進んでいくと思っていて、プルリクサマリが今よりよくなったらいいなと思ってますね。

hogelog:プルリクサマリに出してくれるのが、コードの差分の解説って感じなんですよね。プルリクエストに書きたいのってコード差分の実直な解説よりも、もう一個上のレイヤーのなんでその変更をするのかを書きたい。コードを書くだけでプルリクが自動でできるようになったという期待値には今のところなっていないですね。diffのサマリって感じです。でも、phayacellさんも言及してくれていたように、期待が持てるし、今後もどんどん改善されていくとGitHubからの広報もあるので、今後も活用していくぞという気持ちになれる製品かなと思います。

今度『Ebisu.mobile』というモバイルアプリケーションのイベントがあります。こちらでもCopilotについてのお話があるので、モバイルにフォーカスした話を聞きたい方はご参加ください。

product.st.inc

本日はご視聴いただきありがとうございました。(完)

【宣伝】イベント情報をXでチェック

STORES では、さまざまなイベントを開催しています!イベント情報はX @storesinc_tech で投稿していますので、ぜひXをフォローしてください。