相対性理論を学びたい人のために

まだ一度も相対性理論を勉強したことのない人は、何か一冊相対性理論の本を読みかじってみて、なぜこんなことが?という、疑問を持ってからこのブログに来てください。

SONY許せぬと書きたかったが2

 現在2015年1月27日8時30分である。

 1つ前の記事が長くなりすぎたので、分けることにした。読んでいる人も疲れただろうから、続きは明日にしてもよい。
 数学の混じった文章というのは読むのが疲れるものである。

 さて、それでは、続き。

 グノシーのコマーシャルから、インスピレーションを得たのは、11月8日だった。だが、この日、私はこれだけをやっていたのではなかった。次から次と過去のことが思い出され、それぞれから、今、得られることは何かと考えていた。
 例えば、以前いた『とらいむ』で、そこのスタッフの人と原子力発電所の話をしていたとき、私は、
シーベルトというのは、本来測定される物理的量に、人間用の係数をかけてしまっているから、余り当てにならないんですよね。」
と言った。それに対しそのスタッフの人が、
「じゃあ、物理的に確かな単位は何なの?」
と聞いてきた。本来なら、
「グレイ。」
と、答えねばならなかった。
 だが、私はその時、グレイという単位を思い出せなかった。思い出せないなら、
「今、ちょっと思い出せないんですが。」
と言っても良かったのだが、その当時は福島第一原発の事故で皆がニュースに敏感になっていたので、
「ここで、いい加減な返事をすると皆が混乱する。」
と、私は思った。その時私の頭には、次元は違うが、ベクレルという単位なら、物理的に裏付けの出来る量だというのが分かっていた。
 それで私は、やむなく、
ベクレル。」
と、答えたのだった。
 あの時、周りの人をミスリードした量はどれくらいだったのだろうなどと考えたことも、ノートに書いてある。これは、2014年11月8日11時10分頃である。

 11月10日には、横浜市立みなと赤十字病院に、ほとんど初対面で、先生に会いに行くことになっていた。

 私は、11月9日の深夜23時13分に、
「私が最後に、サントリーホールへ、前橋汀子さんのヴァイオリンを聴きに行ったとき、CDを聴いているように聴こえてしまったのは、私が余りにもCDを聴きすぎたために、すべての演奏曲の音がCDの音でインプットされてしまっていて、鳴っているヴァイオリンの音がそれに干渉されてしまったのだ。」
と書いた後、しばらく眠った。
 だが、翌朝早く起き、またパソコンを打ち始めた。それは、当時は発見したつもりになっていたが、後に実現不可能と分かった、超伝導に関するマイスナー効果により、安全にロケットを飛ばそうというアイディアを、大学の恩師にメールを書いて、可能かどうか調べてもらおうというものだった。その恩師というのは、以前、『どの先生も立派だな』という投稿で触れた、先生だった。


どの先生も立派だな


 そのメールで、結局、私が、何か出来たとしたら、それは、丸カッコすなわち『()』の左側のものと右側のものをなんと呼ぶかを小学校1年生でも分かるように説明したことだけだった。その時書いた、テキストファイルは、『私の論文の生原稿』の中に、

super_rocket.txt

という名前で、保存してある。


私の論文の生原稿


 注意しておくと、肝腎のロケットのアイディアは、地表スレスレで、第一宇宙速度人工衛星になるために最低必要な速度)まで加速することは出来るか、と考えて、やっぱりダメだ、と分かった。
 だが、それを書いている最中に、とんでもないことが起こった。私のATOKが、アップデートを呼びかけてきて、説明を読んでいたら、その中に誤植でATOK20007という文字があった。それを見て私は、まさか、と思って棚の上の電波時計テレヴィの画面を見た。電波時計は、今朝電波が入ったとマークが出ていて、8:22となっていた。そして、テレヴィは8:26になっていた。
「この部屋だけ時の流れが違う。」
と私は、思った。
「まさか2万年後にタイムスリップするなんて。」
 だが、相対性理論の知識のある私は、そういうことが不可能ではないことを知っていたのだ。
「これじゃ、浦島太郎だ。」

 そこへ、母から、
「病院に行く準備は出来てる?」
という電話があった。
 差し当たって、浦島太郎にはなっていない。だが、4分ずれてる。
