知らないことを書くということ

5 min read

Image

YouTubeを開けばAI、動画もAI、技術系のブログを見てもやっぱりAI。

気が付けば自分の日常はAIにかなり深く根付いていた。

とはいえ、「AIとどう付き合っていくか」は人によってまだかなり違うように思う。習うより慣れろとは言うものの、自分は日中ほとんどAIと対話しているので、今回はあえて「習う」ほうについて考えてみたい。

私は国内外のYouTuberがAIでゲームを作る動画をよく見ている。


そこで一番面白いと思うのは、プロンプトが意外と雑でも成立してしまうことだ。

しかも、プログラマがAIを解説する動画よりも、これまで一度もプログラミングに触れてこなかったような若い世代の動画のほうが参考になることが多い。

副次的な収穫として最近流行っているゲームも知ることができる。1

特に印象に残ったプロンプトがある。

「グラフィックスをこのような感じで本物に近づけてください。コードは最低でも1000行以上の高クオリティで作成してください」

プログラマからすると、「コードは少なければ少ないほど良いのでは」と思わず突っ込みたくなる。

でも、自分にはこういうお願いはなかなかできない。

知識がないから、「そんなことを言ってはいけない」と勝手に思ってしまうからだ。

そして、「そんな無茶を言ってもAIはまともなものなんて作れないだろう」と考えてしまう。

ところが実際には、最初の状態からは十分それっぽく見えるものが出てきてしまう。

もちろん完成品としては粗いし、市販のゲームと比べれば到底及ばない。

それでも最初の一歩としては十分すぎるくらい形になっている。


私はこれまでUnityやGodotのようなゲームエンジンを避けてきた。

知らない世界には踏み込まない。

そんな無意識に築き上げた「バカの壁」の内側だけでコードを書いてきたのだと思う。

ところが動画の若い世代は平気で、

「Three.jsでGTA Vみたいなの作って」

と言ってしまう。

自分なら絶対にそんなお願いはしない。

知識がないから、「そんなことを頼んではいけない」と勝手に思ってしまうからだ。

AIを使いこなす人は、知識量だけではなく、この発想の柔らかさがあるのかもしれない。

もちろん、AIだけで作ったゲームは市販のゲームには遠く及ばない。

それでも、自分だったら衝突判定や3Dベクトル、行列計算あたりで挫折していたはずのものが、最後まで形になる。

これまでのプログラミングでは得られなかった感覚だ。

たまにAIに否定的な動画で、

「これまで積み重ねてきた努力がAIに奪われる」

という意見を見ることがある。

その気持ちも分からなくはない。

昔のプログラミングは、自分が理解していない領域を書くことは、暗黙の了解として避けるものだった。

だからオライリー本を読む。

あの分厚い本が「鈍器」と呼ばれるのも、避けては通れない学習コストという共通認識があったからだと思う。


実は自分にも似たような感覚がある。

RustやC++に対する苦手意識だ。

以前なら名前を聞いただけで「今はいいかな」と避けていた。

でも最近は、自分でも書けるかもしれないと思えるようになった。

そもそも文法も知らないのにプログラミング言語を書くなんて、一種の冒涜だと言われても仕方ないのかもしれない。

それでもコンパイルの手順はAIが全部教えてくれる。

特にMakefileに知らないライブラリや引数がどんどん追加されていく様子を、リアルタイムで追えるようになったのは大きい。

いくら経験者でも、あれを一目見ただけですべて理解できる人はそう多くないのではないかと思う。わからないけれども。

個人的にはRubyKaigiにも参加したし、Rubyが悪いとはまったく思っていない。

むしろRubyという言語そのものは好きだ。

ただ以前の自分は、「もっとRubyを書く」という方向しか見えていなかった。

RubyでできることをRubyで実現する。

そういう価値観の中にいたのだと思う。

最近は、必要なら別の言語を書けばいいと思えるようになった。

一つの言語を極めることだけがプログラミングではない。

そんな当たり前のことを、AIのおかげでようやく実感できた気がしている。


もちろん、最終的にどんな成果物が評価されるのかはまだ分からない。

AIに丸投げしただけのコードで人を驚かせる人が評価されるかもしれないし、人間だけでAIに負けないコードを書く人が評価されるのかもしれない。

正直、今の自分はAnthropicのサーバーが落ちたらコードを書くモチベーションはかなり下がると思う。

かといって、通信に依存しない書き方ができるかと言えばそうでもない。

Rubyを書くにしても、結局はRubyGemsやStack Overflowのお世話になる。2

実装する速さも、ドメインの知識も、結局は知らないことはできない。

だから、どちらが正しいのかは自分にもまだ分からない。

ただ、自分の中で勝手に作っていた「ここから先は無理」という壁は、AIによってずいぶん低くなった。

だから最近は、自分が少しバカだと思えるくらい無茶なお願いでも、とりあえずAIに投げてみることにしている。

案外、そこから思ってもみなかった景色が見えることがある。