AI支援プログラミングでストレスを感じた話

AI支援プログラミングでストレスを感じた話

プログラミングはプログラミングでも、
私が今ハマっているのは
AIにコードを生成させてプログラムを作成するというものです。
「これこれこういう処理を作って」
「あそこをこう修正して」
といったチャット形式でAIに希望を投げると、
既存の処理を加味しながらコードを生成してくれます。
便利そうだと思うでしょう?
実際、とても便利です。

しかしながら、良い面ばかりでもありません。
中にはストレスを感じるレベルで悪い面もあります。
今回はそんなAI支援プログラミングについての愚痴のような内容です。

最近やっていること

最近私は趣味でカードゲームアプリを作ろうと思い、
VisualStudioCodeを使用してPythonで作成しています。
VSCodeにはGitHubCopilotによるコード生成AI機能が備わっており、
チャット形式で質問することでプログラミングの補助をしてくれます。
例えば、実装したい機能を日本語で伝えるとそのコードを生成したり、
エラー内容を伝えると原因と修正案を出したりしてくれます。
チャット形式の機能以外にも、
コードを書いている最中に続きのコードを予測して提案してくれる機能がある等
便利機能が盛り沢山です。
AIパワーを感じたさ半分、仕事疲れの中作るので楽をしたさ半分で、
試しに全てAIに作らせるという方針で作成中です。

AIによるコード生成のここがダメ

始めの内は順調でした。
全体図を伝えるとパパッとアウトラインを作成してくれたり、
エラーが起きてもそれをコピペするだけで原因を素早く特定して
スムーズに問題解決したりと至れり尽くせりなスタートです。

しかし、コードが長くなりファイルが増えてきた辺りで
雲行きが怪しくなってきました。
例えば、
・AIが生成したコードを取り込む際に、既存処理の一部が誤って消される。
・コメントを勝手に消される。
・指定した内容に沿わないコードを生成する(特にデザイン周り)。
・エラーの原因ではない箇所を原因だと誤認して修正案を出してくる。
といった問題が発生するようになってきました。
それが起こる分には許せるのですが、
それを「必ずこの挙動になります」「絶対にエラーは起きません」という
エンジニアなら泡を吹いて倒れるレベルの根拠のない自信でコードを提案してきて、
その結果見当違いの挙動となったりエラーが再発したりしました。
そこが結構ストレスで、最近の私のプログラミングは題するなら
「イラついたら即終了プログラミング」がピッタリです。
ムカついてAIとチャットで喧嘩してたら無料でできる質問回数を超えてしまい
課金することになってしまったのは内緒です。

対処法(?)

まずは詳細な内容で質問をすることです。
始めの内はざっくり質問でも、1を聞いて10を返すようなコードを生成してくれるため、
アバウトな質問でいいやと感じてしまいます。
しかし既存処理が混ざると混乱するようで、
既存処理やコメントを消す、重複して同じ処理を書くという暴走に繋がります。
オブジェクトや概念のネーミングを他と混同しないように気を付けたり、
言葉足らずにならないよう処理を詳細に言語化したりする必要があります。

また、視野を広げてあげることも重要です。
AIと聞くとなんとなく全てを網羅してくれそうな凄さを感じますが、
実際は腹が立つほど盲目です。
特に今開いている1ファイルで話を終わらせがちで、
ファイルを跨ぐエラー調査や他ファイルとの仕様合わせが苦手そうです。
ここは人間様のセンスを存分に発揮して、
当たり付けや方向性決めはAIに頼らず自分でやるのが良さそうです。

と、偉そうに語ってきましたが、
効いているような効いていないようなというのが正直なところです。
「コメントを消すな」と書いても消されるし、
「○○ファイルを参考にして」と書いても無視されます。
まだまだAIとの溝は深そうです。

まとめ

一見良さそうなものが実は一癖ある、
というのはあるあるだと思います。
外から見てエアプになるより、
中身を知り理解者になりたいと私は思います。
とかく、それは辛いことですが。。。