生成AI活用への取組〜AIコードジェネレータ PoC準備編

本稿はJCB Advent Calendar 2023の12月20日の記事です。

はじめに

アーキテクトチームの長沼です。

2023年は生成AI(Generative AI…以下、GenAI)が大きく注目を集めた年でした。
JDEPにおいても、開発現場におけるGenAI活用の取り組みを進めています。

GenAI技術の導入可否を決める上では、多くの場合、PoC(Proof of Concept)またはPoV(Proof of Value)を行います(以降では一律PoCと記載します)。 このとき、どういった観点・項目で情報を収集し評価すればよいか悩む方も多いと思います。

今回は、JDEPでのGenAIによるコード生成支援ツール(AIコードジェネレータ)PoC検証のための評価項目について、ご紹介したいと思います。

評価項目

こうした評価では、定量評価が理想的ですが、現実にはなかなか難しいのが実情です。

そこで今回は、定量的な観点も意識しつつ開発者へのアンケートによる定性的な評価(すなわち開発者主観に基づく評価)と、 ツールその他から取得可能な範囲で定量的な評価をあわせて行うこととしました。
以降では定性的な観点定量的な観点に分けて、その内容についてご紹介していきます。

なお以降、ツールと記載したものは、特に断りがない限り、AIコードジェネレータの具体的なプロダクト名が入るものとなります。

定性観点

PoC終了時に、PoCに参加した開発者に対して、以下のようなアンケートに回答してもらうことにしました。

開発者のプロファイル

まずPoCに参加してもらった開発者がどのような開発しているか把握するため、次の項目に回答してもらうこととしました。

なお設問1は、代わりに業務全体の時間を確認することで(2)の質問と合わせてコーディングの割合を計算できますが、 割合の方が直感的に回答しやすいかと考え、今回はこの設問としています。

# 設問 回答形式 回答例
1 PoC期間中の業務(Sprint)全体に占めるご自身のコーディング割合を教えてください。 0% - 100% 50%
2 PoC期間中における、(ツールを使った)コーディングの概算時間を教えてください。 記述(時間) 20時間
3 PoC期間中における、コーディング内容の概要や開発手法について教えてください。 記述 TDDによるJS系言語の新規開発案件

開発者体験

開発者の体験として、ツールを使った結果に満足感を感じているか(以下表4.1 - 4.4)、開発が効率化されたと感じるか(以下表5.1 - 5.5)、 および開発自体や開発者自身に何らかの影響を及ぼしたか(以下表6.1 - 6.3)について回答してもらうこととしました。

各カテゴリのいずれにおいても、最初に全体的な感想をクローズドクエスチョンで聞き(例:表4.1)、その後に個別のエピソードをオープンクエスチョン形式で聞く形としました。
個別エピソードの設問は、良かった点・悪かった点を明確に把握したいことから、敢えて設問を分ける工夫をしています(例:表4.2と4.3)。

またGenAIの分野は、少なくとも現時点においては成熟とはいい難く、結果としてツールによって精度が異なると予想されます。 このため4.4のように、当該ツールがどの程度、期待にあった提案をしたかを確認する設問も用意しました。

このほか、どの程度効率化されたかの定量的な効果の参考にならないかと考え、5.4と5.5の設問も入れています。

# 設問 回答形式 回答例
4.1 使用したツールの満足度を教えてください。 4段階(1:不満〜4:満足) 4
4.2 満足度について、良かった具体的な体験やエピソードを教えてください。 記述 (省略)
4.3 満足度について、悪かった具体的な体験やエピソードを教えてください。 記述 (省略)
4.4 今回使用したツールによる提案(補完)は、どのくらいの割合が期待に合っていましたか? 0% - 100% 60%
5.1 ツールを使うことで効率化したと感じますか? Yes/No Yes
5.2 効率化について、良かった具体的な体験やエピソードを教えてください。 記述 (省略)
5.3 効率化について、悪かった具体的な体験やエピソードを教えてください。 記述 (省略)
5.4 ツールの提案を1回採用することで、平均どのくらいの開発時間が効率化(短縮)できると感じましたか? 記述(時間) 平均30秒
5.5 ツールを使って1週間開発をしたと仮定した場合、使わないときに比べて、どのくらいの開発時間が効率化(短縮)できると感じましたか? 記述(時間) 60分
6.1 ツールを使うことで、ご自身の開発(業務)自体や取組姿勢に対して良い効果があったと感じますか? Yes/No Yes
6.2 業務・姿勢について、良かった具体的な体験やエピソードを教えてください。 記述 (省略)
6.3 業務・姿勢について、悪かった具体的な体験やエピソードを教えてください。 記述 (省略)

