「小飼弾の論弾」で進行を務める、編集者の山路達也です。 今回と次回の2回に分けて、9月5日(月)に行われた、UEI代表取締役 清水亮氏との対談をお届けします。
16歳で3DCGライブラリを開発し、2005年にはIPAから天才プログラマとして認定された清水氏は、どんな少年時代を送ってきたのか。PC-98やASCII、I/Oといったオタク話満載! そして、清水氏が今熱中しているディープラーニングは、社会にどんな変革をもたらすのでしょうか?
なお、次回のニコ生配信は、9月26日(月)20:00。SF作家、山本弘氏との対談を予定しています。お楽しみに!
■2016/09/05配信のハイライト(前編)
- 親父の買ってくれたPC-98がすべての始まり
- 先生から「受注」し、分業体制でプログラム開発
- 3D空間をパソコン上に作るのが夢だった
- 挫折を繰り返して、3Dゲームが完成
- 学年ビリの同級生に励まされて一念発起
- 他人の人生まで変えた、驚異の3DCGライブラリ
- 大学は行くべき? 行っても意味がない?
- 学校教育の本当の問題とは?
親父の買ってくれたPC-98がすべての始まり
―――本日はUEI社、代表取締役の清水亮さんをゲストにお招きしています。
小飼:UEIと言えば、独自開発のタブレット端末「enchant moon」。未開封の現物を持ってきました。
清水:すごい! これ、何年ものですか?
小飼:発売されてすぐに買った奴です。
清水:それを開封していない(笑)。こないだビックカメラで、爆安で売ってましたよ。
小飼:そうか、じゃあこれは取っておいて、実際に使うのは安く売っている奴にしよう。
清水:すぐ売り切れちゃったみたいですよ。未だに3年も前の機械を欲しい人がこんなにいたんだということに驚きました。
―――清水さんとしては、enchantMOONをプログラミング教育のプラットフォームにしようと考えられていたんですか?
清水:最初はそういうわけでもなかったんですが、作っていくうちにそうなっていきました。
―――清水さんはどういうきっかけでプログラマになったんでしょうか。
清水:僕は1976年生まれなんですが、ちょうど76年にTK-80というワンボードマイコンが出ました。僕らの親世代には子どもにコンピュータをやらせようと思った人が多くて、小学校に上がる頃にパソコンを買ってもらえる子どもが出てきた。うちの親父は月給が手取りで18万円くらいのヒラの工場勤めサラリーマンでしたが、50万円くらい借金をしてパソコンを買っていました。別に僕のためではなく、自分のために買ったんですよ。
―――何をするために?
清水:勤め先の工場をIT化するためです。BASICプログラムを組んで工場の設備を動かしたり発電機の分析をしたりしてましたね。いわゆる製紙会社で、コピー用紙などを生産する工場です。みなさんが使っていた紙も、僕の親父がBASICで書いたプログラムで生産されていたかもしれませんね。高卒でエンジニアの、普通の親父ですよ。新潟のド田舎でしたが、当時はそういう数奇者が多かった。
小飼:お金持ちのボンボンがパソコンでゲームをするのに飽きちゃって、そういうのを僕が使わせてもらったということはありました。僕自身は子供の頃、金回りがよくなかった。本当の意味で「パーソナル」コンピュータを持てたのは、17、8歳になってからです。車を売り払って買いました。500ドルで買った、ホンダの初代シビックを650ドルで売って(笑)。
―――清水さんがプログラマになろうと思ったのは、お父さんの影響があったんですか?
清水:やれとは言われませんでしたが、親父の差し金だったんだとは思いますよ。僕の属する76世代は、親がパソコンを買ったものの使いこなせず、子どもが代わりに使ってプログラミングを覚えていったというパターンが多い。
―――最初は何にパソコンを使っていたんですか?
清水:6歳だったから、最初はバンバンってキーボードを叩いてた(笑)。当時NECのマシンのキーボードにはGRPHキーがあって、罫線とか記号を打ち込むことができたから、それを使ってロケットの絵とか描いてました。でも、描いたけど、保存の方法がわからない。
小飼:どんなパソコンでした?
清水:PC-98シリーズで、最初にフロッピーディスクドライブの付いたモデルです。最初のパソコンとしては、すごく恵まれていたと思います。
小飼:それ以前は、フロッピーディスクじゃなくて、カセットテープにデータを保存してましたからね。
―――最初にプログラムと言えるものを書いたのは?
清水:その3日後です。まず、DISK BASICというものを最初に読み込まないと、フロッピーディスクに保存できないことがわかりました。次にどうやったら絵を保存できるか。いろいろやってみると、行の頭に数字が付いているものは残るということに気づいた。
―――マニュアルを読まずに?
清水:読まずに。だって6歳のガキですからそんなもんでしょ。だけど、小文字で打ち込んだものが大文字になったりする。そこでちょっとマニュアルを読んだら、「REM」文というのがあって、コメントが書ける。REM文のあとに入れた文字は、プログラムとして保存できるということに気づきました。要は、何もしないプログラムを書いたわけです。実行という概念を知らなかった。
小飼:当時は、OS=BASIC言語の実行環境だったんですよ。パソコンを立ち上げていきなりプログラミングできるというか、プログラミングしかできせまんでした。
清水:何パターンか絵を描いたら飽きてしまって。何とかゲームっぽいものを作れないか考えた。ちょうどその頃、ファミコンが出るが出ないかくらいの時期。マニュアルを読むと、「INPUT」文があってキーボードから文字を入力することができる。IF文を使えば変数AがいくつならGOTOなんとかでどこかに飛ばしたり、PRINT文で文字を表示できる。ついに、僕は自分の絵をPRINT文で表示することに成功しました。次にやったのは、丸っこいインベーダーと四角いインベーダーが出てきて、どっちを殺しますかと尋ねるようにした。「1」を入れるとやっつけることができて、「2」だとこっちがやられたと表示される。
小飼:入力と条件分岐があるんだから、立派なプログラムです。
清水:その後、カーソルキーを押したらキャラクタを右に動かすといった処理をやりたくなったんだけど、当時のBASICはそのあたりから急激に難しくなった。
小飼:BASICごとの方言も大きかった時代ですね。本当にパソコンごとに微妙に文法が違っていて。で、本気出してプログラムを作ろうとすると、PEEK文、POKE文だらけになるという。要はCPUが直接理解できるマシン語を書くことになる。
清水:僕は日本語より先にBASICを覚えました。
―――小学1年生だったら、あまり漢字も知りませんからね。
清水:パソコンがうちに来る前は、自分で作ろうとしていました。NHKの「できるかな」を見たりして工作が好きだったから、同じノリでできるんじゃないかなと。ボビンとエナメル線を使って、シーケンサーみたいなものを作りました。エナメル線をところどころ削ったりしたら、アナログシーケンサーができるじゃないですか。それが2つあったら、2ビットのデジタルシーケンサーになるでしょ。
小飼:確かに。
清水:だけど、電気回路だけでは論理式のANDとORしかできなくて、NOTができない。ここで諦めた。
小飼:チューリング完全にしようとした途端、小学生にはちょっと荷が重くなりますね。メカニカルかつチューリング完全のものはかなり難易度が高いですよ。
清水:父親は電気回路を設計する仕事をしていたのだけど、電子回路でないとできないと言われた。トランジスタの本をもらったのだけど、まったく理解できない。ベースとエミッタとコレクタの概念とか。それで半年くらい悩んでいたら、親父が見かねてパソコンを買ってくれた。あの頃は、家にコンピュータが届く夢を見たなあ。僕はPC-6001とかが欲しかったんだけど、親父はガチでPC-9801を買ってきた。16ビットだとかJIS第2水準漢字ROMだとか。小学1年生だから、第1水準の漢字も知らないのに(笑)。
小飼:その頃、僕は自分のコンピュータを持っていなかったから、ひたすら人のものを借りていじっていた程度。ちょっと羨ましい。僕がコンピュータに本格的に接するようになったのは、大学に入ってから。大学の専攻は化学だったんだけど、不器用で実験があまりうまく行かなかった。しょうがない、僕はデータプロセシングをやろうと。それでコンピュータが面白くなった。いきなり32ビットマシンで、UNIXでした。だからいわゆるパソコンを人が使っているのを見ると、「16ビットのマシンでまともなプログラムなんて組めるんだ、へえっ」て思うくらい恵まれていた(笑)。しかも、最初からTCP/IP(インターネットで使われている通信プロトコル)。僕は清水さんより年上だけど、コンピュータに関しては完全に後輩です。
―――清水さんは、その後どんなプログラムを作ったんですか。
清水:当時、『リンクの冒険』が流行っていたから、横スクロールのアクションゲームが作りたいと思ったのだけど、BASICはグラフィックの描画が無茶苦茶遅い。仕方がないから、テキストで背景の山や主人公キャラを書いて、「これがリンクだ!」と思い込もうとした(笑)。友だちに「俺もリンク作ったよ」と見せたら、「なんだこれ?」と言われて。それで心に傷を負った。もうゲームを作っても人には見せないと。
―――人に見せるようになったのはいつくらいからですか。
清水:小学4年生の頃に転校して、そこに絵のうまい奴がいたんです。そいつが『ドラゴンクエスト』が面白いという。僕はファミコンを持っていなかったから親戚の家でドラクエをやらせてもらったんですが、動きがすごく遅い。これならBASICでもきれいな画面を作れると思い、「いっしょにドラクエ作ろうぜ」とその絵のうまい奴を誘った。方眼紙を渡して、キャラクターをデザインしてもらう。僕は、ドット絵でキャラクターを描くためのキャラクター・エディタを作ると。当時の小学生は、みんなキャラクター・エディタを作ってました。当時はPhotoshopなんて存在しませんから、自分でツールを作るのが常識でした。
―――そのゲームは完成したんですか?
清水:そいつがシナリオをなかなか書いてくれなかった。スライムみたいな最初の敵が出てきたところで終わり(笑)。どうでもいい設定はたくさんできたけど。ただ、このゲームは友だちといっしょに作ったから、バカにされず楽しかった。「動いている、スゲーと」。あの頃は、子どもが読むようなプログラミングの本が今より充実していました。投稿プログラムを掲載していた『マイコンBASICマガジン』も対象読者は小中学生じゃないかな。高校生や大学生が投稿して、小中学が入力する。僕は『ASCII』が好きでずっと読んでました。
小飼:その当時は、僕の興味は数学に向いていたけど、『ASCII』と『I/O』は図書館で読んでました。『I/O』にはDANというキャラクターがいたおかげで、今でも「弾さんって、I/Oに投稿してました?」と聞かれることがありますが、関係ありません(笑)。
清水:DAN、いたいた(笑)。もうおじさんしか、わからないネタだらけ。
小飼:そういうおじさんたちが若い時にいろいろした結果が、今なわけですから。
先生から「受注」し、分業体制でプログラム開発
―――完成しなかったゲームの次は?
清水:IBM 5550というコンピュータが学校に導入されることになり、副校長先生から授業に活用できないかと相談を受けました。 このIBM 5550というのはけっこうダメなコンピュータで、それに比べるとPC-98は神がかってた。PC-98のBASICは、マイクロソフト日本法人初代社長の古川亨さん自身がマシン語で書いていたりする。あと、GDC(Graphic Display Controller)という、今のGPUに当たるものすごく高性能なチップが載っていて。
小飼:ハードウェアアーキテクチャを学ぶには、当時のパソコンの方が楽だったでしょうね。今はすごくややこしいことになっています。
清水:自分の成長とコンピュータの進化がシンクロするから、わかりやすいですよ。 で、家庭科の先生がIBM 5550を授業で使いたいという。「栄養価のレーダーチャートをコンピュータで描かせたいんだけど、君できる?」と聞かれて、できますよと答えたんだけど、1人で作るのはいやだった。仲間がいないと何を作ってもバカにされるんで。プロジェクトチームを立ち上げて、K君にはオープニングの音楽を作ってくれと。
―――いりますか、音楽? 栄養価のレーダーチャートに(笑)。
清水:いるんです(笑)。そこでとりあえず相手を驚かせようと。A君は、オープニングのアニメーションを頼んだ。で、僕は本体部分を作る。
小飼:すごい、当時から分業をやっていたんですね。
清水:音楽やアニメーションが完成しなくても本体部分はできるから、確実に納期には間に合うわけですよ。
―――納期(笑)。
清水:今も生きているノウハウですよ。今は、ここだけ作ってねと優秀な人に頼んで、プラスアルファの部分を僕が作って間に合ったら入れるというやり方をしています。
―――「その世渡り力と政治力に驚く」というコメントが来ました。
清水:僕は世渡り力だけで生きていますから。
小飼:レーダーチャートということは、三角関数も使っているわけだ。
3D空間をパソコン上に作るのが夢だった
清水:三角関数は小学校の2年生くらいからずっと使っているんで。ゲームを作るために使いますから。 僕の裏テーマは最初から3Dプログラミングなんですよ。スター・ウォーズのエピソード4がテレビでやっていて、デス・スター破壊作戦のワイヤーフレーム映像が出てくるでしょ。あれをやりたかった。子どもですごい馬鹿だったから、あれがリアルタイムでできると思い込んでいたんだけど、30年後にあの映像を作った人に会ったんですよ。そのイリノイ大学の先生に聞いたら、あれは1コマ作るのに1時間くらいかかって、3か月かけてようやくあの数十秒の映像を作ったんだと。あの時代にリアルタイムでやろうとしたお前はキチガイだと言われました。ああ、そうなんだと思いました。頭が悪いというのはすごくいいことで、そういう無謀なことに挑戦できるんですよ。できもしないのに、そういうことをずっとやっていた。
その頃、もっと単純な3Dモデルを使った『TANAKAのフライトシミュレータ』というソフトがあって。あと、PC-98の最初のデモとか、神がかってましたよ。星が立体的に飛んでくる。ああいうのを作れるんだとユーザーは思うんだけど、そう簡単にはできない。TANAKAのフライトシミュレータはたんなる平面と線で描かれた背景の山だけで構成されているんだけど、すごい浮遊感を実現していた。敵もいるけど、全然発見できない。一瞬見えたらすぐいなくなっちゃう。すごいクソゲーなんだけど。でも、TANAKAのフライトシミュレータで僕は3D空間の感覚を学びました。ジンバルロックとかそういう概念を体で体験したから、こうならないためにはどういうプログラムを書けばいいんだと。それで代数幾何に興味を持つようになった。
―――最初に、3Dありきだったんですね。
清水:だから今になって「バーチャルリアリティ」と言っている奴らは許せない(笑)。「仮想現実」感と言っている奴は全員ニセモノですから。「仮想」は"virtual"の誤訳です。
―――本来は「実際の」といった意味ですよね。
小飼:「事実上の」ということですよね。
清水:その通り。IBMだかNECだかのエンジニアが「Virtual Memory」を翻訳する時に、「仮想メモリ」と呼んでしまったんですよ。そう訳した人は後悔しているとどこかで読んだことがあります。
―――バーチャルリアリティの訳語はどうなっていたんでしょう?
清水:「本質現実」とか「人工現実」と呼ばれていたかもしれない。
挫折を繰り返して、3Dゲームが完成
―――そうやって3Dを極めていって……。
清水:いや極めてないです。難しいから何度も挫折しています。トランジスタもそう。トランジスタを使えるようになったのは、30歳になってからですから。
小飼:それまで挑戦し続けられた、諦めの悪さがすごかった。
清水:僕は「天才プログラマ」と呼ばれたけど、ただ人より諦めが悪かっただけ。挫けなかった。いや正確に言うと、挫けたけど、またやると。 30歳になってトランジスタが使えるようになった時はうれしかった。「エミッタってこういうことだったのか!」と感動しました。
―――子供の頃、3Dプログラミングのゴールは何だったんですか?
清水:やはり完全なポリゴン3D空間をリアルタイムで実現することでした。今だったらバカみたいな目標ですけどね。Unityを起動したらそれでもう終わりですから。 だけど、あの頃はライブラリもないし、リアルタイムで計算するにはマシン語を使わないといけないし、GDCを直接駆動しないといけない。このGDCがまた融通が利かないんですよ。相当面倒くさかった。
―――その目標を達成したのは。
清水:15歳の時です。ワイヤーフレームで描いた宇宙戦艦を6対6で並べて、戦うシミュレーションゲーム。今考えるとすごいクソゲーだけど、僕の中ではそれが実現できると思うともうワクワクしてた。宇宙戦艦を模した立体的な菱形が指示した場所へ一斉に動いていき、レーザー光線を打つ。立体将棋みたいなものですよ。 「バンザイ!」と思ったら、フロッピーディスクが壊れました。挫折です。
小飼:それは痛い……。
―――どれくらい落ち込みました?
清水:毎日欠かさずコンピュータに触っていましたが、もうコンピュータを見るのはやめようと思いました。2日くらい触らなかった。
―――短いじゃないですか!
清水:ここで辞めたら、僕の10年の努力はどうなるんだと思って。1回作ってうまくいったんだから、もう1回作ったらもっとうまくいくだろうと思い直した。そうしたら1週間くらいで作り直せた。 でも、まだ使い勝手が悪かったりしたので、ライブラリとして整備して。結局、3回作り直したんです。 その時は高校2年生になる頃で、「野球とかテニスをしても将来何の役にも立たないのに、適当にモテていいなあ」と思ってました。
学年ビリの同級生に励まされて一念発起
―――いやな高校生ですね(笑)。
清水:進学校だから、スポーツでプロになるわけでもないし。ただの趣味じゃないですか。そういう無駄なことをやっている奴らが評価される、この評価関数は間違っているだろうと。 一方、僕は学校では落ちこぼれで。コンピュータばかりやっていたから、成績が上がるわけがない。
小飼:でも、学校行っていたのが偉いじゃないですか。僕はその頃学校には行っていなかった。
清水:ダメ人間対決みたいになってきた(笑)。
―――数学だったら相当できたんじゃないですか?
清水:数学が一番できなかった。僕が興味を持っていたのは、代数幾何の中でも直交座標系だけ。漸化式とか全然興味なかった。暇な人がやることだと今でも思ってるけど。
先生のことも「こいつらベクトルのこともちゃんとわかってないくせに教えていて、アホだな」と思っていたんだけど。でも、ほかのことには興味がないから、成績は悪いままにしていて学年でビリから3番目くらいだった。
高校2年生の4月に、学年ビリだったのにやっとこ後ろから1/3くらいまで順位があがったヤツから励まされました。「清水って、学校では落ちこぼれで女の子にモテないし、性格も悪くて評判も悪いけど、コンピュータ頑張っているらしいじゃん」と。「らしい」って、知りもしないんですよ。伝聞形かよ!