プログラミング
AIは悪いツールである
AI Is a Bad Tool (bytecode.news)
要約
この記事は、AIがソフトウェア開発において悪いツールであると主張しています。その主な理由は、AIが不透明であり、検証や保守が困難なコードを生成するためです。AIはデータを抽出するのには役立ちますが、コード生成に使うと時間の無駄になり、既存のソフトウェアスタックにおける適切な抽象化の欠如を露呈させます。著者は、AIが賢くなりすぎるからではなく、多くのソフトウェアの仕事が現在関わっている抽象化されていない作業の無益さをAIが浮き彫りにするため、関連性を失うという恐怖は現実だと述べています。
全文翻訳
AIは悪いツールである
anti-pattern
productivity
software engineering
編集者注: ByteCode.Newsの友人であるHideki Idoru氏がこの記事の掲載を依頼しました。すべての論点に同意できないとしても、この記事は多くの価値があります。今日、業界で広く観察されているAIの失敗モードを見つけることは難しくありません。AIは悪いツールです。少なくとも、AIはソフトウェアにとって悪いツールです。まず、ポジティブな側面から始めましょう。AIはデータ蒸留器(data distiller)として認識すれば役立ちます。以前は、検索エンジンに何かを入力し、最も有望に見える結果をクリックし、ページをスキャンして探している情報を見つけ、それを理解できる方法で処理していました。AIは、もしそれが良質で真実であれば、これらのステップをあなたのために凝縮してくれます。実際、今日の検索エンジンは、結果のトップにAIスニペットを挿入することでこのギャップを埋めようとしていますが、没入感のある部分は、さらにフォローアップして情報を洗練できる能力です。これは手動で行うには長い時間がかかりましたが、機械にそれをやってもらうのは本当に簡単です。ですから、すべてが悪いわけではありません。しかし、それはほぼ終わりです。AIをそれ以外のことに使用する場合、特にコード生成に使用する場合は、時間の無駄です。
なぜそうなるのかに入る前に、AI自体の議論について一歩引いて話す必要があります。それはしばしば、必要以上に感情的になりがちです。その反対派の多くは、生計を失い、本質的に無関係になることへの恐れによって動機づけられています。感情は役に立たないと思いますが、それらは人間の条件についての興味深い洞察を提供します。なぜなら、これから示すように、その恐れは現実だからです(ただし、異なる理由で)。言い換えれば、あなたは無関係になるでしょう。そして、いいえ、それは機械があなたには賢くなりすぎるからではありません。それは、あなたがゴミコードを生成し、それらがほんの少しだけうまくできるからです。
AIが悪いツールである理由は、一般的に言って、完全に不透明だからです。よく聞かれる標準的な質問は、「AIに構築させたアプリは誰が保守するのですか?」です。さて、あなたがAIの列車に完全に乗り込んでいるなら、あなたは言うでしょう。「機械です」。もしそれが構築したなら、それは確かに保守もできるはずです。それは間違いではありません。本当の質問は、AIが構築したものが良質で真実であることを誰が検証できるかということです。最近、AIがソフトウェアのセキュリティ上の欠陥を発見したという主張が多くありますが、それは証拠のない主張です。そのため、非機械による検証が必要であり、議論の余地がありますが、検証プロセスは、そもそも問題を見つけるのに必要な労力と同じか、それ以上の労力を必要とするでしょう。同じ論理が、AIに構築させたアプリにも当てはまります。それが意図したとおりに機能していることを誰が検証するのでしょうか?それはそう見えるかもしれませんが、悪名高いことに、Schein(見かけ)とSein(実体)は同じではありません。そして、既存の実装のテストを書くとき、AIは仕様の観点から盲目的にテストを書くのではなく、実装に合わせるようにテストを偏らせることが悪名高いことで知られています。それは問題を解決するのではなく、解決したように見せかけるだけです。
AIが完全に不透明であるということは、「AIエンジニアリング」や「プロンプトエンジニアリング」が、かつてのSEOと同じように、完全な詐欺であることも意味します。ブラックボックスの機械を巧妙に操作できるという主張はすべて、偽りです。相関関係を確立する方法はなく、機械がどのように機能するかについてあなたが幻覚するかもしれないどんなパターンも不安定です。要するに、あなたはソースコードにアクセスできません。たとえアクセスできたとしても、おそらくそれを理解する精神的な処理能力はありません。そして、たとえそれがあったとしても、AIは非常に速く動くため、あなたが導き出すことができるどんなパターンも意図的に真実であることはありえません。あなたは本質的に愚かなわけではありません。機械は非常に賢い人々によって構築されたのであり、彼らはあまりにも賢いために、おそらく彼ら自身もそれを完全に理解していません。したがって、AIはあなたが覗き込むことのできないツールです。それは「信用してくれ、兄弟(trust me bro)」の機械による実現形です。
その場合、それが組み込まれた人間の無関係になり、取り残されることへの恐れをなぜそれほどまでに露呈させるのでしょうか?なぜそれにそれほど反発するのですか?なぜなら、今日AIにやらせているどんなプログラミングタスクも、あなたが自分の仕事を適切に抽象化できていないことに起因するからです。AIにシンボル名を変更させる場合、それはあなたのLSP(Language Server Protocol)が処理すべきことです。AIにプロジェクトの足場(scaffolding)を組ませる場合、おそらくその足場はあなたのフレームワークが担当すべきことです。AIに生成させるコードの各行は、抽象化を減らし、繰り返しを増やす可能性が高いです。AIが行うことはすべて、あなたのスタックにおける適切な抽象化の欠如を露呈させるだけです。そして、それについての問題は、もしコードが適切に抽象化されていたなら、あなたはおそらく職がなかったでしょう。しかし、現状では、機械は抽象化されていないコードを生成する上であなたよりも優れています。
言い換えれば、AIが行うことがすべて些細なコードを生成することであるなら、それは些細な方法で抽象化可能であるはずです。もしそれが非些細なコードを生成するなら(それはしませんが)、それはその入力に基づいてどのようにそれを達成したのかという疑問を投げかけるでしょう。しかし、その不透明さと、おそらく理解できない何かを自分で確認する必要があるという事実のために、それは依然としてあなたには何も得られないでしょう。それは非問題を解決するか、非問題を作成します。ここでの大きなポイントは、AIの出現ずっと前から、ソフトウェアのほとんどの仕事は無益だったということです。AIは単にその仮面を剥がしただけであり、それが人々を狂わせているのです。
では、これからどうなるのでしょうか?AIによって加速されたソフトウェアの世界が、AIがすべての無益で抽象化されていない仕事を行い、ごく少数の天才だけが天空の上で操作するため、誰も何もすることがなくなる死の墓地になるという結果にどう対処すればよいのでしょうか?残念ながら、これに対する良い答えはありません。おそらく人々は、AIという幽霊とその偽りの約束を追いかけるのではなく、自分の情熱に従うことに戻る必要があるでしょう。おそらく、あなたが構築したものに情熱を持ち、それを完全に理解し、完全に所有し、AIの脅威に決して屈しないように適切に抽象化することが、唯一の道かもしれません。