インタビュー記事

interview

第3回 上野康平 氏

ueno_main

今回は、史上最年少で天才プログラマー/スーパークリエータの称号をIPAから贈られた上野康平さんにお話をお聞きしました。上野さんは17歳で未踏ユースに採択。アメリカで飛び級を重ね、19歳にして千葉大学理学部先進科学プログラム3年生。同じくIPAで未踏に採択さて、スーパークリエータの認定もされているひげぽん(higepon)こと、蓑輪太郎さんのご紹介で、今回の企画が実現いたしました。3次元空間を統べる若き天才プログラマーのお話を存分にお楽しみください。

※取材日は、2008年3月です。所属や役職などは当時のまま掲載しております。

<PCとの出会いは?>
川井:PCを最初に触ったのっていつぐらいですか
上野:小1の頃には触ってたかなと思います。
川井:小1っていうと何年前くらいですかね?
上野:えーっと何年前なんでしょうね (笑)
川井:何年前だ? まだ10年経ってないのかな・・・
上野:いやいやいやいや。
川井:あ、小1か。とうことは6歳だ。
上野:ですね。
川井:どんなきっかけで触ったんですか?
上野:父親が、電子工学系の出身だったこともあって、身近にコンピューターとか、コンピューターの前のマイコンボードが目の前にあって、結構それを触らせてもらえる環境にあったので、自然とそれをおもちゃ代わりにして遊んでいた感じです。
川井:何が面白かったんですか?
上野:小さい頃のことなので、何が面白かったのがわからないんですけど、ボタン押すのが好きだったんだと思います(笑)
川井:最初に触ったマシンなんて覚えていたりしますか?
上野:最初にさわったマシンは・・・よく分からないですね。たぶんTK85かPC88かそのあたりだったと思うんですけど。。。
川井:それから小学校の間は何かその先のステップアップはあったんですか?
上野:ずっとPC98でしたね。PC98と、Windows95が出始めたぐらいだったかな。
川井:どういったきっかけで次のステップに進んだんですか?
上野:家の環境が自然とそうなったっていう感じですね。
川井:具体的にはどんなことをやったりしていたんですか?
上野:PC98でもMS-DOSとかだったので、N88-BASICでプログラム打っていました。
川井:なんのプログラムやっていたんですか?
上野:BASICマガジンっていうのがあったので、それのプログラムを打ち込んでいました。当時はそんなに組めなかったので、それを改造して遊ぶ程度でした。
川井:打ち込んでみて、いじって、おお動いたみたいな感じですか?
上野:まあ、ほとんど打ち込みの途中で挫折しますけどね (笑) あれ小学生には長いですよね。
川井:(笑)
上野:今、打つとすごい短いなって思いますけど、当時は、50行打つのに、キー捜してとかやってると1時間以上かかりましたからね。
川井:そのベーマガはお父さんが買っていたんですか?
上野:いや、私が買っていました。
川井:あ、自分で(笑) なんでまた買ったんですか?
上野:なんででしょうねぇ?よく覚えてないですけどね。ちょっとあまりにも昔すぎてなんで買ったかよくわからないです (笑)
川井:(笑)
上野:でも、途中でアメリカに行ったんですけれども、それでも海外からわざわざ取り寄せてましたね。
川井:何歳ぐらいからアメリカに行ったんですか?
上野:小3の夏です。8歳か9歳ですね。
川井:それはご家族のご都合で?
上野:はい。
川井:どちらに行かれたんでしたっけ?
上野:アトランタの方ですね。そこから引っ越したりしたんですけども、小学校時代はアトランタの方に3年間ずっといました。日本でいう小学校なんですけども、一応5年で卒業なんで、そのまま6年生と、中学一年生までいました。
川井:全部で何年ぐらいでしたっけ?
上野:6年・・・だったと思いますね。あんまり正確に覚えてないですけどね(笑)
川井:日本人向けの学校というより向こうの学校ですか?
上野:はい。ジョージア州だと、日本人向けの学校はあるんですけども、週一度なので、土曜学校みたいな感じでした。他の日は現地の学校に通う感じでした。
川井:最初は大変でしたか?
上野:はい・・大変・・でしたね。だけどもうあんまり覚えてないです (笑)
専門学級みたいのがあって、市にその学級やってる学校がひとつしかないので、わざわざバスで通ったりしましたけど。そういう学級に2年間通って、やっと普通のクラスに戻ったという感じですね
川井:ふんふん、じゃあ慣れるためにそういうのをやって、普通のクラスに戻るって感じだったんですね。
上野:はい。
川井:たとえばその、BASICでプログラムやってみようとかいうのは、周りにそういうのやってる子がいたんですか?
上野:いや、いなかったですね。
川井:いなかったんですね。じゃあ、お父さんの影響だけみたいな感じですか?
上野:父の影響かはよくわからないですけど (笑)、まあ、そういう触れるような環境があったことは確かです。
川井:じゃあ友達とわいわいその話をしたりではなくて、黙々と一人でやっていたんですか?
上野:そうですね。小学校時代はずっとそういう感じで、中学校に入ったらインターネットがやっと使えるようになって、そうするとだんだんプログラミングのコミュニティとかにも参加できたりしましたね。
川井:中学校でコミュニティに入っていたんですね!
上野:といってもコミュニティもいろいろですからね。今でも自作OS界隈とかかなり低年齢の方がおられて、結構アクティブに活動してますし、私が入ったのは、PDAの開発者のコミュニティだった感じです。マイナーになると結構誰でも受け入れてくれるんですよ。
川井:ネット上だと年齢とかわからないですもんね (笑)
上野:わかんないですね。・・・・まあ、わかりますけどね (笑)。いや、わかりますけどねって、まあなんとなくわかるじゃないですか (笑)
川井:若いっていうのは、ばれていたんですか?
上野:いやあ、わかんないですけど、ばれていたんじゃないでしょうか (笑)
川井:PDAっていうとあれですか、ソフトの開発ですか?
上野:WindowsCEのソフトウェアですね。WindowsのプログラミングのWin32PIは最初に見たときに、わけがわからなくて、PDAのWindowsCEでもほとんど同じ感じなんですけども、なんかそっちの方がとっつきがよくて。当時そっちの方が開発環境が無料だったんですよね。エンベデットビジュアルC++3.0ってのがあって、それを使って組んでいたりしました。でも特に何か発表したものはなかったですね。
川井:これって中学生のときですよね?
上野:そうですね。ただ、Pocket PCでMIDI音源を操作するライブラリみたいなのを書いて、それでちょっと問い合わせが来たりとかありましたけど、まあそれぐらいですね。
川井:すごいですね。
藤本:ちょっとベーマガのところの質問に戻ってもいいですか?
上野:はい、いいですよ
藤本:ベーマガで、大体ゲームとかから打ち込んでみようというような感じで取っかかりになると思うのですが、今でも記憶に残っているプログラムってありますか?
上野:ベーマガは正直ほとんど打ち込む途中で挫折したやつばっかりだったので、完全に動いたやつってあったかなかったか覚えてないぐらいなんですよ。
藤本:なるほど。
上野:ただ当時MS-DOSのDosBASICだったので、MS-DOS上でそのBio_100%っていうグループがフリーウェアでどんどんゲームを公開していて、それがN88-BASICで動いてるプログラムと雲泥の差なわけですよ。やっぱり彼らは機械語でバリバリやっているから(笑)。そういうのにあこがれたりはしました。Bio_100%は今のドワンゴの旧メンバーみたいな感じですね。
川井:ゲームには当時あまり興味なかったんですか?
上野:テレビゲームは・・・やっぱりCGに興味があったんですよ。(笑)ゲーム本編よりも、うわぁ、このCGすごいみたいな感じでした。
川井:グラフィック?
上野:当時CG始めたのがたしかベーマガからで、3DCGの数学っていうのは小中学生には難しいわけですよ。なので、今誰も知らないんですけど(笑)、当時マイクロソフトの方が連載されていたダイレクトアニメーションの連載があって、今思うとあれものすごい先をいきすぎてた技術だと思うんですけど、Webブラウザ上でダイレクト3Dが触れる技術なんですよ。そういう用途ですからすごい使い方もシンプルで、2・3時間もあれば簡単なプログラムも組めるみたいな感じだったんです。それでだんだん3Dプログラミングにはまっていった感じです。
川井:なるほど。その頃からそういうグラフィックへの興味はずっと継続している感じですね。
上野:そうですね。
川井:高校はこちらの高校になるんですよね?
上野:はい、高校は東京の方です。
川井:普通の高校に行かれたんですか?
上野:普通なのかなあ・・・学芸大学附属っていう高校でした。
川井:学芸大学附属。何か特別なコースとかじゃなくて?
上野:とりあえずそこが帰国子女入試をやってたんです (笑)
川井:なるほど。高校時代になって日本に帰ってきて、環境とかやることとかっていうのは変わったりしたんですか?
上野:帰国生が非常に多かったんですよね。
川井:帰国子女が多かったんですね。
上野:学芸大学附属には、帰国生向けの学校と帰国生向けでない方の二つがあって、私は帰国生向けでない方に行ったんですけど、内情は実はすごい多かったというのがありましたね (笑) 。3・4割は海外経験があるような人でした。
川井:違う方に行っても3・4割が海外経験あるんですか?!(笑) 
上野:そんなに何か不安に感じるとかいうことはなかったですね。
川井:高校に入ってからはコンピューターの方とはどういうお付き合いの仕方をしたんですか?
上野:高校のころになると結構CG関連のコミュニティとかに顔を出したりとかしていましたね。まあよく顔出したなって思いますけどね (笑)。 そんなところに行ってどうするんだろって (笑)
川井:(笑) たとえばどういうコミュニティに?
上野:シーグラフ東京(http://www.sig-tokyo.gr.jp/)っていうのがあるんですけど、そこが主催するライトニングトーク会みたいなのとかですね。私は発表はしませんでしたけれども。
川井:とりあえず聞く方ですね。
上野:はい。あと、論文実装コンテストみたいなのを聞きに行ってみたりとかですかね。
川井:まだ高校生ですよね?
上野:はい。ちゃんと参加できるようになったのは最近になってですよね。まあ当時はひたすら聞いているばかりでしたけど、それでもいい刺激になりましたし、実際になにか疑問に思ってることがあれば聞けるっていうのはすごいいいことでしたね。
川井:なるほどなるほど。

Web系の言語について
川井:基本的にはCGにずっとご興味をもってその世界でいらっしゃったんですか?
上野:そうですかね。まあ高校のころはインターネットでWeb関係もやってたりしたんですけどね。当時はまだあんまりRuby on Railsっていってなかったんですけど、バージョン1.0になる前ぐらいのRCの前のβ版のときはずっとRuby on Railsでプログラムを書いたりしてましたね。なんかだんだん有名になってきたから嫌になってきちゃった (笑)
川井:そういう人いますよね。まつもとゆきひろさんを尊敬しているって書いてありましたね?
上野:そうですね。Rubyを最初に見た時は、嫌だなって思ったんですけど、実際使い始めてみたりコミュニティに触れてみると、これは素晴らしいなと気付いたんです。あと、言語仕様がとにかく気にいったんですよね。
川井:具体的にどのあたりが気に入ったんですか?
上野:他の言語のいいところを積極的に取り入れてるところとか、あまり変化を恐れない所ですね。まあそれは致命的でもあるんですけどね (笑)
川井: C++もこの精神があったらって書いてありましたね (笑)
上野:普段はずっとC++で書いているんですけどね。C++の次ぐらいにRubyはずっと書いていましたね。
川井:コミュニティが気に入ったっていうのはどのあたりが?
上野:コミュニティが気に入ったっていうほどRubyのコミュニティには参加してないんですけど、ただ周りから見ていてすごいいいなと思ったって感じですね。
川井:他のコミュニティと比べてRubyのコミュニティはどんな感じですか?
上野:初心者を受け入れるコミュニティっていうのは多分PHPとかの方だと思うんですけど、あそこまで大規模になっても開発者が積極的に出てきていたりだとか、まあLinuxもそうなんですけど、開発者本人が出てきていますよね。ああいうものを大規模になっても失っていない感じが好きですね。
川井:そうですね。開発者とか、コミュニティの中心の方がそのあたりにいて、普通に会ってしゃべれますもんね。
上野:そういう感じですかね。
川井:なんかこの間、高橋征義さんと話をしていたんですけど、「Rubyのコミュニティは結構つかず離れずみたいな感じがいいんですよ」っておっしゃってましたね。ふらっときてふらっとしゃべってふらっと出て行ってもOKみたいな (笑)
上野:そういうとこありますね。
川井:密にコミュニケーション!とか一体感を!ってあまり強調しないって言ってましたけどね。
上野:LL関係はそういうのが多いんですけどね。その中で思想的に合うのがRubyかなって感じです。
川井:他にWeb系でやっていた言語ってあるんですか?
上野:Web系ですとRubyぐらいかなあ・・・最近PHPとかそういったものを一通り覚えましたけど。
川井:一通り覚えたんだ。すごいですね。新しい言語習得するのってあんまり抵抗なくすぐにできる感じなんですか?
上野:言語仕様を一通りさーっと読んで、あとは基本の操作関数読めば、だいたい読めますよ。
川井:そんなもんなんですか?
藤本:私からすると、わかった気分にはなれるんですけど、実際作るのっていったらそこまで早くは読めない・・ですね (笑)
上野:基本的に、言語を使えるようになるっていうのは2段階あると思うんですよ。とりあえず書けるっていうだけだったら、過去のやつに似通っていれば2・3時間あればその言語を書けるようになるんです。でも、その言語における正しさみたいなのはおっしゃったみたいに分からないんですよ。そういうのは、その言語で1週間2週間、その言語で書き続けないと、なかなか見えてこないんです。
川井:使いこなすっていう感じですね。
上野:使いこなすというか、文化というか・・・雰囲気っていうと違うんですけども、こう書くのがこの言語にとって正しいみたいなのがいくつかあって、そういったデザインパターンみたいなものがなかなか・・・使いこなすみたいにはいきませんけど。
川井:それでもそれだけ短期間である程度書けてしまうんですね
上野:でも、そんなもんじゃないですかね。ほとんど似てますからね。
川井:理屈ではそうなんですけど、でもなかなかできないって話ですよね (笑)
藤本:いや、いろいろな言語を一から触られたからきっとそこまで理解が早くできるんじゃないかなっていう感じがしますけど。
上野:・・どうでしょうねえ (笑)

Web系以外ではどんな言語を?
川井:Web系以外ではどんな言語を?
上野:Web系以外では最近は関数型言語とかですね。あれは片っぱしから手をつけて、”Hello, world!”を書いて去っていくみたな感じですね (笑)
川井:(笑)
上野:簡単なフィボナッチ関数とかを書いて満足して去っていくみたいな感じです(笑)
川井:フィボナッチ関数ですか(笑)
上野:関数型言語は考え方としては非常に面白くて。実際に使ったりもするんですけど、まともにやったのはHaskellぐらいですね。他はほんとに”Hello, world!”ぐらいですね(笑)
川井:数学にも結構興味があるって伺ったんですけど
上野:数学はですね・・・興味があるというか、必要だから覚えるしかないんですけど、好きか嫌いかでいうと好きな方ですね。基本は数学的センスがないので、やっぱり周りで飛び級されてる方とか見ると、普通に感じますよ。彼らより早く理解はできないから、ちょっと時間がかかりますね。逆にコンピューターとかになると、私の方が早くとかできちゃんですけどね。私の場合は数学は必要ですからね。コンピューターグラフィックスは基本的に数字シュミレーションが主なので。
川井:武勇伝のMedewのオーサーの宮下尚(himi)さんのってご覧いただけました? 今IBMの大和研究所にいるんですけど。EmacsをWindowsベースでも使えるようにするプロジェクトをやっていた人なんですけどね。彼なんか数学が強いプログラマーなんですけど。彼はまずやりたいことを全部数式にして、それを、ソースにするそうなんです。だから全く普通の人には自分のソースは分からないんじゃないかって言ってましたよ。
上野:3DCGのプログラムをやるときも基礎方程式があってそれを分解して、それをこういうモジュールにするかと考えて作ってくんで、基本的には同じですね。ただ多分そこで違うのは、私が使うのは基本的な微積分学なんですよ。微積分学は微積分学で難しいんですけど、多分、彼がやっているのはコンピュータープログラムの数式なんでしょう。あれは計算理論なんですごい難しいんですよ。
川井:数式は最強のプログラマムだって言ってました。
上野:Medewっていうんだったら分かりますけどね。あれはEmacslispのインタープリターが乗っている話なので、それだったら数式から組んだ方が早いかもしれないですね。今実際Haskellでプログラム組むときも結構そういう感じになりますね。基本的に、数式とまではいかないですけど、それに近い形の抽象化をした方がきれいに書けるんです。
川井:宮下さんと話が合うかもしれませんね、。
上野:でも、数学に関してはほんとに大学の数学をやってるくらいなので、そんなに深くは知りません(笑)
川井:もしよかったらお帰りになって彼のを読んでもらって興味あればおつなぎしますよ(笑)
上野:私はそんなにEmacs使う人ではないですからね。
川井:昔は使っていて、今変えたって言っていましたね
上野:昔は使っていましたね。ただ、最近ずっとVimを使ってますね。Emacslispは非常に難しいんですよね。あと、Emacslispに関して言うとあれはlispで書かれているように見えて実はlispじゃないというか。Eemacslispって手続き型的な書き方もできて、関数型言語なんだけど無理やり手続き型で書いているプログラムが多すぎるんですよ。だから非常に読んでて、疲れるんですよね。そういったところであんまり好きじゃないんですよね。
川井:宮下さんもソースを徹底的に読んだそうで、わかるまで半年ぐらいかかったって言ってましたね。
上野:Emacsは非常に大規模ですからね。
川井:最初全くわからなくて、半年間読み続けてやっとなんかあるときわかったって言ってましたね。それが一番今のコードを書く力になってるって言ってました。
上野:個人的にはあまり賛成できないですけどね。やっぱりパッと見てわかるプログラムじゃないとダメだと思います。
川井:なるほど。そういう見方もありますよね。ちょっと話それちゃいましたけど、Web以外の開発言語は何をやってるんですかって話でしたよね?
上野:PHP、Perl、Ruby以外だと・・・ほんとに昔にやったBASICとかですかね?
川井:一通りやりましたって感じですか?
上野:いや、やってないのは、VM系列ですかね。JavaとかC#とかはあまりやっていないですね。個人的にあれを使う場面にあまり遭遇したことがないですからね。あれで作るというと、だいたいデスクトップのGIアプリなんですけども、今はだいたいデスクトップアプリでも私のように3Dバリバリ使うようなやつだと、C#やJavaでは物足りなくて、C++で書くことになりますし、だからといってそこまで力がいらないやつだと、今はWebインターフェースにする方が正しいじゃないですか。だから簡単なHTTP Server、Serverサーバーまで書かなくてもCGIプログラム書いてそれで制御するとかになっちゃうので、あんまり個人的に使うところがないんですよね (笑)
川井:そういうことですね。
上野:あ、ただ・・・そういうのには最近ActionScript使って書きますね。AS2は挫折したんですけど、AS3はすごいわかりやすくて。後Javascriptとかですかね。
川井:今使ってらっしゃると。
上野:まああまり書かないですけどね。AS3なんてほんとに始めたの最近ですしね。
川井:プログラミング能力は書いたコードの量だっておっしゃってたじゃないですか。結構ご自身では相当書く方なんですか?
上野:いや、書かないですね (笑) 書くの遅い方ですね。
川井:そうなんですか (笑)
上野:いやあ、結構納得いくまで書き直す人なので、だいたい1日に2,000行ぐらいですかね。
川井:一日に2,000行ぐらい・・・でも納得いくまで書いているということは、書いてる時間はすごい長いってことですよね
上野:いやもう・・書き直しますからね (笑)
藤本:書いて直して書いて直して、出来上がったのが2000行っていうことですよね。
上野:まあめったにそんな数字出ないですけどね。普通1,000行ぐらいかな。
川井:一日フルでやったときにそのくらいってことですね。
上野:はい。
川井:年間だとどれくらいとか意識したことあります?
上野:年間とか意識しないですね。普通に学校行ってるときとか結構忙しいので、そういうときはほとんど進まなくて、テストケース1個作って終わったとかそんな感じですからね。
川井:なるほど。わかりました。

高校、大学について聞かせてください
川井:大学はどういう風に選んだんですか?
上野:大学は完全に早く行きたかったんです。早く行きたかったというか受験したくなかったんです。
川井:あ、そうなんですね。
上野:あ、そう書くとだめなのかなぁ (笑)
川井:(笑)
上野:受験したくなかったというか、もうちょっとまともな理由だと、ずっとコンピューターグラフィックスやっていたかったんですよ。それを受験で煩わせたくなかったんですよね。
川井:あ、それは正しいですね。
上野:やっぱり1年ロスしちゃうと、わけ分からないんですよ。
川井:今やっぱり一番大事なものに時間を費やしたいっていうことですよね。
上野:そうですね。それが正解だったのかなあとは最近思いますけどね(笑)。でもまあやっぱり大方正しかったのかなと思います。
川井:飛び級って向こうの方でされたんですか?
上野:いや、日本でですね。アメリカだと単位ごとというか、教科ごと科目ごとだったので、向こうでは理系科目をちょっとそんな感じで取っていました。
川井:日本に来てからは?
上野:日本に来てからは高校は普通に高1、高2っていって、そこから入試を受けた感じですね。
川井:大学入ってから飛び級してるわけでもない?
上野:大学入ってからは特にないです。
川井:じゃあアメリカでひとつ飛んでるってことですかね?形的には。
上野:たぶんグレードは変わらないんですよね、やはり。APとかAP何種みたいな感じなので。
川井:なるほどなるほど。でもこれからまたたぶんマスターとかだと飛び級もありだと思いますけど。
上野:いやぁ、なかなかできないですよ。研究にもよりますけど、コンピューターグラフィックスはかなり難しいですからね。
川井:難しいっていうのは、研究するのに時間がかかるっていうことですか?それともライバルがいるっていうことですか?
上野:結構相当煮詰まってる分野ですからね。
川井:なるほどなるほど。じゃあ新しい何かを生み出すのが難しいってことですね。
上野:そうですね。コンピューターグラフィックスでも私は結構狭い分野なので、その中に留まってると普段から結構まずい気がしますね。
川井:なるほど。すでに、もうそういう危機感をお持ちになってるんですね。
上野:やはり、もう20年ぐらい研究されている分野なので、なかなか新しい事って言うと本当に見つけるのが難しいですね。
川井:革新的な何かじゃないとなかなか難しいってことですね。
上野:革新的な何かっていうのがあといくつ残っているかってことが課題ですけどね。
川井:実際本格的にコンピューターグラフィックスに自分の精力を傾けて研究を始めたのはいつぐらいからなんですか?
上野:中学校3年ぐらいからですかね。
川井:中3からもうそういう状態なんですね。
上野:論文を書き始めたのがそれぐらいですね。でも今はその頃ほどやってないですけどね。
川井:英語の論文ですか?
上野:そうですね。最近はどっちかというと並列計算とかばっかりやっていますね。やはりCGに行き詰まりを感じているっていうのと、あと数学的にもあれは相当難しくなってきていて、ついていけないことはないんだけども、これを理解するだけじゃなくてこれからさらに新しいものを生み出せるかっていうと、そこまで自信がないというか、まあ狭いとこに閉じこもっていても仕方がないですからね。
川井:なるほど、いろいろ考えるタイミングなんですね。

レンダラーについて
川井:スーパークリエイター認定になってですね、このレンダラーっていうのって、一般の人に分かりやすく言うと、どんなことを具体的に研究してどういうアウトプットを出そうとされたんですか?
上野: CGの研究っていうのは、基本的にいろんな分野の中では特殊な方で、すごい産学が密着してる分野なんですよね。日本ではあんまり見られないんですけど、アメリカの方では学会とコンベンションが同時に開催されるような形になっていて、で、新商品の発表が学会で行われるとかよくわからない世界になってるんですよね (笑)
川井:へ~(笑)
上野:それぐらい密着している世界なんですけども、それでもやっぱりちょっと乖離しているなっていう部分はあって、レンダリングという分野をずっと研究しているんですけども、平たく言うと、どうやってものに色をつけるかっていう工学計算っていうとおかしいんですけども。。。ただ単に投影するだけで輪郭は簡単に書けるんですけど、そこにどの色を塗ればいいのかっていうのはやっぱり計算しないと分からなくて、それを証明計算からやるとか、イラストタッチで塗るとかいろいろあるんですけども、その塗り方の研究をするんです。そこで工学計算をするんですけども、学会では非常に精密な工学計算をベースにしている論文が多く出ているんですよ。それに対して、産業の方だと、シュミレーションはするけれどもそこまで精密なシュミレーションではなくて、あくまでこういう風に数字をいじればこれらしき絵が出るといった形のチューニングのレベルなんです。一見、産学が並行していっていつように見えるですけど、やっぱりちょっと離れてるようなところもあって、そこをうまくまとめようとした感じの研究をしていたんです。
川井:なるほど。そういうアカデミックな世界の緻密なものと、実用的な商業開発みたいなものをくっつけながら新しいものができないかっていうようなことをやってたんですね。
上野:まあ、両方の技術を殺さず、まとめる感じですね。
川井:妥協するわけでもなくってことですね。
上野:そうですね。
川井:これってでも結構難しいですよね。
上野:なかなか説明に困るんですよね、パーっと一言で説明できないので(笑)
川井:なるほどなるほど。産学の目的ってやっぱり別なんですか?
上野:いえ、目的が違うんですよ。論文の方だといかにノイズを減らしてとかそういった方向に傾きがちなんですけど、実際に求められてるのは、ノイズは出たら消せばいいからとかいうことなんです。たとえば今盛んにアンバイアスドってのが叫ばれているんですけど、それって何かっていうと、数学的に統計学的に正しいかどうかっていうのと、それがほんとに使いたい絵かどうかっていうのは全く別のことだよねってことなんです。そういうところをうまくまとめようとしたっていう感じですかね。
川井:なるほど。難しい・・・ですね(笑)
上野:だからよくそんなのを選んだなって感じですよね(笑)。わけわかんないじゃないですか。私もよくわかんないですし(笑)
川井:そうなんですか(笑)。この領域にいきついた理由とか何かあるんですか?
上野:一番やっていて面白いんですよね。何が面白いのかよくわからないんですけど、結果的に数式の山から絵が出てくるんですよ。何でここがこう、このぐらい暗くなるのかとか、自分のプログラムに全部原因があるので、おかしなところが出たら必ずそのどこかに原因があるし、逆に正しいことが出たらなんでこの効果が出たのかって自分の頭の中でちゃんと分かるっていうことですかね。
川井:なるほど
上野:あと、コンピューターの中であんまり数学を使う分野ってないんですよね。先ほどのMedewの話でも、数学は数学なんですけども、計算理論なんですよ。計算理論って、一般的な数学とはまた違いますよね。そうではなくて、普通に微積分学とか、そういうのを使うと、なんかそういうのって格好いいじゃんみたいな感じですかね。
川井:なるほど。ちょっと毛色が違ったというか、個性がある感じがしますね。そんな世界にいながら大学に煮詰まってきちゃっててっていうさっきのところに行くわけですね。
上野:でもまだまだわからないですけどね。私もその分野に関してやっと入り口に立ったって感じですからね。その分野でも今になって統計数学の分野と盛んにコミュニケーションをとれてるところを見ると、やっぱり他の分野にも専門をもつ必要性みたいなのを感じますよね。専門ひとつでやっているとそれこそ専門バカになっちゃいますからね。
川井:その面白みっていうのはどの辺にあるんですか?
上野:やっぱり画像が出るっていうのが面白いですね。
川井:やっぱり、数式から画像が出るっていうプロセスが面白いっていう感じなんですね。
上野:はい。ただ色を塗るんじゃないですからね、やっぱり。色ひとつ決めるのに人間ではできないような数式を解くわけですよね。
川井:その色を決めるっていうのはちょっとイメージがわかないんですけど、どういう・・・
上野:色を決めるっていうか、RGBの配合を決めるんですけど、その裏にこういう数式があったのかっていうのが面白いですね。
川井:すいません、素人っぽく聞いてしまうんですが、その適切な色っていうのは、たとえばこの写真を取り込むときにどういう色あいが適切なのかとかじゃなくて、照明の暗さとかそっちの方ですか? 物理的なそういう問題の方ですか?
上野:はいはい、そういうのですね。
川井:影だからこのくらいだとか・・・
上野:まあ影だからこの光源からは遮られていてとかですね。
川井:そういう、たとえば360度、うしろ向いたときにはこっちの色がこうだとか、このあたりの色がこうだとか・・・
上野:そうですね、それは基本的に積分するんですよ。
川井:なるほどね~。面白そうだなあ。数式で決まっているんですね。色を人が塗ってるんじゃないんですね。
上野:いやまあ、その数式は結局人が決めるんですけどね。
川井:本来、人が決めることを自動化しようっていうようなことなんですか?
上野:いやいや、そうではなくて、結局シュミレーションモデルなんですよ、やはり。このモデルにそって計算するとこういう結果が出るっていうことですね。
川井:なるほどね~
上野:そこらへんに楽しさがあるっていうのと、あとやっぱりレンダリング計算をやっていると、非常に広い分野での知識が求められるんですよね。それがまた気に入ってるところの一つですね。例えば、いい風に言うと奥がすごい深いっていうのと、悪い意味で言うと全然とっつきどころがないっていうのはあるんですけどね。例えばインターネットのWebプログラミングに比べると、Webプログラミングって必要な知識が非常に少ないですよね。例えばPHP・HTML、あとMySQLとかデータベースとあとサーバーの各種プロトコル、サーバー、OS、デザインぐらいわかればなんとかなるんですけども。それに比べるとレンダリングは非常に高レベルですね。すごいコンピューター分野の中で広い知識を求められるし、また数学的な知識もハードウェアの知識もいる。例えばレンダリング計算って非常に高速にしたいというか、他の分野に比べて最適化の求められる精度が全然違うので、メモリのタイミングとかそういうのも意識する必要が出てくるんですね。そういった意味で、非常に広い分野の知識が求められるんです。
川井:そこに面白みがあるということですね。
上野:そうですね。総合的なものとしてのレンダラーがあるから、やはりそれの制作っていうのは非常に面白いですね。
川井:熱中するわけですね。
上野:そうですね。

今後の方向性は?
川井:今後何かやってみたいこととか、これやろうかなっていうことってありますか?
上野:そうですね・・・今、基本的に並列計算っていうのをやっていて、最初はレンダリングをいかに並列化するかっていうのをやっていたんですけども、今はレンダリングに限らずに何かもうちょっとうまい並列化の方法があるんじゃないかと個人的に研究したりしてますね。
川井:並列はどのあたりが興味の対象になっているんですか?
上野:インターネットでやっているような負荷分散も視野には入れるんですけども、どちらかというとHPC分野で、スーパーコンピューター同士の負荷分散とかを広く浅くですね。まあ家の環境が家の環境なんでそこでできる範囲でなんですけども(笑)。今その感じのライブラリを書いていて、それに時間をくわれて全然レンダラーが書けないという状況です(笑)
川井:そうなんですか(笑) もう着手し始めてるわけですね。
上野:まあ、CGの分野に限らずにやっていかないとと思っています。
川井:専門分野を広げないみたいなことは、先の話とかでいうと、どこの地点を目指していてそういう風に思われるんですか?
上野:まあ・・生き残れないからですかね。
川井:なるほど。どこの世界で生きていこうって今の段階で思われているんですか?
上野:10年後20年後じゃ、今ある世界ってないじゃないですか。だから結局どこでも生き残れるようにしないといけないですよね。
川井:なるほど。どうなるかわからないので、どういう世界がきてもどこの世界でも生きていける力をつけたいと。というわけですね。
上野:自分の足場を自分で作っていかないといけないですからね。
川井:例えばもうちょっと砕けて言っちゃうと、たとえば研究みたいなことをしていきたいのか、実装していろんな人に使ってもらうようなことをしていきたいのかっていうとどうですかね?
上野:そこら辺は非常に悩んでいるんですよね。今のところとりあえず研究の方に行ってみて、自分に合うかどうか見てみようって感じですね。やはり新しいものが出てくるのは研究の分野なので。また私も学術的か実装の方かっていうと、学術的な視点から見る方が多いので、そちらの方に足を入れてみようという気ではいるんですけど。でもまあなかなか厳しいですよね。私が一番得意なのは今回の研究みたいに「学術的な実装」っていう微妙な分野なんですよ(笑)
川井:なるほど(笑)
上野:でもなんか一番得意なのはそこだっていうことに気がついたので、それが活かせる分野ですよね。だからRubyの笹田耕一さんとかすごい憧れですよね。だって彼まさにそういう分野ですよね。アカデミックな実装ですからね。
川井:そうですよね。
上野:そういう意味ではすごい憧れですね。
川井:なるほど。
上野:またレンダリングが何で好きかっていうと、そういう分野の仕事が非常に多いからですよね。一般的な会社でプログラマーが論文を読みながらプログラムを書くってないじゃないですか。
川井:ないですね。
上野:でもCGだとそれが当たり前なんですよ。結局、本になってない理論を実装しないと全然最先端じゃないから、CGに限らずですけど、技術者・制作者のレベルで学術的に近い所にいるような分野にいたいと思ってるんです。
川井:それが、現実の実装と近いとよりいいなってことですよね。
上野:そうですね。
川井:笹田さんのインタビューのTOPキャッチに使った言葉なんかでもそんなことだったと思うんですけど、5年後10年後に役に立つ研究も大事だけど、Rubyのようにすぐに役に立つ研究も大切だっていうのもありますよね。
上野:でもまあそれも分野によるんですよね。例えばCGだと半月後とか、下手するとマイナスですからね(笑)
川井:(笑)
上野:論文になる前に映画に使われるとかざらですからね。逆に論文も映画の実績がないと通らないとかすごい世界になっていますからね(笑)。そういった意味でいうとCGの分野だと研究にいってもたぶん半月後とかなんですよ。物理学とかいくと下手すると100年後とかですよ。今の理論物理学だと、理論が先をいきすぎてしまっていて、実験できる機会が用意できないっていう状況ですからね(笑)
川井:そうですよね(笑)
上野:検証できているのは数十年前のやつがやっとで、今検証が終わったとか始まったとかそういうレベルなんですよ。その辺を見ると、笹田さんと同じなんですけども、別に私の場合は研究にいってもそれがリアルタイムにできるんですよ。
川井:なるほど。CGの世界だとそれができるってことですね。違う世界だとどこだろうなっていう感じですけどね。
上野:そういった意味だと、そういう世界に絶対にいたいと思いますね。ハードディスクの垂直磁気記録とかだって、あれ結局出てくるまでに30年ぐらいかかりましたよね。
川井:確かにそうですね。「学術的な実装」なるほどね。
上野:学術的な実装っていうのと、あと非常に近くて早い分野ですよね。笹田さんも同じことだと思うんですけども、論文書いたっていうのは確かにそれはそれですごいんですけども、それだけだとあまりよくわからなくて、広く使われるのを実際に見たいっていう欲求がやっぱり研究者にもあると思うんですよ。それが満たせるのはそういう分野だと思うんですよね。
川井:そうですね。
上野:だからなるべくそういうタイムギャップがない世界にいたいですね。
川井:すごいですね。
藤森:もしご自分で論文を書かれたものが実際に映画とかで使われたら「よし!」って感じですよね?
上野:そうですね。見たいですよね。自分の理論で動いている映像が実際に映画館で上映されているのは見たいです。でも別にそれが論文を書いたものじゃなくて、プログラムを書いたものでもいいんだよなって、最近、気がつきました。
川井:なるほど。
上野: まあ今回の未踏での研究は学術的というよりかは実用の方に傾いたものを狙ったんですけどね。ただまああれは大規模すぎて結局私一人では完成しきれないんですよね。一人で書くと完成までにたぶん10年ぐらいかかるんですよ。でも10年先には全然新しい技術じゃないから。困ってるんです(笑)
川井:(笑)
上野:他に書ける人いるかなあ? というとみんな書ける人は自分のやつ書いてるし、その辺はRubyとかと違いますよ。CG家はみんな自分のやつ書きますからね(笑)
川井:そうですね。ご本人も負荷分散の方にちょっといっちゃってますしね(笑)
上野:いやあ、負荷分散は必要なんですよ。そうしないと一台だと計算終わらないですからね。
川井:それはもう環境構築としても必須だと、いうことですね。
上野:さっさと終わらせて戻らないと、いつになって完成するかわかんないですからね。知り合いの人になんか、これは100年後の完成を目指しているんだって言ってますからね(笑)。大丈夫、50年後ぐらいになったら延命技術があるから大丈夫だって言うと、こいつ100年後までプログラム書く気だって笑われています(笑)
川井:生きているかどうかの問題みたいな感じですね(笑)
上野:まあそれは冗談として、10年後にできたとしても全然革新的なものじゃないんですよね。タイムギャップがないっていうことは、逆にいうと進化も早いってことですからね。10年後にはもう理論も何も時代遅れなんですよ。
川井:確かにそうですよね。未踏のコメントも「壮大な」みたいなこととか「やる気で力があるからには」みたいなことをセットで書かれてましたもんね(笑)
上野:やるだけやりますけどね。でもまあ未踏っていうコミュニティから見ると私みたいなのは異質なんですよね。基本的に彼らは結構ビジネス思考でやっているんですが、私のはビジネスをやりたいけどやれないみたいな感じですからね(笑)。それでも企業からのオファーみたいなのはありましたけども、やはり大学をやめてそれに打ち込まないとダメだから、かなりリスク高いですよね。
川井:そうですよね。
上野:大学を辞めると中卒になっちゃうんですよ。
川井:なるほど、それはちょっとあれですね。先々考えるとなんかいまいちな感じがしますよね。
上野:しかもこの研究って、求められるレベルとしては基本的に博士まで出ないと全然、使いものにならないじゃないですか。。だから中卒でその研究に打ち込んだはいいけど戻ってこれないだろうなみたいなのは意味がないですよね。
川井:なるほど。お若いのにすでに悩み多きという感じですね(笑)。いくつでしたっけ?19歳?
上野:今、19歳です。
川井:未踏のときは17歳とかでしたもんね?
上野:未踏で提案していたのは17歳でしたね。まあ17歳っていっても誕生日の3か月前とかですけどね(笑)
川井:実質18歳に近いときとかですね。
上野:未踏ソフトの未踏で言えば未踏なんですけど、ビジネス的なことでいえば何もやってなかったですからね。
川井:まあそれはいいんじゃないですかね。いろんなテーマがあっていいと思いますよ。

趣味や好きなことは?
川井:別のインタビューでマトリックスの話とぷよぷよの話が出ていたんですが、そこを少し聞かせてください。
上野:(笑)。マトリックスは・・・私なんて書いたんでしたっけ?
川井:なんて書いてあったかなあ?キーワード的にすごい気になったんですよね。この脈略でマトリックスって面白いなと。
上野:実は、あれは何回か書き直しているんです。結局掲載されたのが最終校ではないみたいで、5回ぐらい送ったんですが、5回のうちどれが使われているのかよくわからない感じになっているんです。基本的には最終版のはずなんですけど、所々みると「あれ、これ最後に書いたのと違う」みたいなのがいくつかありました。(笑)
川井:あ、混ざっていたんですね (笑)
上野:なので、どう書いたかよく覚えてないんです(笑)
川井:マトリックスは好きなんですか?
上野:いや、マトリックスは一回見ただけなんですけどね。ただうけるかなと思って(笑)
川井:ああ、そういうタイミングだったんですね。
上野:マトリックスみたいな仮想現実の世界を作るっていうときに、たぶんレンダリング技術は絶対に必要なんですよね。まあそれぐらいの関連性しかないとは思います。
川井:なるほど。ぷよぷよはどちらかというとプログラミングという感じですか?
上野:基本的にゲームは下手なんですよ。あまりやらないし、センスがないんです。
川井:いやいやいや。
上野:最近レンダリング計算のためにプレステ3を買ったんですけど、あれ計算にすごい使いにくいんですよ。
川井:(笑)
上野:なんか鬼のようにプログラミングが難しいんです。
川井:そうなんですか。
上野:プロセスは8つあって、プレステ3のセルだと1個がつぶされていて、ストリーミングエンジンの方はメインメモリが256kbなんですよね。
川井:(笑)
上野:256kb・・・今の時代キロバイト・・・
川井:ですねえ(笑)
上野:最初に触ったTK80が2kbだったことを考えると広いなあと思いますけど、まあ256kbはつらいですね。
川井:(笑)
上野:何もできないから、DMA転送とかのプログラム書くんですけど、想像以上に大変ですね (笑)。ということで投げ出して、せっかくプレステ3買ったからゲームでも買おうかと思ってゲーム買ってきたら、チュートリアル見ながらでもクリアできなくて、さてどうしようみたいなところで今止まっているんです。いや、どうしましょう、ほんと一面がクリアできないんですよ(笑)
川井:(笑)
上野:やばいな。ぷよぷよはその中で唯一できた感じなんですよね。まあ中学時代にネット対戦にはまってずっとやってた感じですね。
川井:テトリスとかぷよぷよは多少違いますもんね。。
上野:パズル系ですからね。あれにははまったんですよね。
川井:得意なんですね。
上野:得意といってもそんな誇れるほどじゃないですけどね。
川井:いやいやいや。その他に趣味とか何かやっていることってあるんですか?
上野:小さい頃ずっとピアノとかやっていましたね。
川井:へぇ。
上野:だから中学までは吹奏楽部とかやっていたんです。
川井:あ、そうなんですか。
上野:高校に入って、一人暮らしで高校に行っていたんで、できないことはなかったんですけど基本的に非常に大変ですよね。朝早く起きて、朝飯を作って、帰ってから夕飯も作ってってことを入れるとそれで部活と同じぐらい時間を取られるから、家事プラス部活をやる気はなかったですね。まああと私はそれだけじゃなくてパソコンもやりたかったですしね。
川井:そうですよね。
上野:そういう経緯があって中学で辞めました。
川井:音楽のセンスもあるんですね。
上野:センスはないですけど、小さい頃からやってましたね。ピアノは今でもたまに弾きますよ。
川井:なるほど。
上野:あと料理にはまってるっていうのもありますかね(笑)
川井:料理にはまってるんですね(笑)。得意料理とかあるんですか?
上野:得意料理というか、基本的に自炊するんです。最近はバイトで遅いのであまりできないんですけど、でも料理は好きですね。
川井:なるほどなるほど。本とかは読んだりするんですか?
上野:料理のですか?
川井:いやいや普通の本です。マンガとか本とか。
上野:技術書ばっかりですね。技術書も最近読まないですけどね。3D関係だと本とか論文しかないっていう世界になりますけど、基本的に技術書を買ったところで買ってもすぐ古くなっちゃうじゃないですか。だからそんな買わないんですよね。あと未踏の予算でひたすら買って、買うものがなくなったっていうのもありますね(笑)
川井:(笑)
上野:全部給与としてもらえないから、経費でいろいろ使わなきゃいけなくて、使わなきゃ取られるだけですからね(笑) 10万分ぐらい買ったら買いたいものが無くなってしまったんです。
川井:じゃあ、ずいぶん余りましたね(笑)。なかなか買えないもんですよね。
上野:マンガについてはあんまり読まないですね。・・・弟のとかを読むぐらいですかね。実家帰ると全部揃っているので、そこで一通り読んで話題についていく感じですね(笑)
川井:そうなんですね。ネットゲームとかはやられるんですか?
上野:ネットゲームはやっていましたね。
川井:何系ですか?
上野:普通にRPGですよ。あれ、すごいはまるんですよ。
川井:はまりますよね。
上野:面白くてやりたいんですけど、やる時間がないっていうそういうジレンマですね。
川井:始めちゃうとまた時間取られちゃいますもんね。
上野:いや~、昔はそうだったんですけど、最近はほかの用事が前よりも忙しすぎて。あとあれってなんではまるかっていうと、結局一緒にやっている人がどんどんレベルが上がってっちゃうので、ついていかなきゃっていうのがあるじゃないですか。でも最初の2、3日ですごいはなれちゃってもうやる気がなくなるっていう感じですかね (笑)
川井:なるほど (笑)
上野:いや、なんか暇がほしいですね。
川井:(笑)

楽しむためのメッセージをお願いします
川井:最後に、何かメッセージをお願いしたいと思うんですけど。
上野:メッセージですか・・・
川井:例えば何か楽しんでない人たちに対してというか、現場で職業プログラマーとして苦労している人達って結構いるんですけど、そういう人達にこうやったら楽しめるよみたいメッセージって何かありますか?
上野:職業プログラマーとかそういうのはやっぱりきついんじゃないですかね。自分の好きなもの書いてるわけじゃないんですよね?
川井:そうですね、普通に与えられたものを書くことが多いと思います。
上野:私もバイトが楽しいのは、結局自分が好きなものを書いているからですからね。
川井:じゃあ自分が好きなものを書こうよ!ってことですかね。
上野:でもやっぱり・・・なんだろう・・・いやあ、難しいですね。実際にそういう経験ないですからね。
川井:まあそうですね。純粋に楽しむためにはどうしたらいいですかね?
上野:それは書くしかないでしょうね。
川井:好きなものを書く?楽しく書けるようなスキルを身に付けるとかですか?
上野:今、バイトしてる他にもバイトとか受けますけど、そういうときも結局自分が楽しんで書いてるのは、・・・何だろう・・・ああでもなかなか一般的に説明できないですよね。
川井:いやいや、いいですよ。
上野:いや、結局どんな仕事にも工夫というか、自分のスキルを伸ばす要素っていうのはあるので、何でも勉強と思ってっていうとおかしいんですけど、楽しんでやれる要素はいっぱいあるはずなんですよ。
川井:それすごいいい話ですね。私も、極端な話、何をやっても成長できる要素ってあると思うんですよ。たとえ本当に単純な仕事だとしてもあると思うんですよね。なので、それはおっしゃる通りと思いますよ。
上野:ただ、プログラマーといってもいろいろあるじゃないですか。完全に日本語のプログラムをただ変換するみたいなのもプログラマーですよね? あそこまでいっちゃうと何か工夫する余地ってあるのかなあっていう風には思っちゃいますけどね。
川井:でも楽しみ方は何かあるんじゃないかなと思いますけどね。
上野:でもなんか、なかなか見えないですね(笑)
川井:確かに見つけるのはなかなか大変かもしれないですね。高校生とか中学生とかもっと若い世代には何かありますか?
上野:やっぱり数学をしっかりやれといいたいですね。
川井:なるほど。
上野:いや、私も含めてなんですけどね。プログラミングに数学っていらないんじゃないかっていう人もいますけど、やっぱり必要ですよね。計算理論とかももちろん重要なんですけど、普通の解析学とかそういうのも絶対に必要だと思いますね。
川井:GREEの藤本さんが、数学が本当にできると、武器が違うよねって話をしていました。
上野:今、それがアドバンテージになるのは、ほとんどのプログラマーが全然、数学を知らないからなんですけどね。普通に話を振って、何でこれだと精度が落ちるのかとか、とりあえず低レベル分野の機械語のレベルからとか、数学の分野はしっかりやらないとなっていう気が自分でもしますね。私もまだまだ不足している感じがありますからね。
川井:なるほど。
上野:インターネットのWebプログラミングをやっていても、低レベルの分野や数学が無駄になることは絶対ないですからね。処理ひとつをとってみて、なんでこれとこれが違うのかっていうのは下の知識がないと絶対にわからないし、PHPのコードを1、2行動かすのにパーサーがあって、そのPHPのプラグラムがあって、それはOSのこういうコードの上で動いていて、そのOSのコードはこういう風に解釈されているというか、ハードウェアでは実行されているっていうのが、まあ下へいけば限りないけど、ある程度掘れるまで掘らないとなかなかいいプログラムって書けないですよね。
川井:なるほど。よくわかりました。そろそろお時間ですね。本日はありがとうございました。
上野:こちらこそ、ありがとうございました。

LINEで送る
Pocket

TO TOP