AI Agentによるコーディングについて
昨今AIの発展は凄まじく、数年前に想像していなかった世界となりました。
ほんの5年ほど前までは、「あ〜半角全角変換しなきゃ、どこかに落ちてないかな」とWeb記事から引っ張ってきて採用していたのですが(これはこれで10数年前からしたら十分楽になった)、今は、「半角全角変換のコード作って」とAI Agentに命令すると、かなりいい精度で書いてくれるようになりました。
どちらかというと、書く能力よりもプロンプティングの技術を向上する時代となってきましたね。
私はGiHubCopilotを使用して、業務に当たっておりますが、それを経験浅めのエンジニアにも割り当て、開発効率化にはかったときの経験談を書きたいと思います。
業務ロジックを与える時の注意点
まず大前提として、社内のLLMでない場合は業務知識を抽象的に与える必要があります。
具体的な機密事項を与えると、いくら学習に利用しないとうたっているとは言え、リテラシー的な観点からは好ましくありません。
また、少なくとも個人情報は第三者提供に当たってしまうため絶対にNGです。
さて、実装についてなのですが、業務知識・要件の理解が不十分である場合はそれを命令に加えていないがゆえどうしても抜け・漏れが発生します。
設計書通り作ればいい。確かにそのとおりではあるのですが、設計書には「設計者が意図した想い」が含まれていない場合もあり、そういった想いをコードに反映させることはできません。
想いまでかけば・・・ということもありますが、社規定の様式などもあるでしょうし、そこに抗っていくのは非常にエネルギーを要します。もちろんそこまでやれればよいのですが、今回は新人プログラマ応援の記事。
規定に沿ってどこを活用してよいかというところに論点を絞りたいと想います。
まず、トップの要件は理解しましょう。
顧客にどうゆうことをさせたいのか?したいのか?ここを理解しないまま、動けばいいやというプログラムを完成させるだけでは後々ちょっとした(自分にとって)想定外の操作に耐えられない、顧客満足度の低いものが完成します。
次に設計者とコミュニケーションを取りましょう。
前述したように「設計者が意図した想い」を実現するのもPGの役割です。
- ここってこの要件を実現させる実装ですか?
- この要件に対する実装はどこにあるのでしょう?
- 欲を言えば、ここはこういった動きをさせるとUXがよくなると思いますがご意見いただけますか?
など、初学者はとにかく上流工程の人とコミュニケーションを取っていくことが重要と考えます。
AI Agentが生成したコードをそのまま提出はバレてますよ
熟練したコードレビューアにコードを提出すると、数分見ただけでも「あ、これAIが作ったのそのまま採用して、自分ではあまり考えてないんだな」というのがわかります。
それでも妥当性のあるコードであればよいのですが、
- 細切れに作ったがゆえ、共通実装が意識されていない
- 命名規則がバラバラ
- 手続きが複雑になっており、人が追うには何かしらドキュメントが必要
- コメントの日本語が変
- コメントが不足している、もしくはいらないところまでついている
- コーディングのポリシー(例えば定義→クラス内関数→イベントの順に書く)などがない
など保守性があまり保たれていないものが出来上がります。(今後のAIの発展で解消されると思いますが)
AI Agentは命令に沿った内容を書いてきますので、上記のようなリファクタリングについては、ちゃんとできているか見定める必要があります。
この場合、だいたいこう返します。
「ここのコード説明してくれませんか?ちょっと手続きが難しくて・・・」
注意するときは
「AI使うのは大変良いけども、自分のものにしてから提出しましょう」
ではどうするか?
3つです。
- 必ず自分でリファクタリングする。
もしくは、明確にリファクタリングを指示する。
ここで言う明確には「リファクタリングして」ではなく、「関数ヘッダに手続きを書きました。コード中の対応するところに手続きに沿ったブロックコメントを書いてください。手続きのとおりになっていない場合は処理順序をロジックが崩れないように変更してください。」など。(これでも不足しているかも) - AI Agentが書いたあとの説明をしっかり読む
Agentで書いたあと、ここはこうで・・・と説明文を記載してくれています。
これを読まないとただ丸投げしただけになりますので、いざ何かあったときに問題解決に非常に時間がかかってしまうこととなります。 - 引用を見る
間違った情報や情報色々組み合わせた結果、あべこべになっている可能性もあります。
引用がある場合は必ず引用元を確認してください。
最後に
AI Agentは使ったほうがいいです。
ただ、前述したように、できあがる品質はプロンプトの内容に左右されます。
要件を理解する、設計者の想いを理解する、ユーザが使う場面を想像することをしないと正しくプロンプトを与えることができません。
(いま現段階では)AIを神格化せずまだサポートであることを念頭において利用することをおすすめいたします。