本稿はJCB Advent Calendar 2024の12月7日の記事です。
アーキテクトチームの長沼です。
JDEPでは、開発にGitHub Copilot Business(以下、特段の記載ない場合は「Copilot」と省略)を導入しています。
この導入の取組について、2024年11月6日に行われた Microsoft Developer Dayで、「金融事業会社におけるGitHub Copilot導入の道のり - JCBのPoC〜活用」と題して登壇させていただきました。
発表内容は次の3部構成となっており、当日は時間の関係で十分に説明できなかった部分も含めて、それぞれ記事で振り返ろうと思います。 興味持って頂けたら最後までお付き合いいただけると嬉しいです。
- 上巻/背景編: GitHub Copilotを導入するに至った背景
- 中巻/リスク編: GitHub Copilotを利用するうえでのリスク検討
- 下巻/効果編: GitHub Copilotの効果
本記事では下巻として、JDEPで行ったPoCによる効果の測定方法や結果について紹介します。
PoCと評価方法
Copilot導入にあたり、下図のように2回のPoC(PoC-1とPoC-2)を実施しました。
以降では、それぞれどのようなPoCを行ったのか、またどのような結果を得たのか、について紹介していきます。
PoC-1における評価(アンケート)
1回目のPoC(PoC-1)として、15ライセンス程度を用いて小規模な開発に対して短期間(準備を除くと実質3週間程度)のPoCを実施し、効果を評価しました。
効果評価方法は、PoC実施後、開発者へのアンケートを行うことで計測しました。
実際に行ったアンケート(抜粋)が下図左側となります。 例えば、Copilotの提案が期待に合っていたかや、開発者の体感でどの程度の時間的効果があるか、を質問しています。
このアンケート結果を上図右側に示しています。
アンケートとその後のヒアリングを通して得られた結果や考察が以下となります。
- 効果がCopilot利用料を上回り、その分高難度タスクの検討や新しい開発に着手できる。
- 単純作業の削減や新たな気づきを得られるため、全体的には良い効果がある。
特にNovice(初学者・初心者)な開発者にとって、Copilotの支援は有用に感じている。 - 一方でExpert(熟練者)な開発者によっては、自分で実装した方が早い(提案を邪魔に感じる)こともある。
上記より、導入によって全体としては費用対効果が高いとの結果が得られたため、より規模を拡大したPoCを行うこととしました。
なぜ追加でPoCを行う必要性があったかや、そのPoC結果を次章で紹介します。
なおPoCにあたっては、この段階から中巻/リスク編の検討結果を踏まえ、極力、実開発利用に近い設定・対象に対して実施しました。
例えば、PoC-1からPublic Code除外は有効にしてPoCを実施しています。
最初から実開発での利用と同じ設定・対象を行ってPoCを実施することは難しいことも当然ありえます。
一方で、こうした制約が結果(効果)に大きな影響を及ぼし、PoCが無駄になる可能性もあります。
この相反する問題に柔軟に対応するには、PoCを行いながらリスクへの対応など制約になりうる項目の調査検討も並行し、結果を迅速に反映して評価していくことが重要と感じました。
PoC-2における評価(実開発での計測)
2回目のPoC(PoC-2)として、より開発の実態に即した形で適用規模と実施期間を拡大したPoCを50ライセンスで行い、効果を評価しました。
というのも、PoC-1は開発者の主観に基づくものであり、かつ開発者は常に開発(コーディング)をしているわけでもありません。
このため、より長い期間、個々の開発者の主観に基づきにくい方法で効果を計測・評価するべきと考えました。
具体的には、JDEPでは、開発計画(PI:Program Increment プランニング)を策定し、
アジャイル・スクラム開発を採用しスプリント単位で開発を進めています。
そこで実施期間を四半期とし、以下のような計測を行い、効果を評価しました。
- (1) スプリント毎に、Copilot利用タスク(SBI: Sprint Backlog Item)を特定
- (2) 特定したCopilot利用タスクに対して、(Copilotがない想定で)開発にかかるストーリーポイントを見積(この部分は通常の開発と同じ)
- (3) Copilotを利用して実際に開発を行い、要した時間をストーリーポイントに換算
- (4) 見積と実際の予実差、つまり上記(2)-(3)、がCopilotによる効率化効果と仮定
- (5) 上記をスプリント毎もしくは四半期毎に時間換算することでCopilotの効率化効果を算出
あるアプリケーションに対する上記の実施結果を下図に示しています。 この結果から、通常の開発の流れのなかでもCopilotは十分、費用対効果がある、と結論しました。
なお、アジャイル・スクラム開発においては、上記のような予実差やポイントの時間換算はアンチパターンといわれます。 しかし今回はPoC効果の計測・評価という目的を優先し、上記の対応を取ったことを補足として記載しておきます。
可視化
さらに継続的な評価として、GitHubのAPIを利用した可視化にも取り組んでいます。
というのも、上記で述べたような評価はいずれも開発チームに負荷をかけます。
継続的な効果の評価のために、定期的に前述のような対応を実施し、開発チームの開発効率が落ちてしまっては本末転倒です。
一方で、導入後は費用対効果の評価を全くしないことも避けるべきです。実際、ライセンス購入数の検討や現状把握・活用推進するために継続的な評価結果は重要です。
この2つの条件を満足するため、自動的に取得可能なメトリクスを用いて効果や活用状況を継続的に把握・評価する仕組みが必要となります。
この観点でGitHubおよびCopilotを調べてみると、下図のようにAPIでメトリクスを取得できます。
具体的には、以下のような情報を取得できます(上図左側)。
- GET /orgs/{org}/copilot/billing/seats により、APIコール時点(数十分のDelayすることがあります)での、当該Organizationに所属する利用者の最終利用日時や利用エディタ等の情報を取得できます。
- GET /orgs/{org}/copilot/usage により、APIコール時点までの最大28日間(登壇時の仕様、時差も含めて1-2日のDelayすることがあります)のCopilot利用状況(総提案数や採用数等)を取得できます。
またCopilot Metrics Viewerというツールを用いて、可視化もできます。
JDEPではAPIから取得した情報を自前のDBに保存し、様々な可視化も行っています(上図右側)。これにより28日以上の長期間のメトリクス保存による傾向分析や、Organization単位での比較も行いたいと考えています。
これによってCopilot利用と開発フェーズの関係や開発言語との関係など分かることがあれば、またどこかの機会で共有したいと考えています。
なお一部の実装についてはこちらの記事で紹介していますので興味あればご覧ください。
Copilotを利用しての気付き
最後に、Copilot利用を通して得られた効果のうち、開発者への影響にも触れておきたいと思います。
PoC-1での評価でも述べましたが、Copilotは (Expertというより)Noviceな開発者により効果があるように感じます。
JDEPでは、上巻/背景編でも述べたように、共通チーム(SREほか)が、各アプリケーションチームを支援する構成をとっています(下図左側)。
この共通チームとアプリケーションチームの関係において、アプリケーションチームが共通チームに近いタスク(例えばKubernetes manifestの編集)を行うことがあります(特に習熟してきたアプリケーションチームほど多くなります)。
また逆に共通チームがアプリケーションチームを支援することも当然あります。
こうした事態に対応するときにもCopilotは有用で、結果としてアプリケーションチームの自立、もしくは開発者がよりフルスタックな技術を身につける(開発者の技術の幅を広げる)のにも助けになる印象を受けています。
おわりに
Copilotの一連のPoCを通しての気づきを以下にまとめます。 合わせて今後の取組(実施してみたいこと)も記載しておきます。
- 結果のサマリ・気付き
- GitHub Copilotは開発者にとって非常に良いものであり、利用すれば、開発生産性を向上できる。
管理・推進の立場でも、必要な機能や条項が整備されている。 - 導入にはスモールスタート・低リスクなところから適用し、実利用に近い使い方(Public Code除外等)で PoC・評価、実績を積み上げる。
- トップダウンによる推進のみではなく、現場開発者もリスク理解・協力し、開発チームのルール・活用に落とせているとスムーズに導入できる。
- GitHub Copilotは開発者にとって非常に良いものであり、利用すれば、開発生産性を向上できる。
- 今後の取組
- マクロな指標に対して効果の計測・評価として、例えば、Four Keys(デプロイ頻度・変更リードタイム・変更障害率・サービス復元)のような指標でも評価をしてみたいと考えています。
- JCB の他開発への GitHub Copilot の展開・推進も見据えて活動していきたいと考えています。
最後となりましたが、JCBでは我々と一緒に働きたいという人材を募集しています。 詳しい募集要項等については採用ページをご覧下さい。
本文および図表中では、「™」、「®」を明記しておりません。 記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。