電波時計は正しいだろうから、そうすると、このテレヴィは4分後の映像を映しているのか。そうすると、未来が見られる。これじゃあ、競馬の中継を見たら大もうけできちゃう。とにかくこの電波時計を先生に見せれば、私の周りで時間の流れが狂うぐらいすごいことが起きていることを証明できる。」
 私は、その電波時計を大事にリュックにしまうと、病院へ向かった。

 これを、人は統合失調症の発病というだろうか。こんなに、全部、論理的に説明できて、筋が通っていて、妄想を持っているのは確かだけど、まともなことも考えている。
 私は、いくつかのことが妄想なのは、今では認める。だが、あの時の発作が単に病気が原因とは思えない。
「私の才能が、開花しようとしていたんじゃないのか。」
と思う。そして、実際、開花した。

 先生に、
「この時計とテレヴィの時間が4分ずれていたんです。」
といって、見せた。
 先生は自分の腕時計とその時計を見比べた。1秒もずれてない。
 あの後、この時計は時刻を合わせ直したはずはないから(私は、この時計の取扱説明書を読んだことがある。)、やっぱりあの時テレヴィは、4分未来を映していたのだ。

 もちろん、こんなトリックを仕掛けようと周りの人間が思ったら、いくらでもできることを、今の私は感じ取れる。

 その時先生は、
「じゃあ、この時計壊れちゃったんだ。」
と言った。私は、
「いや、壊れているとは思えません。私の予想によると、あのテレヴィを見ていたら、競馬で大もうけできるはずなんです。でも、そんなこと、他の人に言うのは、良くないですよね。」
と念を押した。先生は、
「そりゃ、良くないでしょうね。」
と言った。そこで私は、
「確かにそういう科学の使い方は間違っています。でも、人の命を救う医学を進めるために、小さい子供に高度な科学の教育を分かりやすく教えるのは、重要なのではないですか。」
と、いつも思っていることを言った。それに対し、
「でも、そんなことが起こって恐くないですか。」
と、恐らく先生は本心から聞いたのだと思う。
 だが、私は、
「全然恐くありません。こんなことが不可能でないことを、私は知ってますから。」
と、答えた。
 先生は、
「ちょっと、様子がおかしいようですね。明日から入院しましょう。」
と言った。その瞬間私は、
「これは、私の才能を守るために入院させるんだ。」
と思った。
「大学院に入るのも、『入院』というから、この病院で勉強させてもらえるんだ。」
と、うきうきして、先生が、『医療保護入院』と書いている横から、
「『任意入院』でもいいですよ。」
などと言った。

 翌日、私は精神病棟であるから、自殺しないように、ベルトも全部取り上げられて、何も持ち物なく入院した。持っていたのは、ボールペンだけだった。
 眼鏡はかけていても良かったのだが、私は、落ちてきてうっとうしいから、といってかけなくなった。

 この後の入院生活については、別なところでも書いている。だが、1つだけ、今日の話と関係のあることがある。

 11月27日だったか28日だったかのどちらかに、病棟では余り見かけない男の人がいたのだ。私は、勉強するために入院したつもりなので、誰からでもどんどん吸収させてもらっていた。
「この人からは何をもらえるかな。」
と思って、近づいた。
「どんなお仕事をなさっているのですか。」
と聞くと、
「色々なひとの言葉を聞くのが、私の仕事なんです。」
と、応えてくれた。胸に、『顧問』と役職の書かれたネーム・プレートを付けていた。私が聞いたので、向こうも、
「どんなお仕事をなさっているのですか。」
と、聞いてきた。私は、
「色んな仕事を転々としてきたんです。箱詰めをやったり、ミシンがけをやったり。1番長かったのが、8年半でした。でもそこは、ひどいやめ方をしてしまいましたが、そこにいた間に、0と1だけで書かれたコンピューターのプログラムを読めるようになりました。」
と言った。
 すると、これを聞いたその人は感心したように、
「それは、とてもレヴェルの高い会社にいらっしゃったのですね。」
と本心から言ったようだった。
 それを聞いてたまげてしまったのが、私だった。この人は、ソニーとかマイクロソフトとかトレンドマイクロのような、コンピューターの心臓部に関わるような会社を思い浮かべているのだ。よもや、社員15人くらいで、職業安定所から、なんとか良い社員に来てもらいたい、と待ちわびているような会社だなどとは、思っていないのだ。

 そこまで考えて、
