AIを使った開発はとても難しい。特に難しく感じるのは、人はAIに任せたくなるのに、AIは単に仕事が粗いだけでなく、人間ではないので、責任も取らない点である。また、今までの開発でも時々あったが、このような問題がある。
# AIは簡単に実装から単体テストや仕様書をリバースするため、単なる実装の追認でしかない単体テストや仕様書が大量に作られてしまう
単体テストはユーザー要望を満たしていることを確認せねばならないが、実装から生成させると、ただその実装がテストOKになるテストになってしまう。これではダメなのは誰でも分かる話であるが、こういう、本来の意図から外れているのに、それらしいテストが生成されてしまう。換言すると、「役に立っていないのにすっかりそれらしいもの」をAIは作ってしまう。この汚染がヤバい。
ドキュメントにしても、AIは実装からリバースしてくることがあると思う。設計書はユーザー要望を満たすために、どうシステムを作るか書いてあるはずなのに、単に現状の実装を設計書に反映しているだけので、設計書と実装を照らし合わせて検証することができない。堂々巡りになるからだ。
つまり、以下の危険な事態が起き得る。
・間違った仕様書から間違った実装ができ、間違った実装を追認する間違った単体テストがある。
これは仕様書ではなく、実装を先に作っても、単体テストを先に作っても話は同じである。
間違ったまま、関連資産が作られる。
この誤りを正せるのは、ユーザー要望の記録しかない。またはユーザーのレビューである。
ここで自分は考える。今まではどうしていたんだ。AI開発が始まる前はどうやって作っていたんだ、と。今までは、慎重に、「これで本当にいいのか」を確認しながら作っていたのだ。実装しながら、考慮漏れを見つけ、テストしながら実装仕様を確認していたのだ。設計書を書きながら、本当にこの設計で良いのか検討していたのだ。
AIに任せることで、我々は検討の機会を捨ててしまったのだろうか。そうではない。検討しないといけないのに、確認しないといけないのに、単にやっていないのである。AIのせいではない。省略できないことを省略できると勝手に決めてしまったのが良くなかったのである。
AIにコードを書かせるのは完全にダメなアイデアではない。しかし、自分の考えでは、AIに代行させるのではなく、AIに相談するぐらいが丁度良いと思う。なぜなら、本番環境で運用するシステムは、ソースコードを何度見返しても、それで不具合を発見できたら、充分元が取れる世界なのだ。
問題はコーディング速度よりも、ずっとシステムの品質に依存しているのである。丸一日かけてソースコードを書いても問題ない、それで不具合のない機能を書けるならば。
そう考えた時、本当にAIを活かすためには、開発速度よりも、システムの品質にフォーカスしたほうが良いことに気づく。
品質を上げるためにAIを使おう。AIにソースコードやドキュメントを荒らされて頭を抱えるぐらいなら、自分で書いたほうがいい。
私はプロトタイプや手元で使うツールまでAIを使うなと言っているわけではない。自分が複雑な事業系のシステムを作るなら、AIを生かすのは開発速度ではなく、システム品質に対してだ。なぜなら、それらのシステムでは品質が重要だからだ。
急に動かなくなっても誰も困らないツールなら、AIに作らせて、殆どレビューしなくても別に良いだろう。ターゲットを見極めよう。そしてAIの使い方をちゃんと考えよう。