AIと人間では難しさの尺度が違う
開発中のサービスでとある機能を作ろうとしていた。それはサイドメニューの横幅をドラッグで設定できる機能なのだが、自分のフロントエンド力では少し難易度が高いように感じていた。このサイドメニュー幅を変更する機能はまったくコア機能ではない。固定の幅でも良く、そう考えると実装の優先度は遠のいていく。ただ、先日ちょうど作業の空白時間があり、気まぐれにAIにチャットで依頼したところ1分も経たずに実装できてしまった。これには中々驚かされた。
AIは万能ではない。自分でやれば簡単にできることでも、指示された内容を取り違えて全然違う実装に突き進んでしまうこともよくある。こういうミスがあると与える情報が不足しているのが原因だと言われる。AIは文脈を引き継がないので、過去にどういうやり取りがあったとか、どこを参考にするかを指示に乗せてやる必要がある。それは正論なのだが面倒なのである。本音を言えば適当な指示でいい感じにしてほしい。デザインなどのセンス部分は人間が担保する必要があるとして、簡単な実装くらいは空気を読めるように作れないかな・・などと思っている時に冒頭の件があった。自分が簡単だと思っていたタスクは失敗し、難しいと思っていたタスクに成功するAI。人とは難しさの尺度が違うのではないか?
人は難しさを「難易度 x かかる時間」の掛け算で考えている。「むずかしいですね〜」と言うとき、技術的にそもそも分からないケースもあるが、多くの場合は「実装に半年かかかるので現実的ではない」ではないだろうか。「技術的には可能」という言い方もあるが、エンジニアの見積もりにはもう少しバランスのようなものが含まれている。
AIの難しさの指標は「難易度」のみで、その難易度は解決のための情報が十分あるかどうかとほぼ等しい。回答のタネがWeb上にあるか、指示の中にあるか、ソースコードの中にあるか。AIがプログラミングの分野でまず発展しているのは、コーディングという行為が正解のある仕事なことも関連している。複雑な要件をわかりやすい実装に落とし込むとか、他サービスの似た機能を参考に実装したりとか、どこかで誰かが作ったものの再発明がほとんどだ。それにソースコードは頭の中にあっても動かない。実装されたもののみをベースに動くため、理解のための文脈はすでにそこに言語化されている。イノベーションを生むような仕事には正解がない。いろんなアイデアを組み合わせることはできるが、どの組み合わせがセンスが良いか判断することはできない。選んだその道を信じて突き進むのも人間の仕事。AIは成功する確率分布を計算するところまでしかできない。
AIと人で難しさの捉え方が違うことを覚えておく。時間がかかる単純作業はAIの超得意分野。AIは疲れず24時間動き続け、ひとつの問題を分割して4つの頭で取り組むことも容易い。一方で、要件が整ってない状況では仕事のパフォーマンスは劇的に下がる。この場合は人間のほうが逆に良い仕事ができる。この違いをよく理解してAIと付き合っていく。