「待てよ。」
と思った。
「私は、レヴェルの高い会社だとは思っていなかったが、やっていたことは、ソニーマイクロソフトに比較しても見劣りしないものだったのではないか。」
「使ってたCPUはZ-80だったけど、今のインテルの最新のCPUだってノイマン型コンピューターであることに変わりはないのだから、動作原理は同じだ。」
「ROM焼き機で、ROMすなわち、普通の人のいじれない、リード・オンリー・メモリーにリードでなくライト(書きこみ)していたのだから、さすがにICそのものを設計してしまうSONYやマイクロソフトなどのパソコンを作る会社にはかなわないが、トレンドマイクロと同レヴェルではある。私って、良い会社にいたんだなあ。」
 私は、びっくりしたのだった。それと同時に、
「私が、トレンドマイクロの社員と間違えられるような、この技術を、もっと子供達に分かるように説明しなきゃ。」
と、思ったのだった。
 そして、その思いは、退院してきた後、リバイバー・ソフト社という会社のソフトを見て強くなった。
 諸君も、GoogleやYahoo! JAPANで『リバイバーソフト』と入れて検索すると分かるように、この会社は、自分のところの売っているドライバー・リバイバーというソフトを入れると、パソコンのスピードが格段に上がると言っている。
「そんなうまい話があるはずがない。」
と、諸君は思うだろうか。だとしたら、諸君はまだコンピューターの勉強が足りない。実は、私達のパソコンは、プログラムし直せば、少なくとも3倍は速くなる。3%ではない。3倍である。
 冗談を言っているのではない。これは、本当のことなのだ。
 ところで、私が諸君を啓発しなければと思ったのは、そのリバイバー・ソフト社のドライバー・リバイバーが、その3倍にするということをやっていないみたいだったからだ。『みたい。』というのは、この会社の経歴を調べてみようと思って、facebookのこの会社のページをたどったら、2009年に会社が出来たようになっているのに、設立の記事の後、次の記事が2014年2月13日に書かれるまで、全部空白なのだ。こんな、学歴詐称のようなことをする会社だとすると、そこのソフトも怪しいと思ったのである。
 話を戻して、
「その、パソコンを3倍にするのって、どうやったら出来るの?」
と、諸君は思っただろう。それに対する答えは、コンピューターに詳しい人はもう分かっているとおり、
「プログラムをアセンブラで組めば良い。」
というものである。
アセンブラなんて言葉聞いたこともない。」
と思った人は、WindowsでもMac OSでも、何でも、ライセンスを買ったソフトに付いている、
『逆アセンブルすることを禁じます。』
という一文を、ちゃんと読んだことがないのだ。
「どこに書いてあるの?」
という人のために、2つページを紹介する。私は、諸君のパソコンにウィルスを感染させたくないので、マイクロソフトのホームページで見つけておいた。もう一つは、マック・ファンのために、Mac OS のライセンス条項(ただし、英文)

 ページのどんどん下を見ていって、


4.ライセンスの適用範囲


の下の3行の文章の最後に
『以下の行為は一切禁じられています。』
とあって、その下の3番目の『・』の後ろ、

・本ソフトウェアをリバースエンジニアリング、逆コンパイル、または逆アセンブルすること

とある。

 実際に見て欲しい。

Microsoftのソフトウェア ライセンス条項のページ


 もう一方のこちらは、4ページ目の

L.No Reverse Engineering

の中の、3行目、disassemble (ディスアセンブル)という単語が、見える。

 実際に見て欲しい。

Mac OS X のライセンス条項のページ


 まず、『リバースエンジニアリング』は、日本の会社がよくやってきたことだ。つまり、プログラムの場合、ライバル会社のソフトを分析すること一般。そして、その方法として、『逆コンパイル』と『逆アセンブル』がある。まず、普通の人に分かりやすいのが、『逆コンパイル』の方だろう。昔のBASIC(ベーシック)というプログラミング言語の場合、人間に分かりやすい、PRINT(プリント)とかGOTO(ゴートゥー)というパソコンへの命令を使ってプログラムを組んだ。そして、書いたところで、RUN(ラン)させる。要するに、プログラムを走らせるのである。よく、技術者が、
