enchantMOONに影響を与えた特集記事

清水亮氏:なぜか知らないですけど、人生に影響を受けた本を3冊あげろということでしたので、3冊あげました。1つは『月刊アスキー』1992年7月号。さっきも言いましたけれど。

これ、すごいなと思ったのは、この時代に、CGとかあんまりないわけですね。これ(表紙の写真)は実物です。モックアップ。この頃、月刊アスキーはめちゃくちゃ儲かっていて、毎月、広告だけで何億円もの利益を出していたのです。

中味はこんな感じなんですけど、(未来のパーソナルコンピュータは)プロジェクターを内蔵しているとかね。ページをペラペラめくりながら、これは透明なディスプレイなんだけど、めくると次のページがでてくるとか、すごい細かく書いてあって、書き込みもできるんですよ。

だから、元々enchantMOONの元ネタは、基本的にはこれなんですけどね。こういう夢みたいな情報端末というのが夢想できるんだというのが、1つ影響を受けた本です。

のちに、この当時の編集長だった遠藤諭さんという人に話を聞いたら、「当時の編集者は誰がやっていたのかあんまり覚えていないし、夢を壊して悪いけどあの特集はさほどがんばらなかった」と言われて、がっかりしました(笑)。

パーソナルコンピュータの元となったアラン・ケイの論文

あとは似たような話でアラン・ケイさんのもので、『アラン・ケイ』(Ascii books)という本。

この本は日本語訳なんですが、重要な内容はネットで公開されています。たとえば、この「Personal Dynamic Media」という論文。これがパーソナルコンピュータの元ネタですからね。

アラン・ケイさんが考えたDynabookという、iPadの元ネタといわれたやつだったんですけど、あれはペーパークラフトなんですよ。実際にシリコンバレーのコンピュータ歴史博物館に行くと、あれのペーパークラフトが残っています。

こういう機械を作って、アラン・ケイさんは3,000人くらいの小学生、中学生、高校生とかにこれを使ってプログラミングを教えたそうです。実際に授業をやったりとか、こんなことができますよとかと教えたそうです。これはすごく刺激を受けましたよね。これって70年代ですからね。これが書かれた時代というのは、まだPC-9801とかも発売されていないんです。

Dynabookで子どもがプログラミングするという論文

この本に入っていたか忘れたけど、もう1つは「A Personal Computer for Children Of All Ages」。アラン・ケイさんの論文で、まだゼロックスにいたころのものなんですけど。これは、今、急速に、プログラミング教室を子供にしようなんていうキャッチフレーズで話題になっている本です。

これ、すごくおもしろいのは、アラン・ケイさんがシーモア・パパートというMITの研究者と話したあとで飛行機のなかでスケッチした、未来のコンピュータの図みたいなのがあるんですけど、これは実際に「こういうことをやっているんだ」という2人の会話とか書いてあるんですね。

これはなにをやっているかというと、重力シミュレーションなんです。男の子と女の子がDynabookを使って。Dynabookは、彼が考えたコンピュータ。(会場のiPad Proを手に取って)要するに、なれの果てがこれですよ。キーボードがついてなくてこっちになっちゃったのが、残念だといえば残念。Dynabookは、もともとペンもついていますからね。

Dynabookを持ち歩いて、この2人は一緒にコラボレーションしながらプログラミングを楽しんでいるんですね。「俺が宇宙船の動きを作るから、お前は重力の動きを作れ」みたいな感じで、一緒にプログラムしている。現在、ここまでできるのかといわれたら、微妙なんですよね。「もう1回ゲームする?」「これは簡単すぎるから、もっと実際の宇宙みたいにしようよ」とか、そういうことが書かれていたりするんです。

MOONBlockで重力シミュレーションもできた

今できていないことが、しゃくだったので、これは僕のブログですけど、僕が自分で作ったMOONBlockを使って重力シミュレーションを作ってみたんですね。実際、意外とできるという(笑)。これくらいの重力シミュレーションもできるんですね。

実行すると。真ん中の赤いのが、なぜか地球なんですよ。宇宙戦艦ヤマトみたいな状況になっていますけど(笑)、このまわりの青いのが6分の1の質量を与えた衛星の候補で、それが最初ランダムに初速と位置を与えられるんですけど、ほとんどのものは飛び去っていってしまうんですね。

ごくごくわずかなものが、かろうじて地球のまわりをゆっくりと周回しているようになるということが確かめられるわけです。これって、プログラム的にはものすごく簡単なんですよ。ところが、プログラミングという表現手段を持っていない人には、これは作れない。

