「天才」――こう呼ばれる人物は各分野に存在する。上野康平さんもそんな1人だ。「バイナリアンスレッド」の第1回に登場いただいた井上恭輔さん同様、IPAの未踏ソフトウェア創造事業から天才プログラマー／スーパークリエータの称号を贈られた上野さん。彼が注目を集めたのは、彼が18歳であったことが大きい。

未踏ユースをのぞいてみれば、18歳という年齢は特別若いわけでもない。上野さん自身、未踏ユースの採択時には17歳だった。上野さんの場合、飛び級を重ね、18歳にして千葉大学理学部先進科学プログラム2年生であるという点が、ニュースを見た人を2度驚かせたのだろう。未踏の先輩、井上恭輔さんにはじまった「New Generation Chronicle：バイナリアンスレッド」。第2回は上野康平さんにご回答いただいた。

こちらでは、プロローグとして厳選した10個の質問をお届けする。天才の知られざる側面がつまびらかに語られた完全版はこちらで公開している。

「不気味の谷」を超えた、感覚的に正しいレンダリングに向けて

―― 今の自分が形成される上で最も影響があったと思う出来事は？

中学2年のときに参加したScience Fair（自由研究大会）ですかね。そこで簡単なレンダラを発表して、今に至るという感じですので。小学校3年生のとき、父の仕事の関係で米国に引っ越したのですが、そこでのIQテストの結果、数学と科学で1学年ずつ飛び級をすることになりました。飛び級のクラスでは自由に学べる時間が多く取られているので、そうしたことが後に大きく影響したのだと思います。

ただ、飛び級というのが何だか一人歩きしているような気もしますが、実際のところ、日本の教育を普通にやっていれば、飛び級は別に珍しいことではありません。あまり知られていないようで、日本人は申請する人が少ないようですが、実は強気に出ればみんな飛び級になったりすると思いますよ。

高校のときに日本に戻ったのですが、いつかまた米国に戻りたいと考えていたので、日本でも飛び級を受けてみました。6時間ほど物理と数学の試験を受けたのですが、決まった答えがない、いわゆる思考問題だと感じました。前提知識の量だけではなく、その場で自分で勉強するバイタリティであったり（参考書籍は用意されている）、既出パターンではない問題への応用力、6時間ギブアップしない忍耐力などが問われる試験でしたね。

ちなみに、わたしと同じ期ではわたしを含め4人が飛び級制度で物理学コースに入学していますが、わたしと同じ学校（東京学芸大学付属高校）で同じ部活（数理科学研究部）の方も入学されるというレアな年だったようです。

―― 開発環境はどんなものを使っていますか？

長らくWindows XP上でVisualStudioを使っていましたが、最近はMac OS X／Linuxに開発環境を移行しました。Vimエディタとgcc／autotoolsでちまちまと作っています。gdbで追うことが難しいバグが発生した場合、VisualStudioのビジュアルなデバッガ環境を用いることもあります。

現在レンダラを書くのにメインで使っているのはC++です。やはり実行速度はレンダラにとって最優先課題なので、できるだけ低レベルな言語で書くことが求められます。その点、オブジェクト指向の再利用性、可読性、DRY（Dont Repeat Yourself）性を確保しつつ、ネイティブコードにコンパイルできるC++はレンダラなど実行速度が重要なアプリケーションの開発には最も向いていると思われます。

ただ、最近はC++で書いてしまって少し後悔しているところもあります。あまりにもC++の言語仕様が複雑すぎるからです。5年間ほどこの言語を使ってプログラミングをしていますが、いまだにマスターできる気がしません。

歴史が長いことからC言語との互換性／親和性などから過去の遺産を多く引きずっているところも多く、とても合理的とは思えない仕様にもしばしば出くわします。自由度が「高すぎる」テンプレートメタプログラミングは書いていて非常に楽しいのですが、バッドノウハウの固まりでもあり、気をつけないとすぐに暗号めいた記述になってしまいます。

―― 既存のレンダラの問題点はどこで、自身が今研究しているものはそれをどう解決しようとしているのか、分かりやすく説明してみてください。

わたしが作ったレンダラは、土台がボロボロな既存のレンダラを一度作り直す必要があると感じて開発しました。

既存のレンダラの問題点は、材質の物理的性質としての効果なのか、演出手法としての効果なのかを区別せずにレンダリングを行っていることにあります。きちんと両者を分離して計算することで、写実的CGに特化した手法を一般的なCG制作に幅広く使用することができます。

物理ベースレンダリングは研究としては既に1つの限界点に達していると思います。次に来るのは、「不気味の谷」を超えた、感覚的に正しいレンダリングではないでしょうか。

―― Windowsしか知らないプログラマーはどうですか？

一般的にプログラミングの中でOS依存の知識が占める割合はそんなに大きいものではないと思うので、別に構わないのではないでしょうか。LinuxやMac OSXなど、UNIXベースのプログラミングはWindowsより素直なので、学ぼうと思ったらすぐに学べるものだと思います。

わたし自身は、中学、高校のころからGentoo Linuxを使っていました。あのカリカリ感というか、メンテナンスすらも楽しんでやっていましたが、もう少し開発に力入れたいなと思ったときに、そのメンテナンスが少し手間に感じられるようになり、Debian GNU/Linuxに移行しました。持ち歩いているノートPCはWindowsとDebianのデュアルブートにしています。ちなみにウィンドウマネージャはratpoison。GNU Screenに似たキーボードドリブンインタフェースを持つウィンドウマネージャで、プログラミング中の思考に割り込みが入ることを極限まで下げるようにデザインされているだけあり、その威力は素晴らしいです。本当に作業に集中したいときにはお勧めです。

Gentooを使っていたという点でお分かりかと思いますが、基本的に全部自分で管理したいので、ミニマムでインストールして、後は必要なものだけを自分でインストールしていくスタイルの方が好きです。「え？ ミニマムだとbzipすら入らないの？」みたいな（笑）。そういう意味で、Ubuntuとかダメなんですよ。いろいろ要らないものがインストールされてしまい、まず「apt-get remove」からはじめないといけないので……。でも、UbuntuはPS3にインストールしていたりします。

1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.