「ハシッた。」
というのは、プログラムがバグがなく(人類が最初に作ったコンピューターが上手く動かないので原因を探っていたら、なんとコンピューターの内部に虫『bug』が入っていたためだったと分かった。それ以来、コンピューターが上手く動かないとバグのせいだと言われるようになった。だから、上手く動かないプログラムには、バグがあると言われるようになった。)、ちゃんと作動したとき、ラン(走る)が成功したという意味なのである。
 BASICというプログラミング言語の場合。厳密に言うと、例えばNEC(エヌイーシー)のN-BASIC(えぬべーしっく)の場合、これで、作業は終わりだった。
 さっきから言っていることなどを、確かめたい人は、次のページを見て欲しい。

N-BASIC

 さて、BASICでは、人間にもかなり分かる言葉でプログラミングすなわちプログラムを書くということをして、コンピューターに人間には分かりやすいが、コンピューターには読むのに時間のかかる文章を読んでもらっていた。
 当然のことながら、読みにくい文章だから、コンピューターは処理に時間がかかる。そこで、人間の方が、少し歩み寄ることにした。人間に読みやすかった文章をコンピューターに分かりやすい文章、すなわちマシン語とか機械語とか呼ばれる0と1だけのビットの列になおして、なおしたものを渡すことにした。この、人間に分かりやすい言語(普通そういう言語を高級言語という)からマシン語への翻訳をする、これもやっぱり1つのプログラムなのだがその翻訳するソフトを『コンパイラ』と言い、翻訳する作業を『コンパイルする』という。

 ここで、多分諸君は分からなくなってきただろう。
「BASICのプログラムを人間が書いている時だって、結局はその書いたものを0と1の数字の列としてメモリーに入れていたはずだ。だったら、何もマシン語なんて偉そうなこと言わなくたって、BASICのプログラムだってマシン語で書かれているではないか。」
と言いたくなっているのではないか。
 それは、大きな間違いなのだ。
 まず、さっきのPRINT(プリント)という命令のことを考える。これは、BASICでは、
『画面に、次に与える一文を表示せよ。』
という命令だった。プリントだからプリンターで印刷するのかと思った人もいるかも知れないけれど、PC=8001が売り出された当時、パソコンだけでも高くて、大抵の人はプリンターまで買えなかった。だから、この場合のプリントは、画面にプリントアウトすることだったのだ。
 ところで諸君、良く考えて欲しい。パソコンに与える命令の数は、いくつくらいあるだろう。まあ、ちょっと思い付くのは、PRINT(プリント)、それからさっきの、プログラムの何行目かへ行って、そこから読めというGOTO(ゴートゥー)、足し算、引き算、かけ算、割り算、累乗、くらいは、普通の人でも思い付くだろう。
 もし、あなたがプログラムというものを少しでも知っていたら、サブルーチンという、あらかじめこれを渡したらこういう計算をやってその結果をこういう形で返してくれと決めておく、その分野専門の子会社のようなものを作っておく方法を、習っただろう。
 これは、プログラムを組むとき重要な方法であり、どんなプログラミング言語でも、そのための命令をいくつか持っている。おそらく、ノイマン達が最初にプログラムという概念を思い付いた頃から、彼ら天才達のことだからこのサブルーチンという概念を発明していただろう。最初になくても1年以内に気付いただろう。
 BASICの場合、
『子会社に飛べ』
という命令は、
GOSUB(ゴーサブ)
である。
『go(行け)とsubroutine(サブルーチン)』
の頭だけ取ったのである。ものすごく分かりやすいね。でも、小学校3年生の私は、英語を知らなかったから、これらを全部、『ピーアールアイエヌティー』とか、『ジーオーティーオー』とか『ジーオーエスユービー』などと覚えて、全部その働き方だけで命令名を覚えていた。
 命令を覚えていたのではない。私はその命令の行う処理を捉えて、漠然としたものを、日本語の言葉でも表現できず、『ジーオーティーオー』と命令名が書いてあったら、こういうことになるんだ、と捉えていたのである。
 中学が近付いて英語を習って、
「もっと早く、単語の意味を知りたかった。」
と思ったのを今でも覚えている。


「道理で私がコンピューターの仕組みがよく分かるわけだ。こんなに、苦労しているのだもの。!」


 ところで、サブルーチン、