なにが簡単かといったら、みなさん、物理を習った人はけっこういますよね。物理を習った人は、F=maは習いましたよね、当然? そうすると、万有引力の法則、F=G*Mm/R^2も習いましたよね。ところがどっこい。この2つを習っただけでは、なぜ月が地球に落ちてこないか分からないんです。なんでかというと、地球がラージM、月がスモールm、ここの一直線上で働く力、Fを求めているわけですね。これはどう計算しても、月が地球に落ちるという結論しかないわけです。

実際、これはプログラミングで確かめてみると、これ。ちょっとわかりづらいのですが、青い天体がだんだん地球に落ちてきて、はい、というね。(青い天体が地球に落ちて、ぶつかり、さらに通り抜ける)。

プログラムはものごとの理解に役立つ

これは僕が適当なことを言っているわけではない証拠に、このプログラムを見てください。

画面の真ん中を原点にしているので、dx、dyというここにないのが出てきますけど、これは全然難しくなくて、この座標系は真ん中160、160なので。ここ(真ん中)が地球で、ここが月だとすると、月の位置を点(x,y)として、地球との差を見るのにdx、dyというのを出したわけですね。

R^2のRは地球と月の距離ですから、これは三平方の定理によってdx^2 + dy^2。プログラムだと自乗を書けないので×を2回書いちゃったんですけど(R2 = dxdx + dydy;)。

ここから、わかりやすくいうとearthMassとmoonMass、ラージMとスモールmですね。これをかけたやつをR^2で割って、Fを求めています。三平方の定理は、R^2ですから。

このあと、今度R自体はR^2のルートなので、Math.sqrt()、平方根をつかっていますね。

FをX軸Y軸方向の成分、FxとFyに分解しています。その時にRを使うんですけど。

あとは加速度にFx / moonMass, Fy / moonMassを代入しているだけなんですね。

だから、プログラムで表現できるということは、こういうことなんです。これは、今日来ているスエミツさんと、カレーを食いながらさくさくと作ったプログラムです。子供に「なんでこの式で月が地球に落ちてこないの?」と言われたときに、ちゃんとプログラムを書かないで説明できる人は少ないです。

これで実行するとだめです。なぜだめなのか。初速がないからです。たとえば適切な初速を与えて距離をx=100くらいまで近づけてあげるとどうなるか。そうするとさっきよりマシだけど、曲線を描いてどっか行っちゃった。じゃあ、もっと近づけようか。x=130、近すぎるかな。まだ初速が早いですね。x=140のvy=0.1とかにするか。だめだ。vy=0.5、だめだ。このくらいvy=1とかでいいかな。かろうじてぐるぐる回るようになりましたね。というふうに、「こうすると落ちてこないね」というのがわかるんですけど、初速がないとダメだという話をみんな教えてくれないわけです。学校ではやらないわけです。

こういうことが、今のプログラミング教育のなかで視点として欠けてるんじゃないかと、荒唐無稽、有名無実なものになっちゃうかなという。ただ、これはまだ小学生が理解して自分で書けるかというと、理解して式変形できなければだめなので、もうワンステップくらいいるんですけど。

だけど、ここをインチキして重力ブロックみたいなのを作りたくないんですよね。それをやっちゃった瞬間にブラックボックスになって、子供が全然勉強しなくなっちゃうから、「ちゃんと意味がある数字なんですよ」ということを僕は教えたいなと思っています。ただ、この論文は非常にいろんな人に影響を与えた論文になっています。

ここにDynabookの理想的なかたち、みたいなのが出てきていますけど。

出会いをつくったCGの技術書

最後の1つですけど、James D. Foley『Computer Graphics: Principles and Practice in C (2nd Edition)』という本。日本語版の『コンピュータグラフィックの理論と実践』は僕が企画して日本語になっていますけど、本当は英語版のほうに影響を受けています。日本語版も探せばありますけど、すごく高い。英語版でも100ドルする本です。

これは僕が生まれたくらいの年に出た本です。僕が生まれたくらいの年に出た本なのに、僕が知らないことばかり載っていて、ちょっと衝撃を受けたという本です。この本との出会いがあったので、のちにUEIリサーチというCGの研究所を作る時に、この本の著者の西田(友是)先生という東大の先生をうちの会社に招いて、今ドワンゴに移管していますが、そういうことがあったという意味では非常に人生を変えた3冊目の本かなと思っています。