ここ1年くらいだろうか。AIの可能性を模索するために、ありとあらゆるAIツールやサービスを試してきた。最初の半年くらいは、AIができることを見極めるために。その後の半年くらいは、AIに全てを賭ける価値があるか、というかAIにどの程度投資すべきかを見極めてきた一年だったと思う。
世の中的にも、ここ1年でAIエージェントに関する議論や実装が一気に増えてきたと思う。いわゆるリーズニングモデルが一般的になり、AIがそれなりに思考を始めたように見える機会が増えてくるに従って、今度こそAIに何でもかんでも任せられるのではないかという幻想を抱くような、そんな一年だったのかもしれない。
AIの能力と「目的」の欠如
これは、もしかしたら近い将来幻想でなくなるかもしれない。今でも十分動くコードを生成できるし、理路整然とした文章を書くこともできる。今までAIが生成してきた文章を色々と読んだり、このブログでも試験的にAI生成の記事を載せてみたりもしたが、まあ出来は悪くない。
しかし、絶望的に足りていない点が一つある。それは成果物の目的だ。AIの生成物は、たとえ人が目的を持って指示した結果の生成物であっても、最終的な成果物に目的が透けて見えてこない。表面上は良い文章、良いコードでも、なぜそれを書くのか、なぜその処理を入れるのかという本質的な問いに対する回答が含まれていない。AIの性質上当たり前ではあるが、確率論的に確からしいものをつなぎ合わせたものでしかないのだ。
AIへの過信が生む課題
それではAIで何かをすることに反対かというと、そんなつもりはまったくない。自分が危惧しているのは、AIに任せすぎた結果生成されてしまった、目的はないが量だけは大量にある生成物を、人間がレビューするという構造を危惧している。
コーディングエージェントの例
近年の流行りは、Claude CodeなどのCLIで動作するコーディングエージェントであるが、頭のいいモデルほど、放置していると途方もない量のコードを短期間で生成してしまう。例えばテストコードを書いてほしい旨を伝えた場合、自分の中では簡単なスモークテストを書いてほしいのに、AIエージェントは気を利かせて単体テスト・ユニットテスト・E2Eテスト全部を書こうとする。
100歩譲って、これらのテストがすべて正確に書ければ良いのだが、たいてい一回で動くコードを生成することができず、自分で修正してはエラーに対処するという負のループを繰り返し始める。また、もしちゃんと動くコードが書けたとしても、テストコード自体の品質はあまり良くなく、肝心な部分をテストしていなかったりする。
もちろん、こういった問題は過渡期のものであって、将来的には人間もびっくりするようなテストケースを一瞬で生成してくれるのかもしれないが、それにしても人間がそのテストをレビューする必要が出てくる。プルリクエストの修正箇所が数千行もあるとして、それをレビューするのにどのくらいかかるというのか。
もちろん、CoderabbitのようなAIレビューツールを使えば、ある程度のレビュー工数は減るものの、そもそもPRの目的を理解する必要がある事は変わらない。何も見ずにひたすらプルリクをマージするおじさんになってもいいが、それなら誰が品質を担保するのか。
エンジニアの品質責任
まあこの発想自体が、もう古いものになりつつあるのかもしれないが、少なくともエンジニアを名乗るような人間の場合、成果物の品質には責任を持つべきである。
自分は製造業の人間なので、あまりソフトウェアの品質には詳しくないが、AIエージェントに書かせたコードを鵜呑みにする行為は、製造業で言う、今までと同じ条件で製造しているから品質は大丈夫だろうというのと大差ないのではと思う。テストコードを書かない、あるいはテストコードさえAIに投げるという行為は、すべてをAI任せにする手法であり、これまでもこれからも適切ではないと思う。
「使い捨てアプリ」の落とし穴
品質のことについて、どうせ使い捨てアプリだからあまり必要ではないと言われるかもしれないが、案外その使い捨てのつもりで作ったアプリが10年くらい使われるという経験は、実務をやったことある人間ならわかると思う。少なくとも、僕はそういった適当に作った技術負債の塊を、あとから必死にメンテするという経験をいくつもしてきた。
成果物のライフサイクルで考える
AIによる成果物の是非について語る際、どうしても目先のことというか、成果物の存在そのものの是非について語られがちであるけども、本来はその成果物のライフサイクルに視点を当てて語るべきだと思う。もしそれが、本当に一度限りのコードで、GitHubにもコミットせずにローカルですぐ消すようなコードなら、あるいはAIのポン出しでも構わないだろう。ただ、もしその成果物を少しでもメンテするとか、今後機能追加とかバグ修正を行う前提で運用するなら、やはり目的を伝えてあとはAIポン出しというのはやめておいたほうが無難だ。
今後のAIとの向き合い方と技術的負債
自分の周りには、こうやってポン出ししたアプリケーションがいくつかあるのだけれども、果たして今後どうやって処理していこうか。技術負債をどう返済していくかということを考えている。非常に悩ましい話だ。
少なくとも、今後はAIポン出しとか、AIに頼り切った文章作成やシステム設計はやらないと思う。自分のものにならないし、その負債を返済するのはほかでもない自分自身なのだから。