「一度飛ばされたら、それっきり?」
という人のために、ちゃんと子会社の方に、
RETURN(リターン)
という命令がある。
 飛ばされても、ちゃんと戻ってこられるように命令があるのである。


 だが、ここで重要なのは、使えるように命令は存在しても、実際にプログラムで、それを子会社のところに書き込んであげないとコンピューターの処理は行ったきりになる、ということだ。
 そういう時どうなるかというと、昔のパソコンで良くあった『暴走』になる。『フリーズ』とも言う。『落ちる』とか、『クラッシュ』とか、色んな言葉がある。
 とにかくコンピューターが止まった、困った、という時のその人の心の悲鳴がそれらの言葉には込められている。
 もうちょっとそうなったときのコンピューターの気持ちを考えてあげると、コンピューターはその時本当にフリーズ(凍る)して、止まっているのかというと、そうではない。
 もちろん、ブレーカーが落ちた場合は、電流が流れなくなるから、コンピューターは止まるけれども、そうでないときは、どうなっているのか。
 諸君はもう、CPUというコンピューターの心臓部の働き方を知っている。今の私のこのVAIOのパソコンは、64ビット・パソコンであるから、64本の入力と64本の出力をCPUが持っているということを諸君はもう知っているのだ。その知識を生かして、この謎を解こう。
 とにかく、CPU(シーピーユー)というのは、パソコンそのものの心臓であり、一番の売りだからメーカーもお金をかける。例えばペンティアム4なんていう名前のCPUは、発熱がすごかったので、使いすぎると熱でおかしくなるということで安全装置が働いて自動的に止まるようになっていたりした。だが、普通熱を逃がす工夫もしてあり、高級な材質で造られているから、まずCPUは壊れない。じゃあ、さっき話した、64本の電流のやり取りは、ちゃんと行われているんだ。だとしたら、なんで止まるんだ。
 これは、一度でも、プログラムというものを作ろうとしてみれば分かる。作らなくてもいい。作ろうと思えば分かるのだ。どういうことかというと、ずっと動き続けるようにプログラムを作る、というのは、ものすごく難しいのだ。だってそうだろう。例えば、ビルを建設するという場合だって、ビルが完成すれば、仕事は終わる。その後、
「何をしたらいいんですか?」
と、現場人夫達が言ってきたら、社長のあなたはどうする?
 みんな、家庭を抱えている。食べさせるためには、仕事がなければいけないのだ。あなたは、仕事を作ってあげなければいけないのだ。
 ところで、これをコンピューターのプログラムで考える。コンピューターに1つの仕事をやらせた後どうするか。普通プログラムを書く人は後のことまで考えない。
「終わったら、後はどうなってもいいよ。」
みたいな、感じである。プログラムが、そこで、切れてたら、コンピューターは普通、何もしなくなる。
 ちゃんとしたプログラマーなら、BASICの場合、最後にEND(えんど)という命令を書いてあるから、無事止まる。いずれにせよ、始まったのだから、いつかは止まるのが自然なのである。

 まず、それが、大前提。

 そしてそこに新しく登場するのがプログラムが終わってもCPUは動き続けているという概念。
 さっきから言っているように、CPUは壊れない。だから、電源を入れている限り、1.7GHz要するに
1秒間に1,700,000,000回(17億回)
命令を受け取り結果を出すという動作をしっぱなし。
 ものすごい、働き者なんだね。


 実は、このパソコンを買うとき、お金がなかったので、
「このパソコンは、i3(あいさん)なのですが、i5(あいご)が良いと言われるのはなぜなんですか。」
ソニーの人に聞いた。そうしたら、その人は良く分かってて、
「このi3は、1.7GHzのままなんです。ずっといつも同じなんです。でも、i5のCPUっていうのは、このHzが、CPUが忙しくなってくるとアップするんです。それで、みんながi5の方が良いって言うんです。」
と、説明してくれた。私は、よーく分かった。だけど、お金がなかったので、i5は買えず、これを買ってきた。でも、ここにこの説明を書けるように、私があの時、質問したのだったとすれば、まんざら、悪い選択でもなかった。買えないのでなかったら、質問しなかったもの。
 というわけで、忙しくなくなるとスピードを緩くするCPUがあるのは確かだ。だが、止まるとは言ってないぞ。
 そうなのだ。やっぱりi5だって動きっぱなしなのだ。
 だから、コンピューターには,動いているんだけど、見かけ上止まっているように見える、64本の電線の電流の扱い方というのが、設計されているのだ。そういう状態も何種類か用意されていて、それぞれの冬眠状態から起こす命令なども決まっていなくてはならない。
 さて、ここからが
「プログラムがちゃんとしてないと恐ろしことになる。」
という話である。

 だが、またブログの1回分の量を超え始めている。1回、投稿しよう。

 現在2015年1月27日10時32分である。おしまい。