線上にかける橋

 お盆に帰省して古いノートを整理していたら、昔書いたプログラムのリストなどというものが出てきて参った。中学生くらいのときに持っていたパソコン用のBASIC言語で書いたゲームプログラムなのだが、頑張って作っているのはわかるものの、やはり中学生は中学生、なっちゃいない稚拙なものである。特に出力する文字やコメント文には赤面するしかない。「SYNTAX ERROR IN 120 ナンチャッテ」じゃないと思う。「制作:オオニシソフト」というのは何だ。ハートマークはやめろうっ。

 このノートにあったのは初期のものだけで、もっと下った時代、高校生や大学生になった私は、いくらなんでももう少し高度なものを作っていた。しかし残念ながらリストをいちいちプリントアウトしたわけではないので、古いカセットテープや五インチのフロッピーディスクがどうにかして読めるようにならない限り、こういうものは全て、もう消えてしまったも同然の存在である。残念とはいうものの、考えてみれば、私の人生で最良のプログラムでも、まず工作でいうと「本棚」か「よく飛ぶ紙飛行機」程度、頑張って後世に残さねばならないようなものでは絶対にないので、これはこれで良かったのだろう。この中学生プログラム日記だけが後になって発見されたらと思うと、ちょっと恥ずかしくはあるが。

 さて、そんな今はもうない自作プログラムの中に「三次元で表示された迷路の中をうろうろする」というものがあった。「/」やら「|」といった文字の組みあわせで表現した迷路の中を移動するもので、「ウィザードリィ」やウィンドウズのスクリーンセーバーに似ているがもちろんモンスターが登場したりはしない。とはいえ、作ってみるとこれが結構想像力を刺激するもので、簡単に作った割には長く遊べるものだった。誰でも考えそうなものではあるので、たぶんこの時代、かなりの自作プログラマーが似たようなプログラムを作っていたのではないだろうか。

 こういう、三次元を画面上に表現する技術は、要するにバーチャルリアリティに至る道の第一歩であり、それ自体かなり楽しいものである。どうすれば立体らしく見えるのか、ということを考えるのも興味深いもので、私はほとんど執着に近い関心を抱きつつ、付かず離れずプログラムの題材としてきた感がある。高校の代数幾何かなにかで習う、三次元空間を仮想上のスクリーン上に投影する、という計算を使って「太陽系を遠くから見たところ」「重力で引きあった数個の惑星の相互運動」「『リングワールド』は実際どのように見えるのか」などを表示する一連のシリーズを作っていて、ずいぶん気に入っていたこともある。

 この最後のものには、もう少し詳しい説明が必要かもしれない。「リングワールド」というのは、ラリイ・ニーブンの書いたSF小説で、太陽の周りを巡る巨大な環状世界を舞台にしたものである。太陽系から惑星を全部どけて、かわりにもと地球の公転軌道があったところに、レールを引くように輪を建設した、と思えばよい。とにかく巨大な世界であり、細いリボンのようなこの世界の幅が、地球の直径の120倍くらいある。この内側に、遠心力によって作られた疑似重力でもって、住みつこうというのだ。

 この小説の中で、すっかり文明が退行した「リングワールド人」は、自分がそういう広大な大地に住んでいること自体を忘れてしまっているというエピソードがあるのだが、ちょっと考えるとそんなことはありえないような気がする。非常に大きいとはいっても、環形の世界の内側に立って見た場合、遠くに行くに連れて地面がだんだんせり上がってくることになる。自分が「輪の内側にいる」ということは自明ではないだろうか。

 ところが、実際にプログラムを書いて、描いてみたリングワールドの風景は、そんなものではないのだった。計算結果は「画面の下の方に一本の直線が引かれていて、それとは別に中央に縦の直線が一本ある」というものになった。「⊥」である。つまり、あまりにも曲率が小さいので、地面がせり上がっているようには見えないのだ。実際には、地平線の彼方に一本の青い線がまっすぐ立ち上がっている、という感じだろうか。上を見上げればこの細い線が太陽の裏側を通って反対側に降り、やはり地平線に溶け込んでいるはずで、全体としてはなるほど空に一本、アーチがかかっているように見えるはずだ。

 しかしそういう豊かな想像とは別に、この私の作ったプログラムの画面出力の寂しさはいかんとしたものだろうか。落ち着いてコーヒーなど飲んできてからもう一度画面を見てみれば、やっぱりこれは画面上の二本の線でしかない。後ろを振り向くことができたり、上を眺めることができたりすればもう少し何かを得ることができただろうと思うのだが、当時のパソコンの処理速度と私のプログラム技量では、そこまでのことはとてもできなかったのだ。

 そもそも、三次元を二次元の画面で表現しようと思うと、どう考えても一次元足りない。そこをどうするかというと、プログラム技法上、たいていは「時間」をその一次元に充てる。つまり、画面上の立方体をくるくる回して見せて、ははあ、立方体なんだな、ということをわかるようにするのである。他に「三次元眼鏡をかける」というものがあるが、こちらには「赤青の3D眼鏡をかけていると、少なくとも仕事ができそうには見えない」という副作用があるので、あまり勧められない。しかしこの、リアルタイムで画面全体を書き換える、という機能こそ、当時のパソコンと中学生プログラム日記な私がいかに望んでもたどり着けなかった境地であった。

 三十歳になった私は今、仕事で「三次元CAD」というものを使っている。部品の設計をするために、まず部品の三次元モデルを作って、それをもとに設計図を書く、というアプリケーションプログラムなのだが、これを見ていると、当時の私の望んだものが全てここにあることに圧倒されるような気持ちである。自由自在に形を加工できるモデルを、マウス操作で自由に回転したり拡大したり縮小したりできる。一種、中高生のころに理想としていた世界で遊びながら給料をもらっているような申し訳なさがあるのだが、もちろん仕事は仕事なので楽しいばかりでもない。そろそろうんざりしかけていたりもする。確かに、大人とはつまらないものだ。

 あと、三次元モデルをマウスでぐるぐる回していると、やっぱり仕事ができそうには見えないというのも、確かなことである。


トップページへ
▽前を読む][研究内容一覧へ][△次を読む