本稿はJCB Advent Calendar 2024の12月2日の記事です。
アーキテクトチームの長沼です。
JDEPでは、開発にGitHub Copilot Business(以下、特段の記載ない場合は「Copilot」と省略)を導入しています。
この導入の取組について、2024年11月6日に行われた Microsoft Developer Dayで、「金融事業会社におけるGitHub Copilot導入の道のり - JCBのPoC〜活用」と題して登壇させていただきました。
発表内容は次の3部構成となっており、当日は時間の関係で十分に説明できなかった部分も含めて、それぞれ記事で振り返ろうと思います。 興味を持って頂けたら最後までお付き合いいただけると嬉しいです。
- 上巻/背景編: GitHub Copilotを導入するに至った背景
- 中巻/リスク編: GitHub Copilotを利用するうえでのリスク検討
- 下巻/効果編: GitHub Copilotの効果
まず本記事では上巻として、導入に至るまでの背景や、GitHub Copilotを選定した理由について説明します。
JDEP開発における課題
JDEPの開発体制は、上図左側のように、SREやPlatformチーム、その他セキュリティや品質保証を担う共通的なチームの上で、 複数のアプリケーションをそれぞれ1または複数のアプリケーションチームが開発する形となります(より詳細な開発体制はこちらの記事を参照ください)。
開発はアジャイル・スクラム開発を採用しており、開発されるアプリケーションも決済に関わるもの、カード会員向けのもの、加盟店を支援するもの、など多岐にわたります。 このような特性から、上図右側のようにアプリケーションの開発言語や開発環境も様々なものが使われています。
またアプリケーションを動かすプラットフォームとして、Infrastructure as Code(IaC)を積極活用したクラウドサービスやコンテナ、そのオーケストレータであるKubernetesを積極活用しています。 こうした背景からJDEPでは、アプリケーションのコードばかりでなく、IaCの設定ファイルやKubernetesのmanifest、コンテナを構築するためのDockerfileなど開発に占めるコードの割合が大きくなっています。
目的に目を向けると、JDEPとして最終的に目指すべき姿は、事業課題を解決するアプリケーションの迅速な開発・リリースです。
この目指すべき姿を実現する上で、前述のコードの迅速な開発は必要不可欠となります。こうした背景から、コード開発の大幅な効率化が見込める生成AIの活用に取り組みました。
GitHub Copilot Business導入までの流れ
GitHub Copilotの概要
GitHub Copilotは生成AIを活用したソフトウェア開発、特にコーディングに特化した支援ツールです。
今ではソフトウェア開発に係る様々な支援機能もリリースされていますが、最も基本的な機能は次のようなものです。
- 生成AIによる提案に基づいたコード補完
- コードに関する生成AIを用いたチャット
Copilotのチャットについては、汎用的な生成AIによるチャットと異なり、図左側のように、ソフトウェア開発以外の質問はできない仕様となっています。
このため、開発者はよりソフトウェア開発に集中できますし、管理側の立場からはガバナンスを効かせやすい(使用用途を限定できる)、というメリットがあります。
導入までの流れ
こうした特性を持つCopilotは、開発者の立場に立ってみれば非常に便利なツールです。
一方で事業会社の立場からみると、導入には費用対効果やリスク管理も重要な要素となります。
そこでJDEPでは複数回のPoCを通し、導入効果やリスクを評価検討しました。
具体的なPoCから導入までの流れは次の図の通りです。
導入に至るまでの過程は大きく分けて、以下4つのフェーズに分けることができます。
フェーズ | 概要 | 利用ライセンス数 |
---|---|---|
ツール選定 | 生成AIを用いたソフトウェア開発支援ツールのなかから最も有効と考えられるツールを選定 | - |
PoC-1 | 小規模な開発において短期間のPoCを行い、アンケートベースで効果を評価 | 15 |
PoC-2 | PoC-1より大きな規模の開発において、より長い期間のPoCを行い、開発やCopilotのメトリクスも用いて効果を評価 | 50 |
導入 | JDEP全体で利用を行い、Copilotのメトリクスを用いて効果を継続評価 | 100 |
ツールとしてGitHub Copilotを選定したあと、それぞれのPoC、またはPoC期間を通してリスクに対する検討や効果を計測しました。
最初のフェーズにあたるツール選定について次章で、PoCを通してのリスク評価と効果に対する評価をそれぞれ別の記事(中巻/リスク編・下巻/効果編)で説明します。
全般を通して活用に向けた勉強会なども実施しましたが、こちらはインターネット上で有用な記事が様々公開されていますので、それらの記事に譲りたいと思います。
GitHub Copilotの選定理由
ツール選定当時(2023年夏頃)は、ちょうど生成AIによるソフトウェア開発ツールが各社から出た、もしくは出始めた頃でした。
そうした各ツールの中から、GitHub Copilotを採用し、PoCを行った理由は次のようなものです。
コード補完で最も開発者体験がよかった
一口に生成AIを用いたコード補完といっても、各ツールで使うモデルや操作性が異なり、結果として開発者体験も異なります。
例えば、生成AIによるコード補完では従来の補完より多くのコード量が提案されることも多くあります。
しかし提案内容が開発者の期待に合っていなければ提案内容の修正が発生してしまい、結果として開発効率を損なう、もしくは導入しないほうがよかった、といったことになりかねません。
この点において、選定当時の試用において最も開発者の期待に合った提案の印象を受けたのがGitHub Copilotでした。
さらにGitHub Copilotでは、提案されたインライン候補を切り替えるショートカットも用意されています。 このショートカットを用いることで、最も開発者の期待に近いものを選択できるため、提案採用後の修正をより少なくできます。
また選定当時は、Copilotチャットがベータ機能として提供され始めたばかりで未評価でした。しかし同チャットについては、正式リリース後もチャットで使われる生成AIモデルは日々進化し、モデル自体も複数の選択肢から選ぶことができるようになりました1。
この点もCopilotを採用して良かった点の1つと考えています。
対応エディタが多い
公式で提供されているエディタが多いのも魅力の1つとなります。
JDEPでは、前述の通り様々なアプリケーションを開発する背景もあり開発エディタを限定しておらず、様々な開発エディタが使われています。 このため、サポートされる開発エディタが多いほど、利用の幅が広がることも期待できます。
Copilotをこの観点で見てみると、サポートされることが多いVisual Studio Codeに加え、Vimなど幅広いエディタで利用できます。 さらにEclipseやXcode2などで利用可能なプラグインもコミュニティ他で開発されており、JDEP開発での利用範囲が広いと期待できたことも採用の理由となります。
エコシステムが充実している
ツール選定時においても、その後においても、GitHub Copilotの活用事例やTipsはインターネット上で多く公開されています。 こうした情報を活用することにより利用開始から高い効果を上げるまでの期間を短くすることが期待できます。
さらに前述のプラグインをはじめとして、Copilot活用の幅を広げる、もしくは利用を促進する便利なツールも多く開発されており、そうしたツールがあるのも魅力です。
管理・運用機能も充実している
また管理の観点からすると、アカウントやライセンスの管理が容易な点も重要です。 この点においてもCopilotは、従来のGitHubの仕組みの延長で管理でき、管理が容易なのも評価ポイントです。
さらに後日、APIによるメトリクス機能が提供されるなど、活用状況を把握できる点も大きなメリットと感じています。 この内容については、下巻/効果編で詳細を説明します。
おわりに
今回は、JDEPにおいて、GitHub Copilotが必要になった背景や、同Copilotを採用した理由について説明しました。 リスク評価と効果に対する評価をそれぞれ別の記事(中巻/リスク編・下巻/効果編)で紹介していきますので、本記事に興味もって頂けたらそちらもご一読ください。
最後となりましたが、JCBでは我々と一緒に働きたいという人材を募集しています。 詳しい募集要項等については採用ページをご覧下さい。
本文および図表中では、「™」、「®」を明記しておりません。 記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。