今日は特に強いメッセージとかはない。
ただ、正月休みの次に来た連休で、特に休んですることもない。まあすることがあるとすれば仕事くらいだ。
今日はこの後シラスの特別講義の仕事があるが、まあそれも半分は趣味みたいなもので、もっと真剣に取り組むべき仕事もいくつか抱えている。これは休みという概念がないのでまあ置いておく。
ただ、最近、OpenAI o1の正式版が出て、さらにo1 pro modeとかが出てきてしまったことで、僕の長年の悩みがどんどんなくなっていく現状について語っておきたい。
長年の悩みというと大袈裟だが、「こういうプログラムがあれば便利なのに」と思っていたようなことが、o1 pro modeに頼むと、次々と実現してしまう。
「自分で作れば作れないこともないだけど、なんとなく面倒で後回しにしたまま5年経っていた」みたいなタスクが、次々にAIに置き換わっていく。驚きである。
「まるで魔法じゃないか」
気がつくとそう口に出していた。
それほどまでに、AIによる生産性の向上は凄まじい。
でも同時に思った。「これを使いこなすには、結局、数学の知識が必要だ」と。
数学の知識がないと、AIとちゃんと会話することが難しくなる。「なんとなくこう」とか「なんとなくアレ」ではダメなのである。
しかも、ただの数学の知識ではない。「実用的な」数学の知識だ。
何よりアルゴリズムの知識だ。
アルゴリズムがなんであるか、どんなアルゴリズムが世の中にあるか、またはどんなデザインパターンがあるか、そういうことを知っているかいないかで、AIを使った時の効果は何千倍、ひょっとすると何万倍にも変わってしまうだろう。
恐ろしく幸運なのは、僕が実用的な数学とアルゴリズムの専門家だということだ。僕はゲームプログラマーとして、OSやSDKの開発者、設計者として長い間活動してきた。
その経験が、これほどまでに生きる時代はまさに今だからこそと言える。
僕は時間さえあれば3Dゲームをゼロから作ることができる。Unityやthree.jsみたいなものを使う必要はない。すべて頭に入っている。それは小学生の頃から繰り返してきた。
座標系を理解し、三角関数と四元数を使って頭の中に完全な三次元空間を作り出すことができる。
だが、今やそこに時間は必要ない。
AIに言えばいい。「これ作ってくれ。この数式とこのアルゴリズムを組み合わせればそれでいい」と。
その内容が、期待外れであったとしても、それが「どのくらい期待外れなのか」がわかれば、適切な指示が出せる。
結果に対して適切なフィードバックをすれば、AIは必ず応えてくれる。
AIが背景とする知識は、世界中の膨大な知識人、とりわけプログラマーたちが書いたソースコードとドキュメントによるものだ。
したがって、AIと一番相性がいいのはプログラマーということになる。
プログラマーが最強の知識人であり、人類の頂点に達する時代、それが証明される時代が来たのだ。
どうやら、AIの知識を最大限引き出すためには、自分がプログラマーでなければならない。残念ながら。
プログラムを書かない人がAIについて語るのを見る時、どこか薄ら寒い気持ちになる理由がようやくわかった。
ちゃんと知識を引き出せてないのだ。
例えば三角関数はともかく、三平方の定理については誰もが知ってるはずだ。これすら忘れてしまっているとしたら、もはやそれは実用的な数学が使える人間とは言えない。
三平方の定理は、ゲームプログラマーならDNAレベルで刻まれているような常識中の常識である。
つまり、直角三角形があって、底辺の長さがA、高さがB、斜辺の長さがCだとするとき、c^2=a^2+b^2となるお馴染みの式だ。
これがなぜ重要なのかというと、三角関数の原理にもなっている単純な事実、つまりcosθ=a/cでsinθ=b/cであることもそうなのだが、二つの点の距離を知りたい時、二つの方向(ベクトル)の角度を知りたい時、とにかくすべてがここを起点に決まる。宇宙の法則よりも強固な法則である。
この義務教育で習う素朴だが強力な概念は、しかしほとんどの平凡な非ゲームプログラマーの人々にとっては中学卒業とともに忘れ去ってしまう知識でもある。
最近はゲームプログラマーでも座標を扱わないことがあるので、ゲームプログラマーであってもソシャゲーばかり作ってる人は三平方の定理を使わないかもしれない。
だがこの知識は、結局のところ、現代の標準的なAIの動作を説明するのに、もっとも基礎的な道具となる。
c^2=a^2+b^2で表されるような距離は、一般化するとユークリッド距離と呼ぶが、AIが学習するのも推論するのも、このユークリッド距離に基づいて行う。
なんて僕はラッキーなんだ。このことがゲームプログラムに夢中になっていたおかげで、この話が全く、DNAレベルで理解できる。運がいいとしか言いようがない。
頭の中にユークリッド距離を意識して、それが言葉であろうと画像であろうと、もちろんプログラムであろうと、「自分の欲しい結果」と「AIの出してきた結果」のユークリッド距離がイメージできるかできないかで、AIを実際に使いこなせているかどうかは大きく異なる。
これはかなり根本的かつ致命的な違いなのだが、この単純な事実を理解してもらうのはそれほど簡単ではない。
もっと言えば、ゲームプログラミングに必要な知識のほとんどすべては、AIを活用するために必要な知識であるとも言える。
例えばゲームではモンタージュ効果やツァイガルニク効果、バーナム効果などの心理学的効果をよく用いるが、AIを正しく使おうとする時もこの二つの効果は意識する必要がある。
つまり「ハルシネーション(幻覚)」と呼ばれるような現象が生まれるのは、心理学的錯覚によるものだということを理解しなければならない。
つまり、AIがあたかも人間のように話をするように見えるのは、錯覚であって本当は何も考えていない。
この話を、手触りを持って理解できるかどうかがAIを実際に実用的に使えるかどうかの分水嶺になる。言葉をいくら尽くしても、このことを本質的に伝えることは難しいだろう。
この話を読んで、直感的に理解できるのは、自分の手で3Dゲームエンジンを作り、実際にプロとしてゲーム開発をしたことがある人だけだろう。つまり同じような経験をした人にでないと伝えるのが難しいのがもどかしい。
逆に言えば、AIはいつまで経っても自分の手でゼロから3Dゲームエンジンを作ることはできない。
「いつかできる」と思うかもしれないが、それは結局、誰かが作ったものを模倣したものに過ぎない。僕が小学生のころ、世界のどこにも3Dゲームエンジンは存在しなかった。少なくとも見える範囲では。だから自分で作るしかなかった。アセンブリ言語で。
そうして積み上げていった3Dゲームエンジンは、自分の血となり肉となって今に繋がっている。その経験があるから、専門的な勉強をしなおさなくてもUnityもBlenderも簡単に使うことができる。
今の所AIはBlenderもUnityも使えない(今年中に使えるようになるかもしれないが)ので、GUIで済む話をやっている限りは人間はしばらく逃げ延びることができる。時間の問題だが。
皮肉なことに、人間にとって都合よく作られた錯覚であるGUIが、怒涛の如く進化を続けるAIに対する人間の唯一の避難場所になっている。コマンドラインで解決できることはもう人間の手を必要としなくなっている。
それとて数学とアルゴリズムの知識は最低限必要になる。
今とんでもないことが世の中で起きているのに、ほとんどの人はそれに気づかず、ただ噂話だけを聞いて怯えている。もはやそういう問題ではなくなってきているのだ。
これから先は、「仕事ができる」という言葉の定義が変わってしまうだろう。
それはもう始まっている。
おすすめ記事と編集部のお知らせをお送りします。(毎週月曜日配信)
登録はこちら新潟県長岡市生まれ。1990年代よりプログラマーとしてゲーム業界、モバイル業界などで数社の立ち上げに関わる。現在も現役のプログラマーとして日夜AI開発に情熱を捧げている。