その他、以下のような設問も設けて、導入することで今後使ってもらえそうかや、新たな使い方等の気づきを得る試みも行いました。

# 設問 回答形式 回答例
7 今後もツールを使い続けたいと思いますか? Yes/No Yes
8 ツールを使ってみて、利用が効果的と思う活用方法やユースケースを教えてください。 記述 (省略)
9 フリーコメント:その他、全体を通しての感想や体験談などお気づきの点があれば教えてください。 記述 (省略)

定量観点

一般にGenAIの効果を直接評価する項目は難しいと言われていますが、以下のような項目と仮説を組み合わせることにより定量的な効果の算出もできるのではないか、と考えています。

提案コード採用率

利用するツールやそのプランによっては、利用期間中にどのくらいの提案を行い、どの程度を採用したか、またその割合(Acceptance Rate)や推移を入手できるものがあります。 こうしたデータから効果を類推できます。

利用前後でのStory Point(SP)の比較

JDEPではアジャイル・スクラム開発により、開発しています。 この開発では一定の開発期間(Sprint)毎に作る内容(タスク)の総量をSPとして見積り、Sprint終了時にどの程度SPを消化できたかという評価します。

GenAI活用前と活用後で消化SPの比較することにより、効果の測定に使える可能性があります。
ただし注意点もあり、消化SP自体Sprint毎にゆらぎを含むもののため、特定のチームの1 スプリントのみの評価では期待する結果が得られないこともあります(複数チームまたは複数Sprintでの評価が理想です)。またSP自体が開発の健全性を把握するためのものであり、本来は効率化の評価指標として使うものではないことにも注意が必要です。

まとめ

今回は、JDEPにおける、GenAI技術をPoCを行うときの評価項目についてご紹介しました。
この項目で実際にツールを評価した結果についても、どこかで紹介したいと思います。お楽しみに!

本件含め、JCBでは我々と一緒に働きたいという人材を募集しています。 詳しい募集要項等については採用ページをご覧下さい。

おまけ:GenAIを活用するにあたり

GenAIによるAIコードジェネレータは適切に活用すれば非常に協力なツールであり、ともすれば十分な知識を有していなくても、簡単にそれっぽい実装できてしまいます。

一方で多くのGenAIを活用した技術がそうであるように、(様々なチューニング技術・機能があるとはいえ)常に正しい結果を返してくれるとは限りません。 尤もらしい結果のなかに嘘が紛れていることが多々あり、また最終責任は利用側にあるというのが執筆時点の一般的な見解です。 このため、GenAIにより生成されたコードを100%信頼して使うことは、特に信頼性の求められる開発においてはリスクがあります。

そこでJDEPでは、PoC含めGenAI活用した開発において、利用してもらう開発メンバーには開始時に改めて以下のことを周知するようにしています。

提案コードが正しいか(意図するものか)は、必ず開発者が確認してください。
AIの提案コードをそのまま使ってバグを作り込んでも、AIは責任を取ってくれません。
そのバグで夜中に叩き起こされるのは、あなたを含めた開発メンバーです。

GenAIの登場により開発は大きく楽になりますが、審美眼や真偽を見極める目は引き続き重要のままと感じています。


本文および図表中では、「™」、「®」を明記しておりません。 記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。

© since 2021 JCB Co., Ltd.︎