天の月

ソフトウェア開発をしていく上での悩み, 考えたこと, 学びを書いてきます(たまに関係ない雑記も)

コード品質はどうなる?生成AIとの最適な協働とは?〜コード×AI疑問解消会〜に参加してきた

findy.connpass.com

こちらのイベントに参加してきたので、会の様子と感想を書いていこうと思います。

会の概要

以下、イベントページから引用です。

書籍の内容も踏まえつつ、お二人の専門的な知見を共有いただきながら、生成AI活用におけるコード品質への影響や、生成AIとの最適な協働について、パネルディスカッション形式でお話しいただきます。

また、ご参加者からの質問にもご回答いただくことで、生成AIとコード/コード品質の関係性について、皆さんの疑問を解消する場を目指します。

会の様子

服部さんの講演

書籍を書いたモチベーション

プロンプトエンジニアリングを学ぶ必要があるか?という疑問をよく聞かれるそうですが、Reactのコンポーネント生成プロンプトの例に代表されるように、使い捨てのプロンプトを作ったほうがプログラミング上では重要であると服部さんは考え、書籍を書いたということでした。

今後AIをコーディングに活用していくにあたっての論点

AIはハルシーネションの課題がある一方で、人間のレビュー能力も信頼が置けないという研究も出ているため、この2つの課題をどのように乗り越えていくのか?という話がありました。
そこで、小さなコードチャンクによる段階的作業が重要になっていくということで、関心の分離や検索最適化を考えた命名戦略、スタイルガイドの整備、コードの分離、将来の拡張性を考慮したコード設計、体系的なリファクタリング技法の適用、状態遷移図やデシジョンテーブルを活用した最小限のテストの適用*1が論点になってくるだろうということです。

先進事例

AIと協働していくとき、AIをどこまで自社に向けてファインチューニングしていくのか?という議論が出てくるということですが、良いコードでありAIに食わせることができるコードというのは自社だけだと限られてくるという話がありました。

パネルディスカッションとQ&A

講演の後はパネルディスカッションとQ&Aがありました。以下、質問と回答を一問一答形式かつ常体で記載していきます。

(一定の能力が)生成AIコードを使うなら自分が書いたほうが早い?

タスクによって違うところもあるので、自分で身につける必要がある。
いちばん大切なのは、なるべく早いタイミングでAIを活用することが適切な課題なのか?ということを考えていくことだと思っている。

また、フロントエンドのソリューションなどは大分自動化されているので、その辺りを踏まえながら自動化が適している領域なのか?Zero-shotが使えるのか?といった判断をするための経験を持てるようにしていくことが重要である。

また、カスタムインタラクションなどの機能に代表されるようにプロンプトを個人向けに使えるようにしておくことも開発速度を上げるために大切。

AI活用のアンチパターンはあるのか?
  • プロンプトエンジニアリングを作り込むこと
  • 過度な期待を持つこと(設計書を渡せばコードが書いてくれるんだろう)
  • 不適切なタスクをAIに渡し続けること
  • (コメントが古いものがあるなどといったコンテキストがある)特定チームの場合はAIを活用してもハルシーネションが連続してしまうことがあり得る
AIの得意不得意は?
  • 人間のプロンプトに大きな影響を受ける
  • COBOLなど情報が不足している言語やフレームワークに関しては不得意
生成AIが出力するコードの精度と出力量に相関関係があるのか?精度が高いコードを出力するために何に気をつけるべきなのか?

精度が高いコードとは何なのか?という話はあるが相関関係はある。一定はロールプレイでコントロールすることはできるが、プロンプトの精度でどれくらい精度が高くなるのか?というと疑問はある。

複数の生成AIを使うことは良い方法か?利用の仕方を強化するためにはどんな方法があるのか?

良い方法だと思う。自分の書いたコード以外もサンプルに使えるとよりいい。

アプリケーションを適切に作るために有効なフォーマットは?

ものによる。ある程度チャンキングしておくことは大切。

コード品質を制御する方法は?

人が介入してやっていく必要があるだろうとは思うが正直わからない。

リポジトリレベルのコードを一括で読ませる方法はあるか?

ないし、やる必要があるかというとないと必ずしもそうではないと思っている。

コード作成をする際のAIを学習させるために必要なことは?

メンテナンスが長期間必要なコードを用意すること。

今後プログラマーに必要なことは?

AIの効果的な活用を加速するようなスキルと、AIにできないスキルを分けて考えること。

会全体を通した感想

今年の下半期で読んだ本の中では一番読んでよかったと思えるような本だったのでイベントを楽しみにしていたのですが、本の内容の一部を本とは異なる観点で整理してくれるような場面が多く、こういう観点でも本で書かれているあの知識は使えるんだな、というのがすごく分かったので参加することができて非常に良かったです。

*1:AIが出てくると必要なテストが出てくる