初めまして。
表題のとおり、生成AIの恐ろしさを言語化する試みをします。
結論
本当の恐ろしさは「プログラマの仕事を奪われること」では無い。我々の「考える力」つまり「悩む、というある意味で幸福な時間」を奪われることだと思う。
言語化の試み
衝撃
私は未経験エンジニアとしてとあるIT企業に入社した。数値解析の経験はあるが、web開発の経験はない。そんな私が、研修としてwebアプリケーションのチーム開発に挑戦することとなった。
新人研修の中でGitHub Copilotが解禁され、使ってみた。するとどうだろう。
私自身は「React?Typescript?何が違うの?」という状態にも関わらず、Agentモードを頼るととんでもない勢いでコードが生成される。しかもほぼ指示通りのフロントデザイになっている…もうその時点で、私は全能感に満ち溢れていた。神になったような感覚があった。もうなんだって作れるぜ!…とね。
私はただのCopilot Copilot(Copilotとは「副操縦士」であるにも関わらず)になっていた。
文法も何も分からない。無名関数?オブジェクト?props?そんなものは知らん。見た目が整っていたら良い。
動けば良い。
惨劇
デザインをこうしたい!ここの動きはこうした方が良い!という考えはあり、その通り指示を出し、実装をした。しかし致命的なミスがあった。出力されたコードを何一つ説明できない。もはやconstが定数を表していることくらいしか分からない。でも動く。動くからOK。
そしてある日、悲劇は起きる。
当然ながら、何も「OK」ではなかったのである。
「バックと繋ぎたいんだけど、型がめちゃくちゃじゃない?」
と、チームメンバーにいわれた。Typescriptの"Type"はその名の通り、型を意味する。めちゃくちゃざっくり言うと、
TS=JS+型
ですよね。書き手は型を常に意識することでバックとの結合が容易になる。しかし生成AIは型のことなど全く知らないし、考えていない。私のプロンプトに従って、ただただ「動くフロント」「それなりに整ったUI」を生成し続けるだけだ。
その結果、バックとの結合で大炎上。私はTypescriptのコードを何も理解していないので、「○○ってどうなってる?」と聞かれても答えられない。結果的にスーパープログラマーのおかげで鎮火はしたが、あれは惨劇と呼ぶに相応しい状況だった。
総括
このエピソードから得られる反省点や意見。
- 初学者はAIに頼りすぎないこと(頼らないのは良くない)。華々しいスタートダッシュをきれたとしても、それは開発フェーズ残り30%で爆死リスクが跳ね上がっているだけです。そして初学者なので、何がダメか分からない。動いているのに何故かエラーが出ている…みたいなことに。数値計算をしていた時は、元々の使用言語Juliaをある程度知っており、そこから生成AIが興隆してきたのでこのような悲劇は起きなかったのである…。少なくとも書いたコードは全て責任をもって説明をできる状態になろう。(これはネットに落ちているコードをこぴぺしてきたときもおな)
- 時にはAIに頼らず、着実に勉強をすることが大事。手を動かし、頭を使いましょう。何も考えずコードをタイピングするだけなら人間不要です。しかし働く上で、AIには創出出来ない価値を提供するタイミングが必ず来るはずです。良くも悪くもAIは一般論しか吐き出しません。必ず我々の頭を使うタイミングは来ます。常にAI頼りのコーディング=頭を使わないコーディングをしていたら、いざと言う時に爆死すると思います。
AIに頼らず、AIデトックスをしながら着実に勉強を積み重ねましょう。きっとその先に、本当の意味でAIを使い倒せる「AI人材」になることが出来るので無いでしょうか。