次元大介の秘密は、早撃ち0.3秒のプロフェッショナル、その境界条件は、帽子がゾウアザラシのオス四歳の腹の皮製でなければならないことである。
さて、言わずと知れた超難解な超ひも理論。これを一般向けに解説するにはどうすればいいか?そんな試みをしてくれる、ありがたい書がある。分かった気になれるということが、どれだけ幸せなことか。知識ってやつは、具えた度量の範疇で身に付ける分にはすこぶる心地良い存在だが、精神次元を超えた途端に面倒な存在となる。分かりやすくすれば、厳密性をある程度犠牲にせざるを得ない。時には、暗黙で了解することも必要であろう。これを抽象化と言うかは知らん。
真理を探求するには、こちらから高みにのぼっていくしかあるまい。だが、いくらのぼっても頂点が見えてこない。それどころか、一つ疑問を解決する度に続々と疑問が湧いてきやがる。知識はエントロピーな状況にあるのか?何事も、解釈することができても、永遠に理解することはできないということか...
本書は、次元の概念を「自然単位系」と「Dブレーン」という切り口から迫る。ひもとは何か?宇宙の構成要素の最小単位に迫ろうとすれば、素粒子なるものにぶち当たる。素粒子がどこまで素粒子なのかは知らん。ただ今のところ、ボソン(ボース粒子)とフェルミオン(フェルミ粒子)とに種別される。ボソンには、ゲージ粒子がある。ゲージ粒子とは、電磁場における座標変換...それも回転変換が重要のようだが、時空変換とでもしておこうか...その変換系において対称性を示すようなものらしい。対称性とは、ある変換系を通しても基本的な性質が変わらないこと。具体的には、光子、弱い力を伝えるウィークボソン、原子核を作っているクォークを結びつけるグルーオン、重力を伝えるグラヴィトン(重力子)がある。一方、フェルミオンには、電子やクォークなどがある。物理学は、これら素粒子を扱う量子論と、運動の相対論との間で矛盾が生じることに悩まされてきた。そこで、ひもの特性から5次元以上の空間を仮定すると、素粒子と電磁場の関係が自然に説明できるとされる。
本書は、ボソンを力の素、フェルミオンを物質の素として、性質の違いを説明してくれる。しかも、対称性の中でも飛び切りの「超対称性」ってやつが、ボソンとフェルミオンの相互関係の入替えまで起こすという。力の素とはなんとも曖昧な用語だが、ニュートンは力を質量と加速度の体系で、運動の存在論として記述した。物質の素とは、ある種のポテンシャルと考えていいだろう。ただ、電磁ポテンシャルの本質に迫ろうとすると頭が痛い。
物質の存在を強烈に印象づけるものに質量があるが、アインシュタインは質量をエネルギーに転化した。さらに量子の存在は、エネルギーを運動とポテンシャルの体系で定義される。そして、素粒子のエネルギーの根源を突き詰めていくと、その正体がひもの振動であることに行き着く。それは、ギターの弦のように腹と節が生じるような運動を想定すればいいだろう。腹と節が境界条件として重要な意味を持ち、ひもの端点が固定される場合が「ディリクレ条件」とされる。
さて、人間の存在論も、肩書きや権威といった重みから、能力や意欲といったエネルギーに転化されてきた。そして今、何かに依存しなければ生きてはいけないことに気づき始めている。その何かとは、ひもであったか。男性諸君は皆、ひもになるのを夢見る。右へ左へと心が揺れ動き、孕(腹)ませると節目へ逃げる、ということを繰り返しながら...
ここで注目したい概念に、キス数によって決まる安定な次元数というものがある。同時に何人とキスできるか?もっとも、単位球が同時に何個くっつくことができるか、という幾何学の問題である。2次元であれば、真ん中の円に6個の円がくっつくので、キス数は6となる。平面では正六角形の格子点で安定するわけだ。3次元になると意外と難しい。12個まではくっつくが、13個目となると微妙で、うまいこと摩り替わる。
さて、次の安定状態は、8(= 10 - 2) と、24(= 26 - 2) になるという。接する相手が安定するとは、エネルギー的には自由度を示すことになるらしい。相手が固定されると不自由を感じそうなものだが。そして、超ひもの自由度は8次元、ボソンひもの自由度は24次元になるとしている。格子的な安定次元で言えば、10次元と26次元ということになるのだが、それぞれ -2 されるのは、ひもは時間方向と縦方向に振動できないからだという。
尚、振動現象には横波と縦波がある。例えば、電磁波は横波、音波は縦波、地震波は両方。仮に光子が縦波であれば、一時的に光速を超えて、こりゃまずい!なので、電磁波の振動方向である偏光は、進行方向に対して直角になる。
話を戻すと、宇宙が10次元と26次元に存在する素粒子で構成されると仮定すれば、宇宙空間が自然に説明できるという。Dブレーンとは、ディリクレ面を意味し、各次元の境界条件がディリクレ条件になるということのようだ。
しかし、だ。次元が安定する必要があるのだろうか?次元は本当に離散的な存在なのだろうか?実は、次元そのものが、丸い!ってことはないのだろうか?フラクタル次元は、もはや整数の枠に留まらない。人は思考レベルが違うと「次元が違う」なんて言い方をするが、年齢を重ねると「心が丸くなる」なんて言い方もする。日々虚しさが過ぎるのを眺めれば、虚時間や無境界仮説を信じたくもなる。それでも、次元が多いと幸せになれそうな気がする。電磁場では乱数的に吸い寄せられる素粒子群が、夜の社交場では乱交的に吸い寄せられる小悪魔群へと転化される。これも、場におけるゲージ変換系に加えておこう。
したがって、次元数はキスのテクニックで決まるのよ。キスの修行を無限に励めば、次元も角が取れて丸くなるに違いない。やはり、空間の本質はハーレムにあったか... おっと!いつの間にか幸福論を語っている。超難解なものを分かりやすく記述しようとすれば、男の美学に近づき、ひも屋の独り善がり論となる。
1. 単位系の意義
ニュートン力学では重力定数 G が、量子力学ではディラック定数 ℏ が、相対性理論では光速 c が、それぞれ基準とされる。どこまでを自然単位系と呼ぶかは、世界によっても多少違う。ひも屋は、ディラック定数 ℏ と光速 c を 1 とする自然単位系を使い、重力定数 G は残しておいた方が良いことが多いという。
しかし、いくら重力定数、プランク定数、ボルツマン定数、光速といった基準を設けたところで、宇宙は時間とともに膨張を続けている。よって、あらゆる基準や定数は、時間の関数となるはず。宇宙構造の最小単位が超ひもであるなら、どんな物理量も超ひもに内在するエネルギーで換算できるかもしれない。プランク長 lp は、自然界の3つの基本定数を組み合わせて作った、最小長さの次元を持つ数値だという。
lp = √(ℏG/c3) ≈ 1.6 x 10-35 m
単位系の意義は、何を 1 として基準にするかにある。こうした発想は、相対的な認識能力しか持てない知的生命体の悪あがきであろうか。一般に親しまれる MKSA単位系にしても、すべての定数を解体すると、とてつもない数値になる。そもそも 1秒って、どうな数値なのか?プランク長で換算すると...やーめた!光速 c = 2.99792... x 108 m/s2 にしても、ディラック定数を 1 とした結果である。ちなみに、ディラック定数 ℏ(エイチバー)とは、プランク定数 h を 2π で割ったもので、π が介在することで量子スピンの周期性を表している。
さて、単位系を再定義してみよう。重力定数をちょいと変えてやるだけで、多くの女性たちが救われるだろう。アルコール濃度を酔っ払い度で換算すれば、酒税効率が上がるだろう。これが単位系の意義というものよ。
2. ディラックの巨大数仮説
興味深い二つのオーダーを紹介してくれる。
e2/(cℏ) ≈ 1/137 : 微細構造定数
e2/(Gmemp) ≈ 2 x 1039 : 電磁力と重力の比
me は電子の質量、mp は陽子の質量。上式は、10-2 オーダーだが、下式に比べてほぼ 1 と捉える。下式は、1040 オーダーとして眺める。そして、物理学の基本定数や素粒子の質量などを使って無次元の量を作ると、驚くことに!すべて 1 か 1040 のオーダーになるという。これが、ポール・ディラックの巨大数仮説というものだそうな。ディラックは、光が電子を横切る時間で宇宙年齢を換算したという。
例えば...
宇宙年齢は、137億年とされる。つまり、約 1010 年オーダー。
電子の大きさは、e2/(mec2) = 2.81794 x 10-15 m。
これを光速で割ると、e2/(mec3) = 9.39963 x 10-24 s。
さらに、1010 年を秒換算して、光が電子を横切る時間で割ると、
(1010 x 365 x 24 x 60 x 60 s) / (9.39963 x 10-24 s) = 3.3503 x 1040
なるほど、1040 オーダーが出現する。つまり、重力定数が時間に反比例するというのだ。
e2/(Gmemp) ∝ t
確かに、空間が変化するのなら、質量が一定とは考えにくい。ディラックの論文の要旨をまとめると、こんな感じになるらしい。
「宇宙の年齢は当然のことながら時間 t に比例して増える。その無次元の大きさは 1040 程度である。電子と陽子の間に働くクーロン力と重力の比も 1040 程度である。この二つの無次元量は、ほとんど同じなので、簡単な関数関係にあると考えるのが妥当である。仮に、この2つの量が等しいと考えると、重力定数は時間 t に反比例するという結論が導かれる。」
3. カルーツァ=クライン理論
ニュートン力学では、ポテンシャルを微分すると力が現われる。電磁気では、電磁ポテンシャルを微分すると電場 E や磁場 B が現われる。
E = - ∂A/∂t - ∇φ
B = ∇ ☓ A
A はベクトルポテンシャル、φ はスカラーポテンシャル。
電磁気学の本質は、ポテンシャルのゲージ変換によって、マクスウェル方程式が不変であることだという。電磁ポテンシャルを4次元で考えると、微分して得られる電場や磁場は3次元空間になる。つまり、時間の次元を考慮しなければ、電磁場は平面上に幽閉されるわけだ。そして、0次元の点を円の次元に昇格させて、次元数を一つ増やすと、電磁場の空間をうまいこと説明できそうか。
仮に、物質の根源が超ひもの振動だとすると、ほとんど永久的に振動できるほどのエネルギーが放出されることになろう。そこで、5つ目の次元が円軌道のようなエネルギー状態であれば、普段は相殺しあって、その存在にも気づかないかもしれない。
アインシュタインの4次元空間に円筒の次元を加えて5次元にすることで、電磁気学と相対性理論の統一を図ろうとしたのが、カルーツァ=クライン理論というものらしい。要するに、次のように見なすということだが、まさに巡回群である。
x4 ≡ x4 + 2πr
そうなると、素粒子の自由度を増やすには、5次元と言わず、エネルギー状態が円を形成するような次元をどんどん増やせばよいことになりそうだ。宇宙空間の本質は、振動や周期性にあるのか?そして、真空中にも何かが存在するというのか?
4. ひもの境界条件
ひもの物理的な構造は、無限小のバネの数珠つなぎになったような状態をイメージすればいいようだ。
とはいえ、開いたひもは一次元なのだから端点があり、それが腹か節かで様子が変わってくる。腹であれば自由端となり、これを「ノイマン条件」、節であれば固定端となり、これを「ディリクレ条件」と呼ぶそうな。昔は自由端だけを想定したそうだが、現在では固定端でもいいことが分かっているという。尚、古典的なひも理論では、質量密度が一定で、張力も一定にするという。超ひも理論では、質量密度を一定にしないところが違うらしい。質量密度が、点の伸び率に比例するとか。
そして、張力 T から、ひもの長さ ls は、次のようになるという。
ls = 1/√(2πT)
さらに、プランク長 lp との関係は次のようになるという。
ls8 = e2φlp8
φはディラトンと呼ばれる素粒子。添字の8(= 10 - 2)は、超ひもの10次元を示す。尚、eφ は電荷に相当するもので、ひもの「結合定数」と呼ぶそうな。
結合の強弱の交換 eφ ⇔ 1/eφ は、φ ⇔ -φ と同義になるらしい。強弱の交換を「S双対性」、大小の交換を「T双対性」、双方を混ぜたものを「U双対性」と呼ぶそうな。ひも理論では、エネルギーの強弱交換や、スケールの大小交換などを組み合わせて、対称性を見出すことが鍵となりそうか。
さて、ここでは指数関数にディラトンが現われるのがミソのようである。つまり、指数関数だからオイラーの公式に持ち込むことができて、うまいこと相殺するわけか。要するに、指数関数 e やら π やらが絡むと、その周期性から空間に認識できない何かが生じて、幸せになれるということかもしれん。
5. 重力定数とラグランジアン
ひも理論では、作用という概念を導入すると、自動的に方程式が出てくる仕組みになっているという。その作用とはラグランジアンのことで、大まかに運動エネルギーとポテンシャルエネルギーの差のようなものだという。ちなみに、ハミルトニアンは、大まかに運動エネルギーとポテンシャルエネルギーの和のようなものだという。
さて、バネ振動の運動エネルギーとポテンシャルエネルギーを求めれば、ひものラグランジアンが求まる。そして、ラグランジュ方程式にラグランジアンを代入すると、単振動の方程式に帰着する。こまでは普通の運動法則。
ところが、これに重力子とディラトンと電磁場が絡んで行列展開されると、理解力を超えた結果が登場しやがる。多次元理論で、重力定数が変化すると考えるのは自然かもしれない。なにしろ空間が変化するのだから。とはいえ、なんじゃこりゃ???
G4 ≈ G10/R6
4次元の重力定数が、10次元の重力定数と6次元の空間半径で決定されているではないか。これは異空間との接触を意味しているのか?それとも霊感を数式で表したらこうなるのか?
6. 超対称性
ボソンが無限次元と関係するのに対して、フェルミオンは2次元に潜んでいるという。ちなみに、ボソンは同じ状態が無限に、しかも同時に存在することが可能だという。
物理学には、重要な概念に「調和振動子」というものがある。単なるバネの単振動だが、それを量子化するところにミソがあるようだ。ボソンとフェルミオンのそれぞれの状態と生成・消滅演算子は、次のようになるという。
[a, a*] ≡ aa* - a*a = 1 :ボソン
{c, c*} ≡ cc* + c*c = 1 :フェルミオン
* は、複素共役。a や c は調和振動子の振幅。
さらに、超対称性は、次のような電荷 Q を考えることによって実現できるという。
Q = c*a + a*c
ボソンとフェルミオンをごっちゃにしたような電荷。この関係から、ボソンをフェルミオンに、フェルミオンをボソンに変えてしまうようなことが生じるらしい。例えば、ボソンの光子に Q を施して回転させると、フォティーノというフェルミオンになり、ボソンのグラヴィトンを回転させると、グラヴィティーノというフェルミオンになるといった具合に。ちなみに、フォティーノもグラヴィティーノもまだ未発見のようだ。あくまでも理論的な仮説だが、無限次元と2次元の間で交信ができるとでも言うのか?これが、テレポートってやつかは知らん。
7. 10次元と26次元
ひも理論で次元を考察する時、臨界次元とローレンツ異常を考慮する必要があるという。臨界次元を求める方法の一つは、異常項をなくすことだという。
異常項ってなんだ?ローレンツ異常と呼んでいるが、4次元におけるエネルギーと質量の関係と、量子スピンの概念から面白い考察を紹介してくれる。
まず、4次元の空間座標 (t, x, y, z) を想定する。
同様にエネルギーや運動量も (E, px, py, pz) の4次元とする。
ローレンツ変換は座標変換であり、(t, x, y, z) = (t', x', y', z') において、
t2 - x2 - y2 - z2 = t'2 - x'2 - y'2 - z'2
という不変量が存在するという。同様に、運動量にも不変量が存在し、それを質量に転化する。
E2 - px2 - py2 - pz2 = E'2 - p'x2 - p'y2 - p'z2 = m2
ここで、x方向にのみ運動すると仮定すれば、次のようになる。
E2 - px2 = m2
座標系で表すとこうなる。
(E, px, 0, 0)
いっそのことx方向だけでなく、質量 m の粒子と一緒に動く座標系を想定するとこうなる。
(m, 0, 0, 0)
つまり、E = m というわけだが、かなり強引だ。ここで問題になるのが、m = 0 の時。
E2 - px2 = 0
E = ±px となるわけだが、プラスだけ選ぶと、
(E, E, 0, 0)
つまり、質量ゼロの粒子は必然的に運動量を持つという。なんじゃそりゃ?質量ゼロの光子や電子が存在したって、不思議はないってか?
また、素粒子はスピンという角運動量を持っているとされる。つまり、自転している。光子はスピン1、ウィークボソンもスピン1。光子には二つの偏光状態があって、スピンの向きでそれぞれ +1, -1 になる。
ところが、ウィークボソンには、スピンの向きが、+1, 0, -1 の三種類あるという。それは、光子には質量がないのに対して、ウィークボソンには質量があるからだそうな。光子のスピンは (E, E, 0, 0) という格好で、y と z の方向に2の自由度があり、ウィークボソンのスピンは (m, 0, 0, 0) という格好で、x と y と z の方向に3の自由度があるということか。そして、次元 D において、質量ゼロの粒子は D - 2 の自由度があり、質量があると D - 1 の自由度があるということらしい。
おまけに、ひも理論の教科書には、次のような質量と次元の関係が出てくるそうな。
m2 = 2πT(26 - D)/24
こうして俗世間の酔っ払いは、狐につままれるのであった...
8. 熱力学とブラックホール
ブラックホールは、驚くほど熱力学に似ているという。
熱力学の法則は、こんな感じ...
第0法則: 熱的な平衡状態にある物体で温度 T は一定
第1法則: エネルギー保存則、dE = TdS + 仕事の項
第2法則: エントロピー増大の法則、δS ≧ 0
第3法則: どんな物理過程も、絶対零度 T = 0 には到達できない
ブラックホールの法則はこんな感じ...
第0法則: 定常状態にあるブラックホールの地平線で表面重力 κ は一定
第1法則: dM ∝ κdA + 回転や荷電の項、質量の変化分は表面重力と面積の変化分の積に相当
第2法則: 常に、δA ≧ 0、地平線の表面積は増加するのみ
第3法則: どんな物理過程も、κ = 0 には到達できない
熱力学の方は、E が内部エネルギー、S がエントロピー、T が絶対温度。ブラックホールの方は、M が質量、A が地平線の表面積、κ がその表面重力。地平線とは、そこに入ると二度と出られない境界線のことで、次のような対応関係があるという。
T ∝ κ, S ∝ A
エントロピーが、体積ではなく表面積に比例するのか?熱力学は統計力学によって支えられているが、ブラックホールも Dブレーンを波動的に捉えるというイメージが伝わる。
量子力学では、真空は何もない状態ではなく、量子場でいつも電子と陽電子がペアで生成しては消滅し、それを繰り返している状態と考える。だが、ブラックホールの地平線近辺で生成と消滅を繰り返せば、陽電子だけが地平線の向こうに落ちて、電子だけが残る可能性がある。相棒を失った電子は、自己消滅もできず、あたかもブラックホールが電子を放出しているように見えるかもしれない。ホーキング放射ってやつだ。この現象は、Dブレーン上を走っているひも同士が衝突して、ちぎれて、閉じたひもが放出される過程だという説もあるらしい。
Contents
- 2013-05-05 "次元の秘密" 竹内薫 著
- 2013-04-28 "よみがえる天才アルキメデス" 斎藤憲 著
- 2013-04-21 "ラング線形代数学" Serge Lang 著
- 2013-04-14 "マックスウェルの悪魔(新装版)" 都筑卓司 著
- 2013-04-07 "コンピュータグラフィックス理論と実践" James D. Foley, Andries van Dam, Steven K. Feiner, John F. Hughes 共著
- 2013-04-01 史上最強の哲人「じゃりン子チエ」
- 2013-03-24 "カッコウはコンピュータに卵を産む(上/下)" Clifford Stoll 著
- 2013-03-17 "超マシン誕生" Tracy Kidder 著
- 2013-03-10 "ハッカーズ" Steven Levy 著
- 2013-03-03 "言語設計者たちが考えること" Federico Biancuzzi, Shane Warden 編
2013-05-05
2013-04-28
"よみがえる天才アルキメデス" 斎藤憲 著
アルキメデスの求積法が、近代の積分法にどんな知識を準備し、どこが決定的に違っていたのか?これは、そうした視点からのアルキメデス入門書である。
物語は、推理小説の題材にもなりそうな発見から始まる。1906年、幻の著作「方法」の写本が発見された。表題は「エラトステネスに宛てた機械学的定理に関する方法」というそうな。一旦、第一次大戦後の混乱の中で行方不明となるが、再び出現。1988年、ニューヨークでクリスティーズのオークションに出品され、シリコンバレーで財を成した者が200万ドルで落札。その人物の名は公開されていないそうだが、有益な調査に惜しみない協力をしたという。写本に秘められる思考法には驚くべきものがある。ニュートンやライプニッツより二千年も先んじていたとは...
アルキメデスと言えば、その逸話から数学者というより技術者の印象が強い。それは、梃子の原理による投石器、浮力の原理と重心の理論による造船技術、船底に溜まった水を汲み出すスクリュー機... などの発明である。きっと理論と実践の両刀遣いに違いない。彼の思考には、ギリシア幾何学の知識が豊富に詰まっている。幾何学の基盤と言えば、やはり三角形であろう。そこで、ちょいと泥酔風に三角形の正体を暴いてみようと思う。なぁーに、中学生レベルの算数よ...
放物線とその切片である直線とで囲まれる面積を求める場合を考えてみる。まず、始点と終点を底辺とし、放物線上の点を頂点とする三角形を埋める。そして、その三角形の辺を底辺とし、放物線上の別の点を頂点とした三角形を埋める。こうして次々に三角形の辺を底辺としながら、放物線上の点を頂点とする断片的な三角形で埋め尽くせば、求める面積に近づく。放物線の描く軌跡を三角形の総和として眺めれば、三角形の面積の無限級数に対応するという寸法よ。
また、対象図形において、その区間を底辺とし、対象図形上を通る点を頂点とするように三角形を配置するということは、底辺から対象までの距離を測ることを意味する。三角形の高さは、頂点と底辺との垂線によって決定されるのだから。直角の性質は、近代数学では直交性で抽象化され、集合論、行列式、ベクトル理論、線形空間などで重要な概念とされてきた。同時に、二物の距離は二物の関係へ、平面上の垂線は多次元ベクトルへ、それぞれ抽象化されるわけである。解析学では、分析対象を直交関係にある二つの関数で分割するという基本的な思考がある。フーリエ変換が正弦関数と余弦関数を基底にするのも、互いの直交性を利用している。
面積や体積を求める時、基本図形を物差しにしながら分割し結合する方法は「取り尽くし法」として知られ、ユークリッド原論にも記される。本書は、これを「二重帰謬法」と呼んでいる。帰謬法とは背理法のことで、証明したい命題を否定してみると矛盾が生じる、というやり方で証明する論法である。二重帰謬法では、ある命題を直接証明するのではなく、より大きいか、より小さいかと仮定して矛盾を導き、その正体に近づいていく。この思考法は、積分法そのものの基本原理であり、三角形の幾何学と無限級数の代数学の融合によって組み立てられている。アルキメデスが古代ギリシア幾何学と古代バビロニア代数学の融合を夢見ていたかは知らんが...
こうした思考法が二千年以上も前から実践されてきたということは、人間の認識原理に、三角形の原理と微積分的思考の組み合わせのようなものがあるのだろうか?神を定義するために三位一体の概念を持ち出し、自己存在を確認するために第三者の意見を求める。人々が揉め事を好んで三角関係に安住を求めるのは、三体問題が解けないことを本能的に知っているからであろうか?人間は謎めいたものに惹かれる習性がある。だから、三角関係で微妙に距離を測りながら、小悪魔に憑かれるのよ。夜の社交場という耳慣れない場所では、縁(円)を求めて鋭角の視線を送ると、角張った性格を丸くしてくれる、と聞く。
また、相対的な認識能力しか持てない知的生命体が、物事を知ろうとすれば、何かと比較しながら恐る恐る近づこうとする。近代数学では、多くの微分方程式が解けないという事情から、大小関係から迫る方法が盛んに行われる。その最たるものがε-δ論法だ。このヘンテコな理論が大学の初等教育で扱われるのは、数学の偉大さに屈服させようという魂胆か?おかげで、使いもしない道具のために落ちこぼれる羽目に。ちなみに、微分学の美学には、永遠に近づこうとすることは、永遠に到達できないことを意味する!というのがある、と聞いた。いや、夜の社交学の美学だったか?定かではない。
ところで、ユークリッド原論でも見かけた「グノーモーン」が登場する。古代ギリシア人のお好きなやつで、日時計によって作られるようなL字型の図形である。なるほど、人は影を引きずって生きているというわけか。本質を解明するには、その影を追いかけよ!とでもいうのか?そうかもしれん。
1. アルキメデスの逸話
有名な逸話といえば、公衆浴場から裸で飛び出して叫んだ一言「Eureka!(分かったぞ!)」。シュラクサイのヒエロン王は、金の冠を作らせて神殿に奉納された。尚、この冠(ステパノス)は王冠ではなく、古代オリンピックの勝者に与えられた月桂冠のような形だったという。冠に銀が混ざっているとの告発があると、怒ったヒエロン王は真相を調べるように命じる。だが、金を溶かしてみるわけにもいかない。浴場でこの難問を考えていると、体が浸かった分だけ水が流れだすのを見て、冠の体積を測ればよいことに気づく。金と銀の比重の違いに目をつけたのだ。そして、冠を水をいっぱいにした甕に沈めて、あふれた水の体積を測った。
また、「支点を与えよ。そうすれば地球を動かしてみせる。」という言葉も有名。梃子の原理を使えば、小さな力で大きなものを動かせるという意味である。巨大船シュラコシア号の逸話では、ヒエロン王が建造中だった巨大な船を、アルキメデスはわずかな人手で進水させたという。滑車やウインチといった機械を利用して。換算すると4000トン以上にもなるとか。昔話には誇張があるもの。ここでは、長さ76.5メートル、幅15メートル、喫水3.9メートル、積載量1900トンという見積りをあげている。この船の底に溜まった水を汲み出すために、コクリアスというスクリュー型の汲み上げ機が使われたという。
ただ、コクリアスの発明をアルキメデスの功績にするのは、ちと怪しいようだ。古代人は、なんでも有名人の業績にしてしまう傾向があったという。第二次ポエニ戦争では、ローマ軍はアルキメデスの機械に散々手こずらされたという。投石器を使い、軍艦をクレーンで振り回し、太陽光で軍船を焼いたという話まであるそうな。この戦争でアルキメデスは死ぬことになるが、ローマの将軍マルケッルスは、彼を生かして連行するよう厳命したという。問題が解けるまで動こうとしなかったので、怒った兵士に殺されたという説もある。その時、「私の円を乱すな!」と言ったとか、言わなかったとか。我を忘れる集中力!これこそが天才の原動力なのかもしれん。
尚、彼の墓には、球の体積を発見したことに因んで、球と円柱が彫られていたそうな。紀元前1世紀、キケロが財務官としてシチリアに赴任した時に埋もれた墓を発見したという。だが、惜しいことに現存しないらしい。
2. C写本の経緯
アルキメデスの時代、文献はパピルスに記された。ただ保存性が悪く、現代に伝わるギリシア語の写本の大半は9世紀以降にビザンツ帝国(東ローマ帝国)のコンスタンティノープルで筆写されたものだという。東ローマ帝国の公用語はラテン語ではなくギリシア語であったので、しばしば「ギリシア人の帝国」と呼ばれたそうな。
アルキメデスの著作も、この例に漏れないようだ。C写本と呼ばれるからには、A写本とB写本がある。最も重要とされるのがA写本で、9世紀に作られ主要な著作の多くを網羅するという。ルネサンス期の人文主義者ジョルジョ・ヴァッラが所有していたが、彼の死後行方不明。残念ながら現存しないらしい。B写本は、13世紀に作られ、ヴァチカンの所蔵品でラテン語に翻訳されているという。これも行方不明だとか。
実は、ギリシアの学術文献の大半は、ラテン語訳される前にアラビア語に訳されるという経緯を辿ったそうな。イスラム教の創始者ムハンマドが7世紀前半に大帝国を築き、8世紀半ばにバグダッドに都を定めたアッバース朝では、ギリシア学術が熱心に研究され翻訳されたという。今では、アラビア語でしか残っていないギリシア文献も少なくないという。
さて、本テーマのC写本は、1906年にデンマークの学者ハイベアによって発見されたという。10世紀後半に作成され、12世紀に祈祷書が上書きされた「パリンプセスト」。中世の写本はたいてい羊皮紙に書かれたという。だが、羊皮紙は貴重であったため、表面を擦って文字を消し、別の著作を写すために再利用されたとか。このような写本をパリンプセストと言うそうな。ギリシア語で「再びこすったもの」という意味があるとか。ハイベアという名はユークリッド原論でも見かけたが、ギリシア数学文献の校訂版の大半を作成した人だそうで、他にはアポロニオスの「円推曲線論」、プトレマイオスの「アルマゲスト」などがあるという。
しかし、C写本は、第一次大戦後の混乱の中で、イスタンブールから姿を消し、パリで再発見される。売却されたのか?盗人の仕業か?不心得な聖職者が持ちだしたのか?...分からずじまい。なんと、パリの国立図書館はフランス文化に関係ないとして購入を断ったとか。1988年、結局オークションに出品されるが、状態は酷く、百年で千年分のダメージがあったという。そして、紫外線の力とコンピュータの威力で再現されることに...
3. 名声と民主政治
アルキメデスは生前から評価されていたわけではなく、正当な評価を受けない苛立ちと、孤独な数学者という姿も残されるという。古代ギリシアの一般的な行動様式は、他の学者を批判して自分の優秀さを強調することだとか。今と何が違うんだっけ?
ギリシアで論証数学が成立したのは、民主政治との関わりがあるのだろう。それは、ソフィストの出現に見られる。戦争をやるにしても、僭主の独断で始めるわけにはいかない。世論を説得できるほどの理屈がなければ、ボリスは動かない。論理的思考と民主政治は相性が良いのかもしれない。逆に言えば、感情論に委ねれば、民主政治は簡単に暴走するということか。
それはさておき、定理の功績について、C写本の序文にこう記されるという。
「エウドクソスが最初にその証明を見出した円錐と角錐についての定理、すなわち円錐は同高同底の円柱の3分の1であり、角錐は同高同底の角柱の3分の1であるという定理に関して、デモクリトスにも少なからぬ貢献を認めるべきでしょう。彼はこれらの図形に関する性質を証明なしで述べたのですから。」
デモクリトスは原子論を唱えたことでも知られるが、プラトンやアリストテレスに嫌われたこともあって、わずかな断片しか残っていないという。デモクリトスの歴史からの抹殺はかなり徹底しているそうな。プロクロスの「幾何学列伝」にもデモクリトスの名が見当たらないという。ギリシア数学は、紀元前6世紀タレスやピュタゴラスに始まり、プラトンのアカデメイアで発展したというのが通説であろう。いつの時代でも、巨匠から嫌われた人物は、歴史から抹殺される運命にある。そもそも、純粋な観念による真理の探求者は、名を挙げようなどとはしないだろう。ならば、名声などというものにどれだけの意味があるのだろうか。
物語は、推理小説の題材にもなりそうな発見から始まる。1906年、幻の著作「方法」の写本が発見された。表題は「エラトステネスに宛てた機械学的定理に関する方法」というそうな。一旦、第一次大戦後の混乱の中で行方不明となるが、再び出現。1988年、ニューヨークでクリスティーズのオークションに出品され、シリコンバレーで財を成した者が200万ドルで落札。その人物の名は公開されていないそうだが、有益な調査に惜しみない協力をしたという。写本に秘められる思考法には驚くべきものがある。ニュートンやライプニッツより二千年も先んじていたとは...
アルキメデスと言えば、その逸話から数学者というより技術者の印象が強い。それは、梃子の原理による投石器、浮力の原理と重心の理論による造船技術、船底に溜まった水を汲み出すスクリュー機... などの発明である。きっと理論と実践の両刀遣いに違いない。彼の思考には、ギリシア幾何学の知識が豊富に詰まっている。幾何学の基盤と言えば、やはり三角形であろう。そこで、ちょいと泥酔風に三角形の正体を暴いてみようと思う。なぁーに、中学生レベルの算数よ...
放物線とその切片である直線とで囲まれる面積を求める場合を考えてみる。まず、始点と終点を底辺とし、放物線上の点を頂点とする三角形を埋める。そして、その三角形の辺を底辺とし、放物線上の別の点を頂点とした三角形を埋める。こうして次々に三角形の辺を底辺としながら、放物線上の点を頂点とする断片的な三角形で埋め尽くせば、求める面積に近づく。放物線の描く軌跡を三角形の総和として眺めれば、三角形の面積の無限級数に対応するという寸法よ。
また、対象図形において、その区間を底辺とし、対象図形上を通る点を頂点とするように三角形を配置するということは、底辺から対象までの距離を測ることを意味する。三角形の高さは、頂点と底辺との垂線によって決定されるのだから。直角の性質は、近代数学では直交性で抽象化され、集合論、行列式、ベクトル理論、線形空間などで重要な概念とされてきた。同時に、二物の距離は二物の関係へ、平面上の垂線は多次元ベクトルへ、それぞれ抽象化されるわけである。解析学では、分析対象を直交関係にある二つの関数で分割するという基本的な思考がある。フーリエ変換が正弦関数と余弦関数を基底にするのも、互いの直交性を利用している。
面積や体積を求める時、基本図形を物差しにしながら分割し結合する方法は「取り尽くし法」として知られ、ユークリッド原論にも記される。本書は、これを「二重帰謬法」と呼んでいる。帰謬法とは背理法のことで、証明したい命題を否定してみると矛盾が生じる、というやり方で証明する論法である。二重帰謬法では、ある命題を直接証明するのではなく、より大きいか、より小さいかと仮定して矛盾を導き、その正体に近づいていく。この思考法は、積分法そのものの基本原理であり、三角形の幾何学と無限級数の代数学の融合によって組み立てられている。アルキメデスが古代ギリシア幾何学と古代バビロニア代数学の融合を夢見ていたかは知らんが...
こうした思考法が二千年以上も前から実践されてきたということは、人間の認識原理に、三角形の原理と微積分的思考の組み合わせのようなものがあるのだろうか?神を定義するために三位一体の概念を持ち出し、自己存在を確認するために第三者の意見を求める。人々が揉め事を好んで三角関係に安住を求めるのは、三体問題が解けないことを本能的に知っているからであろうか?人間は謎めいたものに惹かれる習性がある。だから、三角関係で微妙に距離を測りながら、小悪魔に憑かれるのよ。夜の社交場という耳慣れない場所では、縁(円)を求めて鋭角の視線を送ると、角張った性格を丸くしてくれる、と聞く。
また、相対的な認識能力しか持てない知的生命体が、物事を知ろうとすれば、何かと比較しながら恐る恐る近づこうとする。近代数学では、多くの微分方程式が解けないという事情から、大小関係から迫る方法が盛んに行われる。その最たるものがε-δ論法だ。このヘンテコな理論が大学の初等教育で扱われるのは、数学の偉大さに屈服させようという魂胆か?おかげで、使いもしない道具のために落ちこぼれる羽目に。ちなみに、微分学の美学には、永遠に近づこうとすることは、永遠に到達できないことを意味する!というのがある、と聞いた。いや、夜の社交学の美学だったか?定かではない。
ところで、ユークリッド原論でも見かけた「グノーモーン」が登場する。古代ギリシア人のお好きなやつで、日時計によって作られるようなL字型の図形である。なるほど、人は影を引きずって生きているというわけか。本質を解明するには、その影を追いかけよ!とでもいうのか?そうかもしれん。
1. アルキメデスの逸話
有名な逸話といえば、公衆浴場から裸で飛び出して叫んだ一言「Eureka!(分かったぞ!)」。シュラクサイのヒエロン王は、金の冠を作らせて神殿に奉納された。尚、この冠(ステパノス)は王冠ではなく、古代オリンピックの勝者に与えられた月桂冠のような形だったという。冠に銀が混ざっているとの告発があると、怒ったヒエロン王は真相を調べるように命じる。だが、金を溶かしてみるわけにもいかない。浴場でこの難問を考えていると、体が浸かった分だけ水が流れだすのを見て、冠の体積を測ればよいことに気づく。金と銀の比重の違いに目をつけたのだ。そして、冠を水をいっぱいにした甕に沈めて、あふれた水の体積を測った。
また、「支点を与えよ。そうすれば地球を動かしてみせる。」という言葉も有名。梃子の原理を使えば、小さな力で大きなものを動かせるという意味である。巨大船シュラコシア号の逸話では、ヒエロン王が建造中だった巨大な船を、アルキメデスはわずかな人手で進水させたという。滑車やウインチといった機械を利用して。換算すると4000トン以上にもなるとか。昔話には誇張があるもの。ここでは、長さ76.5メートル、幅15メートル、喫水3.9メートル、積載量1900トンという見積りをあげている。この船の底に溜まった水を汲み出すために、コクリアスというスクリュー型の汲み上げ機が使われたという。
ただ、コクリアスの発明をアルキメデスの功績にするのは、ちと怪しいようだ。古代人は、なんでも有名人の業績にしてしまう傾向があったという。第二次ポエニ戦争では、ローマ軍はアルキメデスの機械に散々手こずらされたという。投石器を使い、軍艦をクレーンで振り回し、太陽光で軍船を焼いたという話まであるそうな。この戦争でアルキメデスは死ぬことになるが、ローマの将軍マルケッルスは、彼を生かして連行するよう厳命したという。問題が解けるまで動こうとしなかったので、怒った兵士に殺されたという説もある。その時、「私の円を乱すな!」と言ったとか、言わなかったとか。我を忘れる集中力!これこそが天才の原動力なのかもしれん。
尚、彼の墓には、球の体積を発見したことに因んで、球と円柱が彫られていたそうな。紀元前1世紀、キケロが財務官としてシチリアに赴任した時に埋もれた墓を発見したという。だが、惜しいことに現存しないらしい。
2. C写本の経緯
アルキメデスの時代、文献はパピルスに記された。ただ保存性が悪く、現代に伝わるギリシア語の写本の大半は9世紀以降にビザンツ帝国(東ローマ帝国)のコンスタンティノープルで筆写されたものだという。東ローマ帝国の公用語はラテン語ではなくギリシア語であったので、しばしば「ギリシア人の帝国」と呼ばれたそうな。
アルキメデスの著作も、この例に漏れないようだ。C写本と呼ばれるからには、A写本とB写本がある。最も重要とされるのがA写本で、9世紀に作られ主要な著作の多くを網羅するという。ルネサンス期の人文主義者ジョルジョ・ヴァッラが所有していたが、彼の死後行方不明。残念ながら現存しないらしい。B写本は、13世紀に作られ、ヴァチカンの所蔵品でラテン語に翻訳されているという。これも行方不明だとか。
実は、ギリシアの学術文献の大半は、ラテン語訳される前にアラビア語に訳されるという経緯を辿ったそうな。イスラム教の創始者ムハンマドが7世紀前半に大帝国を築き、8世紀半ばにバグダッドに都を定めたアッバース朝では、ギリシア学術が熱心に研究され翻訳されたという。今では、アラビア語でしか残っていないギリシア文献も少なくないという。
さて、本テーマのC写本は、1906年にデンマークの学者ハイベアによって発見されたという。10世紀後半に作成され、12世紀に祈祷書が上書きされた「パリンプセスト」。中世の写本はたいてい羊皮紙に書かれたという。だが、羊皮紙は貴重であったため、表面を擦って文字を消し、別の著作を写すために再利用されたとか。このような写本をパリンプセストと言うそうな。ギリシア語で「再びこすったもの」という意味があるとか。ハイベアという名はユークリッド原論でも見かけたが、ギリシア数学文献の校訂版の大半を作成した人だそうで、他にはアポロニオスの「円推曲線論」、プトレマイオスの「アルマゲスト」などがあるという。
しかし、C写本は、第一次大戦後の混乱の中で、イスタンブールから姿を消し、パリで再発見される。売却されたのか?盗人の仕業か?不心得な聖職者が持ちだしたのか?...分からずじまい。なんと、パリの国立図書館はフランス文化に関係ないとして購入を断ったとか。1988年、結局オークションに出品されるが、状態は酷く、百年で千年分のダメージがあったという。そして、紫外線の力とコンピュータの威力で再現されることに...
3. 名声と民主政治
アルキメデスは生前から評価されていたわけではなく、正当な評価を受けない苛立ちと、孤独な数学者という姿も残されるという。古代ギリシアの一般的な行動様式は、他の学者を批判して自分の優秀さを強調することだとか。今と何が違うんだっけ?
ギリシアで論証数学が成立したのは、民主政治との関わりがあるのだろう。それは、ソフィストの出現に見られる。戦争をやるにしても、僭主の独断で始めるわけにはいかない。世論を説得できるほどの理屈がなければ、ボリスは動かない。論理的思考と民主政治は相性が良いのかもしれない。逆に言えば、感情論に委ねれば、民主政治は簡単に暴走するということか。
それはさておき、定理の功績について、C写本の序文にこう記されるという。
「エウドクソスが最初にその証明を見出した円錐と角錐についての定理、すなわち円錐は同高同底の円柱の3分の1であり、角錐は同高同底の角柱の3分の1であるという定理に関して、デモクリトスにも少なからぬ貢献を認めるべきでしょう。彼はこれらの図形に関する性質を証明なしで述べたのですから。」
デモクリトスは原子論を唱えたことでも知られるが、プラトンやアリストテレスに嫌われたこともあって、わずかな断片しか残っていないという。デモクリトスの歴史からの抹殺はかなり徹底しているそうな。プロクロスの「幾何学列伝」にもデモクリトスの名が見当たらないという。ギリシア数学は、紀元前6世紀タレスやピュタゴラスに始まり、プラトンのアカデメイアで発展したというのが通説であろう。いつの時代でも、巨匠から嫌われた人物は、歴史から抹殺される運命にある。そもそも、純粋な観念による真理の探求者は、名を挙げようなどとはしないだろう。ならば、名声などというものにどれだけの意味があるのだろうか。
2013-04-21
"ラング線形代数学" Serge Lang 著
学生時代に落ちこぼれ、とうに放棄したはずが、いまだ纏わりついてくる。おいらは数学屋ではない。なのに、線形代数の関連書籍だけで、本棚の一列を占拠してやがる。線形って奴に真理めいたものが秘められているというのか???
線形という言葉は、定義するだけでも難しい。グラフで描けば直線になるもの、すなわち一次関数と習ったものだが、目盛を任意の関数にとれば、どんな曲線だって直線になる。指数関数だって、対数関数だって... どうやら、写像における連続性の方に目を向けた方がよさそうである。とりあえず線形とは、原因と結果の絡みが何らかの形で連続性を示す予測可能な関係とでもしておこうか。
しかし、ほとんどの物理現象は非線形に見舞われる。世間では未来予測のための法則を見出そうと躍起だが、実際には初期条件や境界条件を前提しなければならない。電子工学では... リニア素子と呼んだところで、限られた範囲の周波数特性において線形性を見せるだけ。市場経済では... トレンド性を重視し、予測不能な期間では静観しておくのが身のため。人生では... 成長著しい十代からやがて老化して飽和していき、そして、なによりも生まれて死ぬという特異点がある。おまけに、この二大特異点で連続性が保たれるのか?と問えば、宗教にしか答えが見つからない。人間が出来る事と言えば、非線形な現象の中から線形に見える領域だけを、都合よく解釈することぐらいか。
人間の認識原理は、連続性と相性がいい。現在という認識は、過去から未来への流れの中で構築され、脳内時間の連続性を失った途端に精神分裂症に苛む。観測という行為が認識する事に他ならないとすれば、線形代数という道具があらゆる観測系で用いられるのも道理というものか。
本書は、大学初等レベルの教科書である。ただ、何かをやる度に、いつもここに引き戻される。それは、いくらか努力する姿を見せて、自分に言い訳をしているだけのことかもしれん。電子回路やプログラムで演算機能を実装するには、効率の良いアルゴリズムが必要である。ハードウェア資源には限りがあり、たらたら計算する余裕などない。そこで、シミュレーションによって離散的なスナップショットを繰り返し、不連続なものを貼り合わせて現実世界に近づけようとする。そして、チューリングマシンのような構造は記号性と相性がよく、代数学に縋るという寸法よ。つまり、アルゴリズムとは、記号を用いて、いかに近似し、いかに誤魔化し、いかに計算の手を抜くか、という思考実験である。
だが困ったことに、物理現象を数学で記述するセンスがない。ある現象から変数を見出し、微分方程式まで組み上げたとしても、それを解くとなると丸投げする始末。そう、おいらにとって数学の道具とは、数学屋を道具にすることであった。
...いつもごめんなさい!例の店にニューボトル入れときます。
線形代数でいつも注目する概念は、直交性である。この数学の美が成り立てば、大幅に演算量を減らし簡略化できる。任意のデータを直交関係にある関数の成分に分解することが、解析学の基本的思考としてある。フーリエ変換にしても、正弦波と余弦波の直交関係を利用している。
さて、代数系では、加法と乗法によって系が閉じられているかを問題にする。代数構造に馴染もうとすれば、まずは複素数系を念頭に置けば良かろう。
しかし、実際に道具として用いるには、多項式まで考慮する必要がある。そこで、多項式は行列式と相性がいい。関数構造を行列式に持ち込むと、対角化や三角化といった概念が威力を発揮する。それを可能にするか、その指標となるのが固有値である。行列式において、固有値や固有ベクトルが求まる絶妙なケースが見つかければ、幸せになれるという寸法よ。おまけに、微分方程式もまた多項式として、すなわち、常微分方程式として眺められれば、幸せもひとしおとなる。
さらに、二次元変換系を 3 x 3 マトリックス、三次元変換系を 4 x 4 マトリックス、といった具合に、多項式の次元に +1 して正方行列に対応づけると、行列式の性質から極端に演算効率が高まる。まるで人間の認識能力に連続性の次元を加えたかのような。そう、「認識空間 + 時間」だ。
ただ、再読しているうちに、ちと違った感覚に見舞われる。それは、内積の意義である。それは... グラム = シュミット直交化法で紹介される正値との関係。つまり、内積が非負であること。これを非退化と呼ぶことに、ちと抵抗があるものの。あるいは、エルミート積としての複素共役の意義、行列式と双線形写像との相性。...といったものである。いずれも直交性の概念を、ちと角度を変えて眺めているだけなんだけど。
また、これは外積の方だが、多重線形積としてのテンソル積の意義、あるいは、超平面における凸集合の意義、作用素としてのユニタリや随伴写像も見逃せない...などなど、この書にはまだまだ未開(未解)の地が広がる。あと何回読み返すことになるのやら...
てなわけで、たまには夜の社交場へ直行する角度も、ちと変えてみるか。あと何回通うことになるのやら...
1. 代数的構造
基本的な代数構造といえば、体、群、環、あるいはイデアルといったものがある。まず、馴染めない用語に目をつぶろう。いずれも加法および乗法の二項演算を備えた集合であって、結合法則、交換法則、分配法則において系に留まることができるか、あるいは単位元や逆元が存在するか、によって分類されるだけのこと。例えば、減算において、自然数系ではマイナスになって系を飛び出す可能性があるが、整数系では系に留まることができる。こうした抽象化の成果によって、数の概念を自然数、整数、有理数、実数、複素数へと拡張させてきた。そして今、数の概念に多項式が結びついたからこそ、複雑な演算系を定義することができる。言い換えれば、用途に応じて都合よく演算系が選べるわけだ。
さて、具体的な系を見ていこう。
体は、公理化すると非常にややこしいが、簡単に述べると、加法においてアーベル群で、乗法において結合法則が成り立つと同時に単位元が存在し(零元以外では逆元も存在する)、乗法と加法の間で分配法則が成り立つような集合である。ここで重要なのは、体が加法と乗法において定義されることで、とりあえず実数体か複素数体と考えて差し支えなかろう。
群は、結合法則が成り立ち、単位元と逆元が存在する集合で、さらに交換法則が成り立てば可換群、すなわちアーベル群となる。
環は、体の条件と少し似ていて、加法においてアーベル群で、乗法において結合法則が成り立つと同時に単位元が存在し、乗法と加法の間で分配法則が成り立つような集合である。環はその名からして、巡回群との関係を匂わせる。
また、半群というものもあって、群の中で逆元が存在しないものを言う。環も、乗法において半群と言うことができそうか。
ところで、演算系において、逆元が存在するかという問題は非常に大きい。特に、行列式の乗算では、掛ける順番が問題となる。そこで、左右のどちらから掛けても単位行列になるような環、すなわちイデアルが登場する。本書は、体上のベクトル空間を自己準同形環上の加群と見なすと、都合がいいと助言してくれる。
2. クラーメルの法則
クラーメルの法則は、行列式と連立一次方程式を対応させる概念としてよく知られる。その鍵は一次独立にある。今、A1, ..., An を体Kn の列ベクトルとし、次の関係があるとする。
det(A1, ..., An) ≠ 0
B を同じく Kn の列ベクトルとし、Kの元 x1, ..., xn について、次の関係があるとする。
x1A1 + ... + xnAn = B
すると、j = 1, ..., n について、次式が成り立つという。
xj = det(A1, ..., B, ..., An) / det(A1, ..., An)
尚、分母はAの行列式、分子はAのj列をBで置き換えた行列式。
3. バンデルモンドの行列式
バンデルモンドの行列式は便利そうな形をしている。実は、画素の差分を求めるような処理で、これを知らないがために悔しい思いをしたことがある。
det Vn = Π(xj - xi), (ただし、i < j)
4. グラム = シュミット直交化法
まず、Vを正値スカラー積を持つ実数上の有限次元ベクトル空間とする。つまり、<v, v> ≧ 0 で、v ≠ 0 ならば、スカラー積は正値となるような関係。
そして、WをVの部分空間とし、{w1, ..., wm} をWの直交基底とする。つまり、<V, W> = 0 のような関係。
すると、W ≠ V ならば、{w1, ..., wm, wm+1, ..., wn} がVの直交基底となる Vの元 wm+1, ..., wn が存在するという。
これを証明する方法として、グラム = シュミット直交化法が紹介される。
まず、{w1, ..., wm, vm+1, ..., vn} がVの基底となるような、Vの元 vm+1, ..., vn が存在するとしているが、これは一般的には直交基底ではないだろう。そこで、直交基底を作ることを考える。それは、vm+1 から、w1, ..., wm へ沿って射影を減じていくというアイデア。
すなわち、
c1 = <vm+1, w1> / <w1, w1>, ..., cm = <vm+1, wm> / <wm, wm>
として、次のようにおく。
wm+1 = vm+1 - c1w1 - ... - cmwm
すると、任意の整数iに対して(1 ≦ i ≦ m)、
<wm+1, wi> = <vm+1, wi> - <ciwi, wi> = 0
となり、wm+1 は、w1, ..., wm に垂直であるという。
さらに、wm+1 ≠ O。さもないと、vm+1は、w1, ..., wm に一次従属となってしまう。
そして、
vm+1 = wm+1 + c1w1 + ... + cmwm
となり、vm+1は、w1, ..., wm+1 が生成するベクトル空間に含まれる。したがって、{w1, ..., wm+1} は、Wm+1 の直交基底ということになる。これが正規直交系ならば、もっと幸せになれそう。
5. ハミルトン = ケーリーの定理
これは、固有値の概念の一つで、線形写像Aに対応する固有値{λ1, ..., λn} があるとすると、その特性多項式は次のようになるという。
P(A) = (A - λ1I)(A - λ2I)...(A - λnI) = 0
これは、正方行列の性質として注目しておこう。
6. スペクトル定理
線形写像を、固有値全体の集合として眺める。この見方をスペクトルと言うらしい。
Vを有限次元ベクトル空間で、正値スカラー積を持つとする。対称線形写像 A: V → V において、v を零でないAの固有ベクトルとする。そして、w がVの元で、vに垂直ならば、Aw もまた v に垂直であるという。
<Aw, v> = <w, Av> = <w, λv> = λ<w, v> = 0
となるから自明であると。また、Aの固有ベクトルからなるVの直交基底が存在するという。どうやら、これがスペクトル定理というものらしい。そして、ユニタリ作用素やエルミート作用素で、スペクトル分解すると、なんらかの解析ができるということであろうか???
7. 超平面と凸集合
超平面とは、二次元平面を多次元に一般化した概念である。つまり、n次元空間における超平面とは、次元が n - 1 の平坦な部分空間のことを言い、一つの超平面は全体空間を二つの半空間に分割することになる。
また、空間を分割する概念で、凸集合というものを紹介してくれる。凸集合とは、n次元空間において、二点 P, Q を結ぶ線分の集合である。そのすべての線分は次式で表される。
(1 - t)P + tQ, 0 ≦ t ≦ 1
これは、ちょっと考えれば明らかで、一般的に書くと次のようになる。
t1 + ... + tn = 1, 0 ≦ ti ≦ 1
t1P1 + ... + tnPn
凸集合をEとすると、境界面はEの頂点集合 P1, ..., Pn の一次結合で表される。この一次結合の集合を Ec とすると、Ec もまた凸になるという。そして、Ec をEの凸閉包と呼ぶそうな。この時、境界をどのように扱うかが重要となる。要するに、境界を含むか含まないか。境界が曲線であれば、多角形の頂点を近づけることになるだろう。
クレイン = ミルマンの定理によると、境界Sにおいて閉、有界、凸集合であれば、Sはその頂点の凸閉包であるとしている。ただし、有限でない凸集合、例えば、閉じた上半平面などは、その頂点の凸閉包になるとは限らないという。開いた凸集合も、その頂点は凸閉包になるとは限らないという。クレイン = ミルマンの定理は、この厄介な二つのケースを除いて、難点が残らないように述べているという。
線形という言葉は、定義するだけでも難しい。グラフで描けば直線になるもの、すなわち一次関数と習ったものだが、目盛を任意の関数にとれば、どんな曲線だって直線になる。指数関数だって、対数関数だって... どうやら、写像における連続性の方に目を向けた方がよさそうである。とりあえず線形とは、原因と結果の絡みが何らかの形で連続性を示す予測可能な関係とでもしておこうか。
しかし、ほとんどの物理現象は非線形に見舞われる。世間では未来予測のための法則を見出そうと躍起だが、実際には初期条件や境界条件を前提しなければならない。電子工学では... リニア素子と呼んだところで、限られた範囲の周波数特性において線形性を見せるだけ。市場経済では... トレンド性を重視し、予測不能な期間では静観しておくのが身のため。人生では... 成長著しい十代からやがて老化して飽和していき、そして、なによりも生まれて死ぬという特異点がある。おまけに、この二大特異点で連続性が保たれるのか?と問えば、宗教にしか答えが見つからない。人間が出来る事と言えば、非線形な現象の中から線形に見える領域だけを、都合よく解釈することぐらいか。
人間の認識原理は、連続性と相性がいい。現在という認識は、過去から未来への流れの中で構築され、脳内時間の連続性を失った途端に精神分裂症に苛む。観測という行為が認識する事に他ならないとすれば、線形代数という道具があらゆる観測系で用いられるのも道理というものか。
本書は、大学初等レベルの教科書である。ただ、何かをやる度に、いつもここに引き戻される。それは、いくらか努力する姿を見せて、自分に言い訳をしているだけのことかもしれん。電子回路やプログラムで演算機能を実装するには、効率の良いアルゴリズムが必要である。ハードウェア資源には限りがあり、たらたら計算する余裕などない。そこで、シミュレーションによって離散的なスナップショットを繰り返し、不連続なものを貼り合わせて現実世界に近づけようとする。そして、チューリングマシンのような構造は記号性と相性がよく、代数学に縋るという寸法よ。つまり、アルゴリズムとは、記号を用いて、いかに近似し、いかに誤魔化し、いかに計算の手を抜くか、という思考実験である。
だが困ったことに、物理現象を数学で記述するセンスがない。ある現象から変数を見出し、微分方程式まで組み上げたとしても、それを解くとなると丸投げする始末。そう、おいらにとって数学の道具とは、数学屋を道具にすることであった。
...いつもごめんなさい!例の店にニューボトル入れときます。
線形代数でいつも注目する概念は、直交性である。この数学の美が成り立てば、大幅に演算量を減らし簡略化できる。任意のデータを直交関係にある関数の成分に分解することが、解析学の基本的思考としてある。フーリエ変換にしても、正弦波と余弦波の直交関係を利用している。
さて、代数系では、加法と乗法によって系が閉じられているかを問題にする。代数構造に馴染もうとすれば、まずは複素数系を念頭に置けば良かろう。
しかし、実際に道具として用いるには、多項式まで考慮する必要がある。そこで、多項式は行列式と相性がいい。関数構造を行列式に持ち込むと、対角化や三角化といった概念が威力を発揮する。それを可能にするか、その指標となるのが固有値である。行列式において、固有値や固有ベクトルが求まる絶妙なケースが見つかければ、幸せになれるという寸法よ。おまけに、微分方程式もまた多項式として、すなわち、常微分方程式として眺められれば、幸せもひとしおとなる。
さらに、二次元変換系を 3 x 3 マトリックス、三次元変換系を 4 x 4 マトリックス、といった具合に、多項式の次元に +1 して正方行列に対応づけると、行列式の性質から極端に演算効率が高まる。まるで人間の認識能力に連続性の次元を加えたかのような。そう、「認識空間 + 時間」だ。
ただ、再読しているうちに、ちと違った感覚に見舞われる。それは、内積の意義である。それは... グラム = シュミット直交化法で紹介される正値との関係。つまり、内積が非負であること。これを非退化と呼ぶことに、ちと抵抗があるものの。あるいは、エルミート積としての複素共役の意義、行列式と双線形写像との相性。...といったものである。いずれも直交性の概念を、ちと角度を変えて眺めているだけなんだけど。
また、これは外積の方だが、多重線形積としてのテンソル積の意義、あるいは、超平面における凸集合の意義、作用素としてのユニタリや随伴写像も見逃せない...などなど、この書にはまだまだ未開(未解)の地が広がる。あと何回読み返すことになるのやら...
てなわけで、たまには夜の社交場へ直行する角度も、ちと変えてみるか。あと何回通うことになるのやら...
1. 代数的構造
基本的な代数構造といえば、体、群、環、あるいはイデアルといったものがある。まず、馴染めない用語に目をつぶろう。いずれも加法および乗法の二項演算を備えた集合であって、結合法則、交換法則、分配法則において系に留まることができるか、あるいは単位元や逆元が存在するか、によって分類されるだけのこと。例えば、減算において、自然数系ではマイナスになって系を飛び出す可能性があるが、整数系では系に留まることができる。こうした抽象化の成果によって、数の概念を自然数、整数、有理数、実数、複素数へと拡張させてきた。そして今、数の概念に多項式が結びついたからこそ、複雑な演算系を定義することができる。言い換えれば、用途に応じて都合よく演算系が選べるわけだ。
さて、具体的な系を見ていこう。
体は、公理化すると非常にややこしいが、簡単に述べると、加法においてアーベル群で、乗法において結合法則が成り立つと同時に単位元が存在し(零元以外では逆元も存在する)、乗法と加法の間で分配法則が成り立つような集合である。ここで重要なのは、体が加法と乗法において定義されることで、とりあえず実数体か複素数体と考えて差し支えなかろう。
群は、結合法則が成り立ち、単位元と逆元が存在する集合で、さらに交換法則が成り立てば可換群、すなわちアーベル群となる。
環は、体の条件と少し似ていて、加法においてアーベル群で、乗法において結合法則が成り立つと同時に単位元が存在し、乗法と加法の間で分配法則が成り立つような集合である。環はその名からして、巡回群との関係を匂わせる。
また、半群というものもあって、群の中で逆元が存在しないものを言う。環も、乗法において半群と言うことができそうか。
ところで、演算系において、逆元が存在するかという問題は非常に大きい。特に、行列式の乗算では、掛ける順番が問題となる。そこで、左右のどちらから掛けても単位行列になるような環、すなわちイデアルが登場する。本書は、体上のベクトル空間を自己準同形環上の加群と見なすと、都合がいいと助言してくれる。
2. クラーメルの法則
クラーメルの法則は、行列式と連立一次方程式を対応させる概念としてよく知られる。その鍵は一次独立にある。今、A1, ..., An を体Kn の列ベクトルとし、次の関係があるとする。
det(A1, ..., An) ≠ 0
B を同じく Kn の列ベクトルとし、Kの元 x1, ..., xn について、次の関係があるとする。
x1A1 + ... + xnAn = B
すると、j = 1, ..., n について、次式が成り立つという。
xj = det(A1, ..., B, ..., An) / det(A1, ..., An)
尚、分母はAの行列式、分子はAのj列をBで置き換えた行列式。
3. バンデルモンドの行列式
バンデルモンドの行列式は便利そうな形をしている。実は、画素の差分を求めるような処理で、これを知らないがために悔しい思いをしたことがある。
| Vn = | 1 | x1 | ... | x1n-1 | ||
| 1 | x2 | ... | x2n-1 | |||
| ... | ||||||
| 1 | xn | ... | xnn-1 |
det Vn = Π(xj - xi), (ただし、i < j)
4. グラム = シュミット直交化法
まず、Vを正値スカラー積を持つ実数上の有限次元ベクトル空間とする。つまり、<v, v> ≧ 0 で、v ≠ 0 ならば、スカラー積は正値となるような関係。
そして、WをVの部分空間とし、{w1, ..., wm} をWの直交基底とする。つまり、<V, W> = 0 のような関係。
すると、W ≠ V ならば、{w1, ..., wm, wm+1, ..., wn} がVの直交基底となる Vの元 wm+1, ..., wn が存在するという。
これを証明する方法として、グラム = シュミット直交化法が紹介される。
まず、{w1, ..., wm, vm+1, ..., vn} がVの基底となるような、Vの元 vm+1, ..., vn が存在するとしているが、これは一般的には直交基底ではないだろう。そこで、直交基底を作ることを考える。それは、vm+1 から、w1, ..., wm へ沿って射影を減じていくというアイデア。
すなわち、
c1 = <vm+1, w1> / <w1, w1>, ..., cm = <vm+1, wm> / <wm, wm>
として、次のようにおく。
wm+1 = vm+1 - c1w1 - ... - cmwm
すると、任意の整数iに対して(1 ≦ i ≦ m)、
<wm+1, wi> = <vm+1, wi> - <ciwi, wi> = 0
となり、wm+1 は、w1, ..., wm に垂直であるという。
さらに、wm+1 ≠ O。さもないと、vm+1は、w1, ..., wm に一次従属となってしまう。
そして、
vm+1 = wm+1 + c1w1 + ... + cmwm
となり、vm+1は、w1, ..., wm+1 が生成するベクトル空間に含まれる。したがって、{w1, ..., wm+1} は、Wm+1 の直交基底ということになる。これが正規直交系ならば、もっと幸せになれそう。
5. ハミルトン = ケーリーの定理
これは、固有値の概念の一つで、線形写像Aに対応する固有値{λ1, ..., λn} があるとすると、その特性多項式は次のようになるという。
P(A) = (A - λ1I)(A - λ2I)...(A - λnI) = 0
これは、正方行列の性質として注目しておこう。
6. スペクトル定理
線形写像を、固有値全体の集合として眺める。この見方をスペクトルと言うらしい。
Vを有限次元ベクトル空間で、正値スカラー積を持つとする。対称線形写像 A: V → V において、v を零でないAの固有ベクトルとする。そして、w がVの元で、vに垂直ならば、Aw もまた v に垂直であるという。
<Aw, v> = <w, Av> = <w, λv> = λ<w, v> = 0
となるから自明であると。また、Aの固有ベクトルからなるVの直交基底が存在するという。どうやら、これがスペクトル定理というものらしい。そして、ユニタリ作用素やエルミート作用素で、スペクトル分解すると、なんらかの解析ができるということであろうか???
7. 超平面と凸集合
超平面とは、二次元平面を多次元に一般化した概念である。つまり、n次元空間における超平面とは、次元が n - 1 の平坦な部分空間のことを言い、一つの超平面は全体空間を二つの半空間に分割することになる。
また、空間を分割する概念で、凸集合というものを紹介してくれる。凸集合とは、n次元空間において、二点 P, Q を結ぶ線分の集合である。そのすべての線分は次式で表される。
(1 - t)P + tQ, 0 ≦ t ≦ 1
これは、ちょっと考えれば明らかで、一般的に書くと次のようになる。
t1 + ... + tn = 1, 0 ≦ ti ≦ 1
t1P1 + ... + tnPn
凸集合をEとすると、境界面はEの頂点集合 P1, ..., Pn の一次結合で表される。この一次結合の集合を Ec とすると、Ec もまた凸になるという。そして、Ec をEの凸閉包と呼ぶそうな。この時、境界をどのように扱うかが重要となる。要するに、境界を含むか含まないか。境界が曲線であれば、多角形の頂点を近づけることになるだろう。
クレイン = ミルマンの定理によると、境界Sにおいて閉、有界、凸集合であれば、Sはその頂点の凸閉包であるとしている。ただし、有限でない凸集合、例えば、閉じた上半平面などは、その頂点の凸閉包になるとは限らないという。開いた凸集合も、その頂点は凸閉包になるとは限らないという。クレイン = ミルマンの定理は、この厄介な二つのケースを除いて、難点が残らないように述べているという。
2013-04-14
"マックスウェルの悪魔(新装版)" 都筑卓司 著
科学者たちが自然法則に魅せられるのは、そこに対称性の美があるからであろう。大概の物理法則には、可逆性や回帰性といった基本性質がある。
しかし、熱力学第二法則だけが、不可逆性を主張する。実際、目の前の多くの物理現象や社会現象が不可逆性を見せやがる。太陽熱で氷を沸騰させることができても、逆に凍らせることはできない。ボールを自由落下させても、地面との衝突熱でエネルギーが奪われ、元の位置に跳ね返ることができない。生き物は、常に栄養分を吸収しながらもなお、若返りの道は閉ざされている。さらに、歴史は進む一方で、知識や情報は蓄積される一方。おまけに、精神エネルギーの損失が大きく、群衆は惑わされる一方。余計な知識を忘れ去れば幸せにもなれろうが、その選択でいつも誤る。記憶ってやつは、せめて時系列に順序正しく失われれば可愛げもあるが、忌まわしい過去ほど強く残りやがる。経済現象では、利率がマイナスになるのを見たことがない。これが欲望のバロメータかは知らん。こうした不可逆現象に介在する物理量が、時間とエントロピーってやつだ。
ちなみに、アインシュタインは、エントロピーはすべての科学にとって第一の法則であると語ったとか、語らなかったとか。エントロピーを研究したボルツマンやエーレンフェストが自殺したのは、不可逆性の矛盾を嘆いてのことかは知らん。
はたして不可逆性は、宇宙の真理なのか?例えば、箱の左半分に1気圧、右半分に2気圧の同じ気体が入っているとする。そして、中央の仕切りを外したらどうなるか?そりゃ、時間が経てば1.5気圧になるだろう。温度差、圧力差、濃度差のある気体が混合すれば、均等化の方向へ動く。しかも、再び分離することはない。そこで、電磁気学を確立したジェームズ・クラーク・マクスウェルは、ある思考実験を提起した。もし量子の世界に、エントロピーを減少させることができる小人たちがいたらどうだろうかと。無秩序へ邁進するものを秩序へ引き戻そうとする何かが存在したらどうだろうかと。その正体が、ダークマターとか呼ばれる暗黒物質にあるかは知らん。ただ、箱の中の気圧は、あくまでも平均値であって、比較的温度が高く、速度の速い分子が混在している。激しい運動をする分子は、中央の仕切りに衝突する確率も高くなるだろう。そこで、中央の仕切りを分子が衝突した時に一方向に弁が開く仕掛けにすれば、片方には気圧の高い分子が集まるはず...なーんて考えを披露してくれる。だが、弁に衝突した分子が間接衝突しているかもしれないし、比較的温度が高いかどうかなんて判別のしようもない。なにやら、この思考実験は悪魔じみている。
だからといって、不可逆性が真理だと無条件に受け入れられるだろうか?真理が心地良いものだとすれば、小悪魔こそ真理かもしれないではないか。たいていの教科書には、エントロピーはただ増大する!とだけ記述されるが、これを自明と言い切れる人は宗教家だけかもしれない。とはいえ、覆水盆に返らず!...後悔先に立たず!...空けたボトルにおとといおいで!...などと囁かれるのは、やはり人間はそれを真理だと薄々気づいているからではないか?いや、水と油のごとく最初から交わらないものもある。人間社会では、政治は凡庸化しているように映るが、生活様式や思想観念は多様化している。気体のような分子ではなく、意思を持った個体の集まりであれば、民主主義が機能するかは知らんが...
いずれにせよ、熱力学や統計力学の観点から眺めると、複雑化、乱雑化、均等化、多様化への推移、あるいは運命の片道切符といったものは、すべてエントロピーで抽象化できそうな気がする。熱力学の法則は、空想世界から現実世界に引き戻してくれる役割を担っている。一瞬で燃え上がる愛情熱は一瞬に冷める理性熱と相殺する。これが熱力学第一法則。そして、愛情の縺れはますます混沌へと向かう。これが熱力学第ニ法則。おまけに、何がしらの憎悪熱が残り、けして絶対零度まで完全に冷めることはない。これが熱力学第三法則。おっと!いつのまにか小悪魔について語っている。熱力学とは、夜の社交学であったか。
ところで、時間には親しみがある。だからといって、これを説明することは至難の業だが、ちょっとだけ頑張ってみるか...
物理現象を観測するとは、人間が認識することを意味する。つまり、純粋な物理系に、観測系が加わるということ。この統合環境は、やはり物理系を成す。これは、はたして純粋に物理現象を観測していると言えるだろうか?この問いは、不確定性原理を匂わせている。つまり、観測する行為そのものが、自己矛盾を孕んでいる。そう、人間が認識するという行為そのものが...
いまだ人類は、絶対的な価値観を構築できないでいる。相対的にしか認識能力を発揮できないとなれば、何かと対比しながら認識するしかない。そして、過去の経験と未来の希望との狭間で、現在の価値観を構築することになる。過去の経験は知識の選択という形で蓄積され、未来への希望は妥協や絶望という形で具現化される。ただ、人間は、時間の矢ってやつが一度放たれると戻ってこないことを、経験的に知っている。おそらく認識能力を持つ生命体は、「認識空間 + 時間」という次元の中に幽閉されるのであろう。
ならば、観測という行為を放棄したらどうだろうか?無認識こそ真理ということはないだろうか?もし時間に可逆性があるとしたら、記憶のメカニズムまでも逆戻りするだろうから、逆行していることさえ気づかないのではないのか?時間の収支が常に赤字なるのは、欲望という認識が働くだけのことではないのか?時間とは、認識の産物に過ぎないのかもしれん。そして、エントロピーもまた、時間に幽閉されているだけのことかもしれん。人間と時間、どちらが悪魔なのやら。人間は時間に魂を売ったのか?ファウスト博士がメフィストフェレスにしたように...
「地球には、バクテリアかなにかが繁殖するのが本来の姿であり、人間とは突然変異によってでき上がってしまった宇宙の変わり種だという説もある。偉大なる反エントロピーの創造者は、一方では鼠や昆虫やバクテリアのように、ながく生存する能力のない、か弱い動物なのであろうか。頭脳が発達したということが、かえって弱点であり、情報量を増やすという自滅行為のほか脳のない破綻者だろうか。」
1. 永久機関
人類は、古代から永久機関への夢を描いてきた。不老不死を求めるがごとく。金利所得だけで贅沢三昧という考えは、古代錬金術から受け継がれる思考原理で、永久享楽の欲望からきている。そして、人類は仮想社会の中に多様な価値を見出してきた。経済もまた、価値差益の循環機関として機能する。ただ、経済循環はしばしば頓挫する。金融危機とやらで。物理学が等速運動を証明し、振り子の動きを観察すれば、永久機関なるものが存在すると信じても不思議ではない。しかし、熱力学は、永久機関の存在をきっぱりと否定する。理想機関とされるカルノーサイクルは、絵に描いた餅というわけか。
さて、永久に運動を繰り返すとはどういうことか?機関系のエネルギーを外部に漏らさず、内部循環で完結するということか?そうだとすると、機関系からエネルギーを取り出すという時点で、外部との接点を持つことになるではないか。そもそも、外部系と接点を持たずに運動を開始することは可能であろうか?永久機関とは、無から有を創出しようとする企みということになりそうだ。なんらかの損失エネルギーが生じるならば、埋め合わせのエネルギーを与え続けなければならない。はたらけど、はたらけど猶わが生活楽にならざり、ぢっと手を見る!とは、そういうことであろうか。地球には太陽系との接点があり、人間社会にも自然との接点があり、こうした機関系はいつか破綻するだろう。では、宇宙空間は外部との接点があるのだろうか?接点がないとすれば、永久に内部循環する可能性があるのかもしれない。
2. エルゴード仮説と情報理論
エントロピーを研究する学問は、統計的にあるいは確率的に分析して本質を見極めようとする。圧力、温度、体積などはマクロ的な統計量であって、物理学の主役であるエネルギーがそういうものである。電圧、電流、電力にしても、個々の電子を観察したものではない。集団とは、どこかに反抗分子を抱えているものだ。個々の粒子を追ってもあまり効果が得られないとなれば、物理量のエルゴード性を観察することになる。ボイル・シャルルの法則にしても、アボガドロ数 N = 6.0 x 1023個という分子の数が非常に多い場合の関係を示している。その意味では、政治学やマクロ経済学と似ている。ただ、群衆の多数決が真理の方向性を示しているかは知らん。尚、エルゴードとは、ギリシャ語のエルグ(仕事)とオドス(道)をくっつけた造語だそうな。
さて、多くの物理現象は、離散的である。沸点や融点がそうだ。キュリー点では、ある温度で強磁性体は常磁性体に転移する。超伝導現象では、金属が超低温になると電気抵抗がゼロになる。単振動をする原子のエネルギーでは、hν の0.5倍、1.5倍、2.5倍...の離散値になる。尚、hはプランク定数、νは振動数。人間社会では、群衆エネルギーがある閾値を超えた時に爆発する。
では、なぜ物理現象は離散的なのだろうか?情報理論の父クロード・シャノンは、著書「通信の数学的理論」の中で、情報の本質は離散性であることを匂わせた。エントロピーの正体とは、ある種の情報を意味するのか?確かに、出鱈目の度合いという点から、エントロピーと確率、あるいは情報量と相性が良さそうだ。実際、エントロピーSは、次式で表される。
S = k log W (W: 事象やエネルギー状態の数, k: ボルツマン定数)
この式は、まさにシャノンの示したビットの概念とそっくり。エントロピーが増大するしかないとすれば、人間社会が情報に圧殺されるのも道理というものか。
3. 太陽の表面温度 6000K の系
太陽光は、湯を沸かすことができるほど、凄まじいエネルギーを持っている。供給されるエネルギーは、距離の二乗に反比例して小さくなるとはいえ、やはり直接浴びると健康には悪い。地表に到達する時は気温と調和されて心地良い温度となるものの、絶対温度6000度の系にあることは確かなようだ。
地球が太陽系の族である限り、太陽の放射線で決まる温度というものがあるそうな。放射線で決まる温度ってなんだ?熱い物体は放射エネルギーを出す。ただし、色つきの物体は特定の波長しか放出しないので、ここでは黒い物体としよう。黒体では、ある温度でどのような波長のエネルギーを多く出すかが決まっているという。発光体の温度が上がると、放射エネルギーも大きくなり、大きな振動数の光をたくさん放出するだろう。そして、熱をよく吸収する地上の物体は、潜在的に太陽の表面温度6000Kまで上昇できるというのか?どうやら、そうらしい。太陽方向に垂直な地上面は、1平方センチあたり、1分間にほぼ2カロリーの熱および光のエネルギーをもらっているという。太陽定数と呼ばれるやつか。レンズで黒い紙が燃えても、太陽光で火事になっても、不思議はないというわけだ。しかーし、それを言い出したら、太陽系だって、どこぞの恒星系の電磁波を浴びているだろう。オルバースのパラドックスのような無限エネルギーに曝されているってことにならないのか?
それはさておき、太陽よりもはるかに弱い発光天体が、ほどよく近くにあるとしたらどうだろうか?太陽と同じようにエネルギーを吸収して、地球環境が維持できるだろうか?それは無理だそうな。エネルギー総量が同等というだけでなく、そのエントロピーが小さいということも重要な要因だという。ほどよく近い仮想天体では、エネルギーの偏りが小さいので、エントロピーが極めて大きいという。エネルギーのゆらぎが大きいことが重要ということか。太陽光線には豊富な紫外線が含まれている。だからこそ植物は光合成をし、自分の成長の素材となる炭水化物を作ることができる。エネルギーにもメリハリが必要ということであろうか。いつも飽和状態では活性化されない。たまには忙しすぎることも、暇すぎることも必要であろう。多感だから様々な反応を感じ、創造力が増すのかもしれない。
しかし、もし地表が6000Kまで上昇したら、逆に太陽に向かって熱放射されるだろう。そうなると、太陽と地球の互いの存続はどうなるのだろうか?やはり、愛情熱や憎悪熱の強い相手は、軽く受け流すぐらいでちょうどいい。
しかし、熱力学第二法則だけが、不可逆性を主張する。実際、目の前の多くの物理現象や社会現象が不可逆性を見せやがる。太陽熱で氷を沸騰させることができても、逆に凍らせることはできない。ボールを自由落下させても、地面との衝突熱でエネルギーが奪われ、元の位置に跳ね返ることができない。生き物は、常に栄養分を吸収しながらもなお、若返りの道は閉ざされている。さらに、歴史は進む一方で、知識や情報は蓄積される一方。おまけに、精神エネルギーの損失が大きく、群衆は惑わされる一方。余計な知識を忘れ去れば幸せにもなれろうが、その選択でいつも誤る。記憶ってやつは、せめて時系列に順序正しく失われれば可愛げもあるが、忌まわしい過去ほど強く残りやがる。経済現象では、利率がマイナスになるのを見たことがない。これが欲望のバロメータかは知らん。こうした不可逆現象に介在する物理量が、時間とエントロピーってやつだ。
ちなみに、アインシュタインは、エントロピーはすべての科学にとって第一の法則であると語ったとか、語らなかったとか。エントロピーを研究したボルツマンやエーレンフェストが自殺したのは、不可逆性の矛盾を嘆いてのことかは知らん。
はたして不可逆性は、宇宙の真理なのか?例えば、箱の左半分に1気圧、右半分に2気圧の同じ気体が入っているとする。そして、中央の仕切りを外したらどうなるか?そりゃ、時間が経てば1.5気圧になるだろう。温度差、圧力差、濃度差のある気体が混合すれば、均等化の方向へ動く。しかも、再び分離することはない。そこで、電磁気学を確立したジェームズ・クラーク・マクスウェルは、ある思考実験を提起した。もし量子の世界に、エントロピーを減少させることができる小人たちがいたらどうだろうかと。無秩序へ邁進するものを秩序へ引き戻そうとする何かが存在したらどうだろうかと。その正体が、ダークマターとか呼ばれる暗黒物質にあるかは知らん。ただ、箱の中の気圧は、あくまでも平均値であって、比較的温度が高く、速度の速い分子が混在している。激しい運動をする分子は、中央の仕切りに衝突する確率も高くなるだろう。そこで、中央の仕切りを分子が衝突した時に一方向に弁が開く仕掛けにすれば、片方には気圧の高い分子が集まるはず...なーんて考えを披露してくれる。だが、弁に衝突した分子が間接衝突しているかもしれないし、比較的温度が高いかどうかなんて判別のしようもない。なにやら、この思考実験は悪魔じみている。
だからといって、不可逆性が真理だと無条件に受け入れられるだろうか?真理が心地良いものだとすれば、小悪魔こそ真理かもしれないではないか。たいていの教科書には、エントロピーはただ増大する!とだけ記述されるが、これを自明と言い切れる人は宗教家だけかもしれない。とはいえ、覆水盆に返らず!...後悔先に立たず!...空けたボトルにおとといおいで!...などと囁かれるのは、やはり人間はそれを真理だと薄々気づいているからではないか?いや、水と油のごとく最初から交わらないものもある。人間社会では、政治は凡庸化しているように映るが、生活様式や思想観念は多様化している。気体のような分子ではなく、意思を持った個体の集まりであれば、民主主義が機能するかは知らんが...
いずれにせよ、熱力学や統計力学の観点から眺めると、複雑化、乱雑化、均等化、多様化への推移、あるいは運命の片道切符といったものは、すべてエントロピーで抽象化できそうな気がする。熱力学の法則は、空想世界から現実世界に引き戻してくれる役割を担っている。一瞬で燃え上がる愛情熱は一瞬に冷める理性熱と相殺する。これが熱力学第一法則。そして、愛情の縺れはますます混沌へと向かう。これが熱力学第ニ法則。おまけに、何がしらの憎悪熱が残り、けして絶対零度まで完全に冷めることはない。これが熱力学第三法則。おっと!いつのまにか小悪魔について語っている。熱力学とは、夜の社交学であったか。
ところで、時間には親しみがある。だからといって、これを説明することは至難の業だが、ちょっとだけ頑張ってみるか...
物理現象を観測するとは、人間が認識することを意味する。つまり、純粋な物理系に、観測系が加わるということ。この統合環境は、やはり物理系を成す。これは、はたして純粋に物理現象を観測していると言えるだろうか?この問いは、不確定性原理を匂わせている。つまり、観測する行為そのものが、自己矛盾を孕んでいる。そう、人間が認識するという行為そのものが...
いまだ人類は、絶対的な価値観を構築できないでいる。相対的にしか認識能力を発揮できないとなれば、何かと対比しながら認識するしかない。そして、過去の経験と未来の希望との狭間で、現在の価値観を構築することになる。過去の経験は知識の選択という形で蓄積され、未来への希望は妥協や絶望という形で具現化される。ただ、人間は、時間の矢ってやつが一度放たれると戻ってこないことを、経験的に知っている。おそらく認識能力を持つ生命体は、「認識空間 + 時間」という次元の中に幽閉されるのであろう。
ならば、観測という行為を放棄したらどうだろうか?無認識こそ真理ということはないだろうか?もし時間に可逆性があるとしたら、記憶のメカニズムまでも逆戻りするだろうから、逆行していることさえ気づかないのではないのか?時間の収支が常に赤字なるのは、欲望という認識が働くだけのことではないのか?時間とは、認識の産物に過ぎないのかもしれん。そして、エントロピーもまた、時間に幽閉されているだけのことかもしれん。人間と時間、どちらが悪魔なのやら。人間は時間に魂を売ったのか?ファウスト博士がメフィストフェレスにしたように...
「地球には、バクテリアかなにかが繁殖するのが本来の姿であり、人間とは突然変異によってでき上がってしまった宇宙の変わり種だという説もある。偉大なる反エントロピーの創造者は、一方では鼠や昆虫やバクテリアのように、ながく生存する能力のない、か弱い動物なのであろうか。頭脳が発達したということが、かえって弱点であり、情報量を増やすという自滅行為のほか脳のない破綻者だろうか。」
1. 永久機関
人類は、古代から永久機関への夢を描いてきた。不老不死を求めるがごとく。金利所得だけで贅沢三昧という考えは、古代錬金術から受け継がれる思考原理で、永久享楽の欲望からきている。そして、人類は仮想社会の中に多様な価値を見出してきた。経済もまた、価値差益の循環機関として機能する。ただ、経済循環はしばしば頓挫する。金融危機とやらで。物理学が等速運動を証明し、振り子の動きを観察すれば、永久機関なるものが存在すると信じても不思議ではない。しかし、熱力学は、永久機関の存在をきっぱりと否定する。理想機関とされるカルノーサイクルは、絵に描いた餅というわけか。
さて、永久に運動を繰り返すとはどういうことか?機関系のエネルギーを外部に漏らさず、内部循環で完結するということか?そうだとすると、機関系からエネルギーを取り出すという時点で、外部との接点を持つことになるではないか。そもそも、外部系と接点を持たずに運動を開始することは可能であろうか?永久機関とは、無から有を創出しようとする企みということになりそうだ。なんらかの損失エネルギーが生じるならば、埋め合わせのエネルギーを与え続けなければならない。はたらけど、はたらけど猶わが生活楽にならざり、ぢっと手を見る!とは、そういうことであろうか。地球には太陽系との接点があり、人間社会にも自然との接点があり、こうした機関系はいつか破綻するだろう。では、宇宙空間は外部との接点があるのだろうか?接点がないとすれば、永久に内部循環する可能性があるのかもしれない。
2. エルゴード仮説と情報理論
エントロピーを研究する学問は、統計的にあるいは確率的に分析して本質を見極めようとする。圧力、温度、体積などはマクロ的な統計量であって、物理学の主役であるエネルギーがそういうものである。電圧、電流、電力にしても、個々の電子を観察したものではない。集団とは、どこかに反抗分子を抱えているものだ。個々の粒子を追ってもあまり効果が得られないとなれば、物理量のエルゴード性を観察することになる。ボイル・シャルルの法則にしても、アボガドロ数 N = 6.0 x 1023個という分子の数が非常に多い場合の関係を示している。その意味では、政治学やマクロ経済学と似ている。ただ、群衆の多数決が真理の方向性を示しているかは知らん。尚、エルゴードとは、ギリシャ語のエルグ(仕事)とオドス(道)をくっつけた造語だそうな。
さて、多くの物理現象は、離散的である。沸点や融点がそうだ。キュリー点では、ある温度で強磁性体は常磁性体に転移する。超伝導現象では、金属が超低温になると電気抵抗がゼロになる。単振動をする原子のエネルギーでは、hν の0.5倍、1.5倍、2.5倍...の離散値になる。尚、hはプランク定数、νは振動数。人間社会では、群衆エネルギーがある閾値を超えた時に爆発する。
では、なぜ物理現象は離散的なのだろうか?情報理論の父クロード・シャノンは、著書「通信の数学的理論」の中で、情報の本質は離散性であることを匂わせた。エントロピーの正体とは、ある種の情報を意味するのか?確かに、出鱈目の度合いという点から、エントロピーと確率、あるいは情報量と相性が良さそうだ。実際、エントロピーSは、次式で表される。
S = k log W (W: 事象やエネルギー状態の数, k: ボルツマン定数)
この式は、まさにシャノンの示したビットの概念とそっくり。エントロピーが増大するしかないとすれば、人間社会が情報に圧殺されるのも道理というものか。
3. 太陽の表面温度 6000K の系
太陽光は、湯を沸かすことができるほど、凄まじいエネルギーを持っている。供給されるエネルギーは、距離の二乗に反比例して小さくなるとはいえ、やはり直接浴びると健康には悪い。地表に到達する時は気温と調和されて心地良い温度となるものの、絶対温度6000度の系にあることは確かなようだ。
地球が太陽系の族である限り、太陽の放射線で決まる温度というものがあるそうな。放射線で決まる温度ってなんだ?熱い物体は放射エネルギーを出す。ただし、色つきの物体は特定の波長しか放出しないので、ここでは黒い物体としよう。黒体では、ある温度でどのような波長のエネルギーを多く出すかが決まっているという。発光体の温度が上がると、放射エネルギーも大きくなり、大きな振動数の光をたくさん放出するだろう。そして、熱をよく吸収する地上の物体は、潜在的に太陽の表面温度6000Kまで上昇できるというのか?どうやら、そうらしい。太陽方向に垂直な地上面は、1平方センチあたり、1分間にほぼ2カロリーの熱および光のエネルギーをもらっているという。太陽定数と呼ばれるやつか。レンズで黒い紙が燃えても、太陽光で火事になっても、不思議はないというわけだ。しかーし、それを言い出したら、太陽系だって、どこぞの恒星系の電磁波を浴びているだろう。オルバースのパラドックスのような無限エネルギーに曝されているってことにならないのか?
それはさておき、太陽よりもはるかに弱い発光天体が、ほどよく近くにあるとしたらどうだろうか?太陽と同じようにエネルギーを吸収して、地球環境が維持できるだろうか?それは無理だそうな。エネルギー総量が同等というだけでなく、そのエントロピーが小さいということも重要な要因だという。ほどよく近い仮想天体では、エネルギーの偏りが小さいので、エントロピーが極めて大きいという。エネルギーのゆらぎが大きいことが重要ということか。太陽光線には豊富な紫外線が含まれている。だからこそ植物は光合成をし、自分の成長の素材となる炭水化物を作ることができる。エネルギーにもメリハリが必要ということであろうか。いつも飽和状態では活性化されない。たまには忙しすぎることも、暇すぎることも必要であろう。多感だから様々な反応を感じ、創造力が増すのかもしれない。
しかし、もし地表が6000Kまで上昇したら、逆に太陽に向かって熱放射されるだろう。そうなると、太陽と地球の互いの存続はどうなるのだろうか?やはり、愛情熱や憎悪熱の強い相手は、軽く受け流すぐらいでちょうどいい。
2013-04-07
"コンピュータグラフィックス理論と実践" James D. Foley, Andries van Dam, Steven K. Feiner, John F. Hughes 共著
マンデルブロのフラクタル幾何学では、数学に裏付けられた抽象画に魅せられた。惚れっぽい酔っ払いは、CG芸術に惹かれる。とはいえ、なにせド素人!CG技術が概観できそうなものを探していると、ある専門家からこの本を薦められた。ちと古いが、この分野の教科書的な存在で、学生向きにも書かれているそうな。しかーし、1万5千円を超える値段にたじろぐ。図書館へ見物に行くと、千ページを超える分厚さにたじろぐ。
ところで、障害が大きいほど燃える!というのは本当であろうか?愛の場合はそうかもしれん。だが、速読術は速愛術のようにはいかんよ...
本書は、ソフトウェアとハードウェアの両面から議論される。その網羅する範囲は驚異的で、もう満腹!吐きそう!ソフトウェア面では、対話型インターフェースから、幾何変換、3次元投影法、可視面の決定における数学的方法論に、曲線や曲面の補正、色彩処理やシェーディングといったフィルタリング理論など、その技法とアルゴリズムが検討される。ハードウェア面では、画像操作と記憶メカニズムに、パイプラインや並列処理といった基本的なアーキテクチャが検討され、おまけに、SIMD や MIMD にまで議論が及び、高性能なGPUの必要性を感じさせる。メモリ資源が十分確保できれば、レイヤー毎のキャンバスをメモリ上に展開しておくことで、表示性能を向上させることができるだろう。そして、replace, and, or, xor といった単純な論理演算がサポートされるだけでも、かなりのことができそうだ。この分野は、メモリ容量、演算性能、高精細な表示デバイスといった十分なリソースが前提されるというわけか。コンピュータグラフィックスとは、ハードウェア資源の制約からソフトウェアを開放してきた歴史とすることができそうだ。それは、心理的リアリズムの追求の歴史とでもしておこうか。
SIMD: Single Instruction Multiple Data
MIMD: Multiple Instruction stream, Multiple Data stream
デスクトップの概念は、いまや仮想空間へ誘なうメタファのような存在となっている。その思想でよく耳にするのが、WYSIWYG(what you see is what you get)で、見たまんまの操作性に則るということ。これが対話型GUIの基本であろう。アイコンのデザインひとつとっても、設計センスがうかがえる。
しかし、良いデザインは、高精細な表示デバイスとセットで、より説得力を持つ。高精細ディスプレイだからこそ、斜線や曲線の処理を疎かにはできない。ドットが長方形に配列されれば、最も原始的な処理ではアンチエイリアシングが重要となる。画像の合成や結合などで用いるクリッピング処理では、キャラクタが背景に溶け込むような境界処理も必要となる。
表示デバイスの性能は、ドットの繊細さとアドレス指定能力で決まるという。ドット間隔がドットサイズよりも小さく指定できれば、それだけ柔軟性を与える。もちろん色階調も欠かせない要素だ。ちなみに、知人のデザイナーは、画面と印刷の色の微妙な違いが気になってしょうがないとボヤく。ディスプレイが違うだけでも微妙に色が違う。Webデザイナーともなると、そんな事まで配慮するのだろう。例えば、自動車メーカのサイトで、車体に微妙な光源処理を施しているのは、実物色との違いを誤魔化しているのかは知らん。
また、マッピング技法には、MIP という概念があるという。"multum in parvo"の略で、多くのものが小さな場所にあるという意味だそうな。その着想は、ウェーブレット変換に通ずるものがある。領域別にフィルタリングのレベルや演算方法を変えながら、線形補間によってスムージングするという考え方はあるだろう。そして、画像の領域を幾何学的に認識するような仕掛けも欲しい。今のところ人間がやる方が現実的かも。
心理物理学ともなれば、色相、彩度、明度が精神に与える影響を検討する。光の波長に対する視感効率関数というものがあると聞く。色彩のエネルギースペクトルと刺激量には、なんらかの関係がありそうな気がする。エネルギー分布関数を考慮すれば、ある心理状態を呼び覚ますこともできるかもしれない。ちなみに、色の知覚に関するものに、三刺激理論というものがあるそうな。網膜が、赤、緑、青の光にピーク感度を持つ3種類のセンサーを持っているという仮説だそうだが、これが三原色と関係するかは知らん。デザイナーは、数学的に編み出した色彩関数のようなものを直感的に知っているのかもしれない。プロフェショナルとは、素人の想像も及ばない領域で生きているものであろう。
ところで、むかーしから疑問に思っている事がある。なぜ走査線は横方向なのだろうか?ラスタースキャンが主流なのはブラウン管からの名残りと聞いたことがあるが、なんとなく疑わしい。タイプライタやラインプリンタも、文字単位の走査だけど、やはり横方向ではないか。対して、ベクタースキャンは、とんと聞かない。オシロスコープなどの測定器で見かけるぐらいか。心臓の波形モニタもそうか。尚、生体情報モニタと呼ぶらしい。
TFT などはスイッチのお化けなんだから、VRAMのランダムスキャンでもよさそうなもの。いや、通信効率が悪いか!ドライバの対応も辛いか!
長方形の画面を全スキャンしようとすると、走査線は横か縦になるのだろう。人間にとって四角形が自然なのか?インテリアの形状はだいたい四角形だが、貝殻を見ていると、螺旋の方が宇宙則に適っていそうな気もする。ただ言えることは、どんなスキャン方式を用いようが、今のところ、三次元空間を二次元平面に投影することに変わりはないということ。そう、いかに人間の眼を誤魔化すか、これがコンピュータグラフィックスの真髄であろうか。
今後、ディスプレイの大画面化と高精細化はますます進むであろう。解像度では、4KウルトラHDに突入しつつある。過去の画像データも、品質の陳腐化が目立つであろう。ピクセルデータでは、データ処理がかさむことになる。となれば、ベクタデータが見直されることもありうるかもしれない。GUIは、まさにゲシュタルト心理学の世界にある。いや、人の眼が脳を誤魔化すと言った方がいいか。
1. SRGP と SPHIGS
本書でちと気になるのが、SRGP と SPHIGS という二つの API を基準に書かれていることである。OpenGL が対象ならば言うことなしだが、関数群を眺めるだけでもだいたいの実装イメージが見えてくる。
SRGP は、QuickDraw と Xlib の2D整数パッケージの特徴を組み合わせたものだそうな。その制約では、整数座標系なので浮動小数点を要求するような精度や範囲には向かない、アクション履歴を持たないので他のプログラムから損傷を受けても再表示できない、あるいは三次元空間をサポートしていない、といったことがあるという。
そこで、三次元をサポートする高度な API として、SPHIGS が紹介される。SPHIGS は、PHIGS をベースに、3D浮動小数点パッケージの基本的な特徴に階層的な表示リストを加えたものだそうな。注目したい特徴は、データベース構造を採用していることである。オブジェクトデータ構造が、データベースによる階層ツリー構造というのは、古い時代にしてはやや驚きか。また、2Dの画面空間ではなく、抽象化された3Dワールド座標系で動作するという。つまり、ピクセルの直接操作はサポートされないとのこと。SRGP は、画面上のピクセル操作のために持ち出しているわけか。それぞれのグラフィックスパッケージには特徴と用途が異なり、万能なものは存在しないということであろう。
それにしても、この手のAPIでいつも悩まされるのが、標準座標系はどうなってんの?ってことだ。OpenGL と DirectX でも右手座標系と左手座標系で違う。この業界の住人は不便を感じないのだろうか?それとも、座標系に柔軟性を持たせた方が想像空間が拡がるということであろうか?
SRGP: Simple Raster Graphics Package
SPHIGS: Simple PHIGS(Programmer's Hierarchical Interactive Graphics System
2. プリミティブなアルゴリズム
最も原始的な技法に、二次元のアンチエイリアシングを持ち出す。それは、斜線や曲線に発生する階段状のギザギザ(ジャギー)を目立たなくする手法である。そして、クリッピングアルゴリズムとスキャン変換アルゴリズムを検討している。
むかーし、この実装で悩んだことがある。小型システムでは、CPUの能力やメモリ容量が十分ではないので、演算支援回路を装備することになる。今では、ソフトとハード支援部の役割分担も随分と変わってはいるが、小型化の欲求は納まりそうにない。例えば、昔の自動車のバックモニタなどは、機能は単純で斜線と曲線に対応すればよかった。だが、これが結構悩ましい。増分アルゴリズムや補正アルゴリズムで、単純な近似ではうまくいかない。四捨五入計算にしても、ピクセル数が多くなると処理時間は馬鹿にはならない。
ここに紹介される古典的な中点線分アルゴリズムは感動モノ。というより正式名を知らなかった。その名を Bresenham(ブレゼンハム)のアルゴリズムという。中点アルゴリズム自体は単純で、線分より実際の点が上にあるか下にあるかを判定して近似する。ただそれを、整数演算のみでやってやがる。ラインをスキャン変換するのに、整数決定変数を計算して符号のみをチェックし、数理線に最も近いピクセルを選択することで割り算を避けるという考え方である。当時の実装でも、これに近いことをやった。ただ、符号位置は数学的ではなく実験的に探ったものだ。画像処理では、クリップ矩形のエッジから始めて、勾配の関数として線分の輝度を変化させるといったことをやる。境界演算を回路で実装し、輝度調整をプログラムがやることによってスムージングを実装する。こういうプリミティブな技術は経験的に蓄積されるようで、付き合う開発部隊によって様々な文化が見て取れるから面白い。
また、ラインのクリッピングでは、使用頻度の高い Cohen-Sutherland アルゴリズムと、パラメトリック線分クリッピングアルゴリズムが検討される。ここで鍵となるのは交点計算である。
Cohen-Sutherland アルゴリズムでは、予め交点計算が必要かどうかを判定し、端点座標からエッジに対する位置、すなわち上下、左右を判定するといったイメージ。まず、クリップ矩形のエッジの周辺を9面に拡張し、それぞれの領域に4ビットのコードを割り当てる。そして、第1ビットを (ymax - y)、第2ビットを (y - ymin)、第3ビットを (xmax - x)、第4ビットを (x - xmin) の計算を符号ビットとして位置判定をする。
パラメトリック線分クリッピングアルゴリズムでは、Beck/Liang-Barsky のアルゴリズムが紹介される。パラメトリックでは、線分がクリッピングエッジを無限に延長した線と交差する点を考慮するという。関数的に求めるイメージであろうか。そのパラメータは、次式の公式が元になっているという。
P(t) = P0 + (P1 - P0)t
P0, P1 は線分の端点。線分の延長関数 P(t) と、エッジ上の任意の点 PEi において、ベクトル P(t) - PEi と、エッジの外向法線ベクトル Ni との関係を考察する。
そして、内積、Ni・[P(t) - PEi] の値によって、点がどの領域にあるかを判定するという。
他には、文字のクリッピング、Sutherland-Hodgman 多角形クリッピングアルゴリズム、重み付けエリアサンプリング、Gupta-Sproull のスキャン変換アルゴリズムなどが紹介される。
3. 幾何変換と同次座標系
二次元でも、三次元でも、幾何変換では、平行移動、スケーリング、回転が基本になる。むかーし、座標系の行列表現で最初に戸惑ったのが、座標系の拡張であった。それは、演算効率を高めるためのトリックで、直交の概念が有効だということ。二次元変換系は、3 x 3 のマトリックス、三次元変換系は、4 x 4 のマトリックスで表現すると、極端に演算量が減る。尚、以下の行列式は数値演算言語 octave 風に表記している。
二次元変換系では...
平行移動: [x'; y'; 1] = [1 0 dx; 0 1 dy; 0 0 1][x; y; 1]
スケーリング: [x'; y'; 1] = [Sx 0 0; 0 Sy 0; 0 0 1][x; y; 1]
回転: [x'; y'; 1] = [cosθ -sinθ 0; sinθ cosθ 0; 0 0 1][x; y; 1]
三次元変換系では...
平行移動: [x'; y'; z'; 1] = [1 0 0 dx; 0 1 0 dy; 0 0 1 dz; 0 0 0 1][x; y; z; 1]
スケーリング: [x'; y'; z'; 1] = [Sx 0 0 0; 0 Sy 0 0; 0 0 Sz 0; 0 0 0 0 1][x; y; z; 1]
回転: [x'; y'; z'; 1] = [cosθ -sinθ 0 0; sinθ cosθ 0 0; 0 0 1 0; 0 0 0 1][x; y; z; 1]
4. 平面幾何投影
三次元オブジェクトと二次元表示との間の不整合性を埋めるのに、投影を用いるのは画家と同じ。平面幾何投影は、透視投影と平行投影に区分できるという。その違いは、投影面と投影中心との位置関係にある。投影中心が1点に収束する場合は透視投影、投影面と平行な場合は平行投影となる。透視投影は、平行線が無限遠点の消失点に収束し、写真や人間の可視系の表示効果と類似しておりリアリティを感じさせる。平行投影は、各軸方向に一定の距離を保つ効果があり、リアリティに欠けるものの正確な寸法表示ができる。
さらに平行投影は、投影線と投影面の角度の関係によって、正投影と斜投影に分類されるという。正投影は、投影線と投影面の角度が垂直であり、最も一般的な方法は、正面、上面、側面の投影であろう。組立図など工業製図によく用いられるが、この図面から実物をイメージするのはかなりの熟練を要する。
また、軸測正投影という手法があるそうな。主軸に垂直でない投影面を利用して、オブジェクトのいくつかの面を同時に表示するという。透視投影に似ているが、奥行きの短縮度合いが投影中心からの距離に関係なく、均一である点が異なる。
等角投影は、一般によく用いられる軸測投影の一つだそうな。投影面垂線は各主軸に対して等角を形成する。等角投影は、三次元の3つの軸が等しく短縮されるという特性を持ち、同一尺度での軸に沿った寸法測定が可能になる。
斜投影は、軸測投影を用いて、正面、上面、側面の正投影を組み上げたもの。その代表に、カバリエ投影とキャビネット投影が紹介される。カバリエ投影は、投影方向が投影面との傾きに対して、奥行きが実寸で表される。一方、キャビネット投影は、奥行きが短縮されるために、よりリアルに見える。なるほど、リアルとは眼を欺くという意味か。
5. 曲線と曲面の表現法
滑らかな曲線や曲面を生成するのは、実に難しい。現存するものでは数学的に記述できないものが多くある。よって、数学的に記述できる平面、球、他の形状を組み合わせて近似することになる。本書では、一般的なサーフェスモデリングが紹介されるが、この領域は広範すぎる。ここでは、ポリゴンメッシュとパラメトリック三次曲線について触れておこう。
ポリゴンメッシュは、エッジ、頂点、多角形(ポリゴン)が接続された集合で、2つの多角形が各エッジを共有する。各ポリゴンは頂点座標のリストで表現される。
P( (x1, y1, z1), (x2, y2, z2), ...,(xn, yn, zn) )
1つの頂点と、それに付帯するエッジ関連のすべてをドラッグするには、頂点を共有するポリゴンをすべて検索する必要がある。最も効率良くやるには、N個の三次元座標をソートすることだという。それでも、N log2N 回の処理を要する。四捨五入のために、同じ頂点が若干異なる座標値を持つという危険性もある。まずは、エッジリストへのポインタでポリゴンを定義することを考えてみよう。メッシュのモデリング要素には、頂点、エッジ(線)、面、ポリゴン(多角形)、サーフェス(表面)がある。
例えば、4つの頂点 (V1, V2, V3, V4) を持つ図形において、エッジリストを使用して定義したポリゴンメッシュは、次のようなデータ構造になる。
V = (V1, V2, V3, V4) = ((x1, y1, z1), ..., (x4, y4, z4))
E1 = (V1, V2, P1, null)
E2 = (V2, V3, P2, null)
E3 = (V3, V4, P2, null)
E4 = (V4, V2, P1, P2)
E5 = (V4, V1, P1, null)
P1 = (E1, E4, E5)
P2 = (E2, E3, E4)
ただし、V; 頂点(vertice) E; エッジ(edge)、P: ポリゴン(polygon)
次に、頂点リストへのインデックスを用いて定義すると、データ構造はコンパクトになる。
V = (V1, V2, V3, V4) = ((x1, y1, z1), ..., (x4, y4, z4))
P1 = (1, 2, 4)
P2 = (4, 2, 3)
いずれにせよ、データ構造の整合性を保ちながら、複雑な画像処理を繰り返すのは大変であろう。3次多項式で定義できれば、ポリゴンメッシュのような情報量は必要ない。そこで、パラメトリック三次曲線の登場だ。曲線のパラメトリック表現を、 Q(t) = (x(t), y(t), z(t)) とし、3次多項式で定義すると。
x(t) = axt3 + bxt2 + cxt + dx
y(t) = ayt3 + byt2 + cyt + dy
z(t) = azt3 + bzt2 + czt + dz
ただし、0 ≦ t ≦ 1
T = [t3 t2 t 1] を用いて、係数行列を
C = [ax ay az; bx by bz; cx cy cz; dx dy dz]
と定義すると。
Q(t) = [x(t), y(t), z(t)] = T・C
Q(t)の導関数は、曲線のパラメトリック接線ベクトルである。
(d/dt)Q(t) = (d/dt)T・C = [3t2 2t 1 0]・C
= [3axt2 + 2bxt + cx 3ayt2 + 2byt + cy 3azt2 + 2bzt + cz]
三次関数を扱う具体的な方法では、エルミート(Hermite)曲線、ベジエ(Bezier)曲線、スプライン(spline)曲線などがある。エルミート曲線は、始点と終点、及び、始点の接線ベクトルと終点の接線ベクトルによって決定される。ベジエ曲線は、曲線上には存在しない2つの中間点を指定することによって、端点接線ベクトルを間接的に指定する。スプライン曲線は、複数の制御点をすべて通るが、B-スプライン曲線は、両端以外の複数の制御点は通らない。尚、ベジエ曲線やB-スプライン曲線は、描画ソフトでもお馴染みのやつだ。
ところで、障害が大きいほど燃える!というのは本当であろうか?愛の場合はそうかもしれん。だが、速読術は速愛術のようにはいかんよ...
本書は、ソフトウェアとハードウェアの両面から議論される。その網羅する範囲は驚異的で、もう満腹!吐きそう!ソフトウェア面では、対話型インターフェースから、幾何変換、3次元投影法、可視面の決定における数学的方法論に、曲線や曲面の補正、色彩処理やシェーディングといったフィルタリング理論など、その技法とアルゴリズムが検討される。ハードウェア面では、画像操作と記憶メカニズムに、パイプラインや並列処理といった基本的なアーキテクチャが検討され、おまけに、SIMD や MIMD にまで議論が及び、高性能なGPUの必要性を感じさせる。メモリ資源が十分確保できれば、レイヤー毎のキャンバスをメモリ上に展開しておくことで、表示性能を向上させることができるだろう。そして、replace, and, or, xor といった単純な論理演算がサポートされるだけでも、かなりのことができそうだ。この分野は、メモリ容量、演算性能、高精細な表示デバイスといった十分なリソースが前提されるというわけか。コンピュータグラフィックスとは、ハードウェア資源の制約からソフトウェアを開放してきた歴史とすることができそうだ。それは、心理的リアリズムの追求の歴史とでもしておこうか。
SIMD: Single Instruction Multiple Data
MIMD: Multiple Instruction stream, Multiple Data stream
デスクトップの概念は、いまや仮想空間へ誘なうメタファのような存在となっている。その思想でよく耳にするのが、WYSIWYG(what you see is what you get)で、見たまんまの操作性に則るということ。これが対話型GUIの基本であろう。アイコンのデザインひとつとっても、設計センスがうかがえる。
しかし、良いデザインは、高精細な表示デバイスとセットで、より説得力を持つ。高精細ディスプレイだからこそ、斜線や曲線の処理を疎かにはできない。ドットが長方形に配列されれば、最も原始的な処理ではアンチエイリアシングが重要となる。画像の合成や結合などで用いるクリッピング処理では、キャラクタが背景に溶け込むような境界処理も必要となる。
表示デバイスの性能は、ドットの繊細さとアドレス指定能力で決まるという。ドット間隔がドットサイズよりも小さく指定できれば、それだけ柔軟性を与える。もちろん色階調も欠かせない要素だ。ちなみに、知人のデザイナーは、画面と印刷の色の微妙な違いが気になってしょうがないとボヤく。ディスプレイが違うだけでも微妙に色が違う。Webデザイナーともなると、そんな事まで配慮するのだろう。例えば、自動車メーカのサイトで、車体に微妙な光源処理を施しているのは、実物色との違いを誤魔化しているのかは知らん。
また、マッピング技法には、MIP という概念があるという。"multum in parvo"の略で、多くのものが小さな場所にあるという意味だそうな。その着想は、ウェーブレット変換に通ずるものがある。領域別にフィルタリングのレベルや演算方法を変えながら、線形補間によってスムージングするという考え方はあるだろう。そして、画像の領域を幾何学的に認識するような仕掛けも欲しい。今のところ人間がやる方が現実的かも。
心理物理学ともなれば、色相、彩度、明度が精神に与える影響を検討する。光の波長に対する視感効率関数というものがあると聞く。色彩のエネルギースペクトルと刺激量には、なんらかの関係がありそうな気がする。エネルギー分布関数を考慮すれば、ある心理状態を呼び覚ますこともできるかもしれない。ちなみに、色の知覚に関するものに、三刺激理論というものがあるそうな。網膜が、赤、緑、青の光にピーク感度を持つ3種類のセンサーを持っているという仮説だそうだが、これが三原色と関係するかは知らん。デザイナーは、数学的に編み出した色彩関数のようなものを直感的に知っているのかもしれない。プロフェショナルとは、素人の想像も及ばない領域で生きているものであろう。
ところで、むかーしから疑問に思っている事がある。なぜ走査線は横方向なのだろうか?ラスタースキャンが主流なのはブラウン管からの名残りと聞いたことがあるが、なんとなく疑わしい。タイプライタやラインプリンタも、文字単位の走査だけど、やはり横方向ではないか。対して、ベクタースキャンは、とんと聞かない。オシロスコープなどの測定器で見かけるぐらいか。心臓の波形モニタもそうか。尚、生体情報モニタと呼ぶらしい。
TFT などはスイッチのお化けなんだから、VRAMのランダムスキャンでもよさそうなもの。いや、通信効率が悪いか!ドライバの対応も辛いか!
長方形の画面を全スキャンしようとすると、走査線は横か縦になるのだろう。人間にとって四角形が自然なのか?インテリアの形状はだいたい四角形だが、貝殻を見ていると、螺旋の方が宇宙則に適っていそうな気もする。ただ言えることは、どんなスキャン方式を用いようが、今のところ、三次元空間を二次元平面に投影することに変わりはないということ。そう、いかに人間の眼を誤魔化すか、これがコンピュータグラフィックスの真髄であろうか。
今後、ディスプレイの大画面化と高精細化はますます進むであろう。解像度では、4KウルトラHDに突入しつつある。過去の画像データも、品質の陳腐化が目立つであろう。ピクセルデータでは、データ処理がかさむことになる。となれば、ベクタデータが見直されることもありうるかもしれない。GUIは、まさにゲシュタルト心理学の世界にある。いや、人の眼が脳を誤魔化すと言った方がいいか。
1. SRGP と SPHIGS
本書でちと気になるのが、SRGP と SPHIGS という二つの API を基準に書かれていることである。OpenGL が対象ならば言うことなしだが、関数群を眺めるだけでもだいたいの実装イメージが見えてくる。
SRGP は、QuickDraw と Xlib の2D整数パッケージの特徴を組み合わせたものだそうな。その制約では、整数座標系なので浮動小数点を要求するような精度や範囲には向かない、アクション履歴を持たないので他のプログラムから損傷を受けても再表示できない、あるいは三次元空間をサポートしていない、といったことがあるという。
そこで、三次元をサポートする高度な API として、SPHIGS が紹介される。SPHIGS は、PHIGS をベースに、3D浮動小数点パッケージの基本的な特徴に階層的な表示リストを加えたものだそうな。注目したい特徴は、データベース構造を採用していることである。オブジェクトデータ構造が、データベースによる階層ツリー構造というのは、古い時代にしてはやや驚きか。また、2Dの画面空間ではなく、抽象化された3Dワールド座標系で動作するという。つまり、ピクセルの直接操作はサポートされないとのこと。SRGP は、画面上のピクセル操作のために持ち出しているわけか。それぞれのグラフィックスパッケージには特徴と用途が異なり、万能なものは存在しないということであろう。
それにしても、この手のAPIでいつも悩まされるのが、標準座標系はどうなってんの?ってことだ。OpenGL と DirectX でも右手座標系と左手座標系で違う。この業界の住人は不便を感じないのだろうか?それとも、座標系に柔軟性を持たせた方が想像空間が拡がるということであろうか?
SRGP: Simple Raster Graphics Package
SPHIGS: Simple PHIGS(Programmer's Hierarchical Interactive Graphics System
2. プリミティブなアルゴリズム
最も原始的な技法に、二次元のアンチエイリアシングを持ち出す。それは、斜線や曲線に発生する階段状のギザギザ(ジャギー)を目立たなくする手法である。そして、クリッピングアルゴリズムとスキャン変換アルゴリズムを検討している。
むかーし、この実装で悩んだことがある。小型システムでは、CPUの能力やメモリ容量が十分ではないので、演算支援回路を装備することになる。今では、ソフトとハード支援部の役割分担も随分と変わってはいるが、小型化の欲求は納まりそうにない。例えば、昔の自動車のバックモニタなどは、機能は単純で斜線と曲線に対応すればよかった。だが、これが結構悩ましい。増分アルゴリズムや補正アルゴリズムで、単純な近似ではうまくいかない。四捨五入計算にしても、ピクセル数が多くなると処理時間は馬鹿にはならない。
ここに紹介される古典的な中点線分アルゴリズムは感動モノ。というより正式名を知らなかった。その名を Bresenham(ブレゼンハム)のアルゴリズムという。中点アルゴリズム自体は単純で、線分より実際の点が上にあるか下にあるかを判定して近似する。ただそれを、整数演算のみでやってやがる。ラインをスキャン変換するのに、整数決定変数を計算して符号のみをチェックし、数理線に最も近いピクセルを選択することで割り算を避けるという考え方である。当時の実装でも、これに近いことをやった。ただ、符号位置は数学的ではなく実験的に探ったものだ。画像処理では、クリップ矩形のエッジから始めて、勾配の関数として線分の輝度を変化させるといったことをやる。境界演算を回路で実装し、輝度調整をプログラムがやることによってスムージングを実装する。こういうプリミティブな技術は経験的に蓄積されるようで、付き合う開発部隊によって様々な文化が見て取れるから面白い。
また、ラインのクリッピングでは、使用頻度の高い Cohen-Sutherland アルゴリズムと、パラメトリック線分クリッピングアルゴリズムが検討される。ここで鍵となるのは交点計算である。
Cohen-Sutherland アルゴリズムでは、予め交点計算が必要かどうかを判定し、端点座標からエッジに対する位置、すなわち上下、左右を判定するといったイメージ。まず、クリップ矩形のエッジの周辺を9面に拡張し、それぞれの領域に4ビットのコードを割り当てる。そして、第1ビットを (ymax - y)、第2ビットを (y - ymin)、第3ビットを (xmax - x)、第4ビットを (x - xmin) の計算を符号ビットとして位置判定をする。
パラメトリック線分クリッピングアルゴリズムでは、Beck/Liang-Barsky のアルゴリズムが紹介される。パラメトリックでは、線分がクリッピングエッジを無限に延長した線と交差する点を考慮するという。関数的に求めるイメージであろうか。そのパラメータは、次式の公式が元になっているという。
P(t) = P0 + (P1 - P0)t
P0, P1 は線分の端点。線分の延長関数 P(t) と、エッジ上の任意の点 PEi において、ベクトル P(t) - PEi と、エッジの外向法線ベクトル Ni との関係を考察する。
そして、内積、Ni・[P(t) - PEi] の値によって、点がどの領域にあるかを判定するという。
他には、文字のクリッピング、Sutherland-Hodgman 多角形クリッピングアルゴリズム、重み付けエリアサンプリング、Gupta-Sproull のスキャン変換アルゴリズムなどが紹介される。
3. 幾何変換と同次座標系
二次元でも、三次元でも、幾何変換では、平行移動、スケーリング、回転が基本になる。むかーし、座標系の行列表現で最初に戸惑ったのが、座標系の拡張であった。それは、演算効率を高めるためのトリックで、直交の概念が有効だということ。二次元変換系は、3 x 3 のマトリックス、三次元変換系は、4 x 4 のマトリックスで表現すると、極端に演算量が減る。尚、以下の行列式は数値演算言語 octave 風に表記している。
二次元変換系では...
平行移動: [x'; y'; 1] = [1 0 dx; 0 1 dy; 0 0 1][x; y; 1]
スケーリング: [x'; y'; 1] = [Sx 0 0; 0 Sy 0; 0 0 1][x; y; 1]
回転: [x'; y'; 1] = [cosθ -sinθ 0; sinθ cosθ 0; 0 0 1][x; y; 1]
三次元変換系では...
平行移動: [x'; y'; z'; 1] = [1 0 0 dx; 0 1 0 dy; 0 0 1 dz; 0 0 0 1][x; y; z; 1]
スケーリング: [x'; y'; z'; 1] = [Sx 0 0 0; 0 Sy 0 0; 0 0 Sz 0; 0 0 0 0 1][x; y; z; 1]
回転: [x'; y'; z'; 1] = [cosθ -sinθ 0 0; sinθ cosθ 0 0; 0 0 1 0; 0 0 0 1][x; y; z; 1]
4. 平面幾何投影
三次元オブジェクトと二次元表示との間の不整合性を埋めるのに、投影を用いるのは画家と同じ。平面幾何投影は、透視投影と平行投影に区分できるという。その違いは、投影面と投影中心との位置関係にある。投影中心が1点に収束する場合は透視投影、投影面と平行な場合は平行投影となる。透視投影は、平行線が無限遠点の消失点に収束し、写真や人間の可視系の表示効果と類似しておりリアリティを感じさせる。平行投影は、各軸方向に一定の距離を保つ効果があり、リアリティに欠けるものの正確な寸法表示ができる。
さらに平行投影は、投影線と投影面の角度の関係によって、正投影と斜投影に分類されるという。正投影は、投影線と投影面の角度が垂直であり、最も一般的な方法は、正面、上面、側面の投影であろう。組立図など工業製図によく用いられるが、この図面から実物をイメージするのはかなりの熟練を要する。
また、軸測正投影という手法があるそうな。主軸に垂直でない投影面を利用して、オブジェクトのいくつかの面を同時に表示するという。透視投影に似ているが、奥行きの短縮度合いが投影中心からの距離に関係なく、均一である点が異なる。
等角投影は、一般によく用いられる軸測投影の一つだそうな。投影面垂線は各主軸に対して等角を形成する。等角投影は、三次元の3つの軸が等しく短縮されるという特性を持ち、同一尺度での軸に沿った寸法測定が可能になる。
斜投影は、軸測投影を用いて、正面、上面、側面の正投影を組み上げたもの。その代表に、カバリエ投影とキャビネット投影が紹介される。カバリエ投影は、投影方向が投影面との傾きに対して、奥行きが実寸で表される。一方、キャビネット投影は、奥行きが短縮されるために、よりリアルに見える。なるほど、リアルとは眼を欺くという意味か。
5. 曲線と曲面の表現法
滑らかな曲線や曲面を生成するのは、実に難しい。現存するものでは数学的に記述できないものが多くある。よって、数学的に記述できる平面、球、他の形状を組み合わせて近似することになる。本書では、一般的なサーフェスモデリングが紹介されるが、この領域は広範すぎる。ここでは、ポリゴンメッシュとパラメトリック三次曲線について触れておこう。
ポリゴンメッシュは、エッジ、頂点、多角形(ポリゴン)が接続された集合で、2つの多角形が各エッジを共有する。各ポリゴンは頂点座標のリストで表現される。
P( (x1, y1, z1), (x2, y2, z2), ...,(xn, yn, zn) )
1つの頂点と、それに付帯するエッジ関連のすべてをドラッグするには、頂点を共有するポリゴンをすべて検索する必要がある。最も効率良くやるには、N個の三次元座標をソートすることだという。それでも、N log2N 回の処理を要する。四捨五入のために、同じ頂点が若干異なる座標値を持つという危険性もある。まずは、エッジリストへのポインタでポリゴンを定義することを考えてみよう。メッシュのモデリング要素には、頂点、エッジ(線)、面、ポリゴン(多角形)、サーフェス(表面)がある。
例えば、4つの頂点 (V1, V2, V3, V4) を持つ図形において、エッジリストを使用して定義したポリゴンメッシュは、次のようなデータ構造になる。
V = (V1, V2, V3, V4) = ((x1, y1, z1), ..., (x4, y4, z4))
E1 = (V1, V2, P1, null)
E2 = (V2, V3, P2, null)
E3 = (V3, V4, P2, null)
E4 = (V4, V2, P1, P2)
E5 = (V4, V1, P1, null)
P1 = (E1, E4, E5)
P2 = (E2, E3, E4)
ただし、V; 頂点(vertice) E; エッジ(edge)、P: ポリゴン(polygon)
次に、頂点リストへのインデックスを用いて定義すると、データ構造はコンパクトになる。
V = (V1, V2, V3, V4) = ((x1, y1, z1), ..., (x4, y4, z4))
P1 = (1, 2, 4)
P2 = (4, 2, 3)
いずれにせよ、データ構造の整合性を保ちながら、複雑な画像処理を繰り返すのは大変であろう。3次多項式で定義できれば、ポリゴンメッシュのような情報量は必要ない。そこで、パラメトリック三次曲線の登場だ。曲線のパラメトリック表現を、 Q(t) = (x(t), y(t), z(t)) とし、3次多項式で定義すると。
x(t) = axt3 + bxt2 + cxt + dx
y(t) = ayt3 + byt2 + cyt + dy
z(t) = azt3 + bzt2 + czt + dz
ただし、0 ≦ t ≦ 1
T = [t3 t2 t 1] を用いて、係数行列を
C = [ax ay az; bx by bz; cx cy cz; dx dy dz]
と定義すると。
Q(t) = [x(t), y(t), z(t)] = T・C
Q(t)の導関数は、曲線のパラメトリック接線ベクトルである。
(d/dt)Q(t) = (d/dt)T・C = [3t2 2t 1 0]・C
= [3axt2 + 2bxt + cx 3ayt2 + 2byt + cy 3azt2 + 2bzt + cz]
三次関数を扱う具体的な方法では、エルミート(Hermite)曲線、ベジエ(Bezier)曲線、スプライン(spline)曲線などがある。エルミート曲線は、始点と終点、及び、始点の接線ベクトルと終点の接線ベクトルによって決定される。ベジエ曲線は、曲線上には存在しない2つの中間点を指定することによって、端点接線ベクトルを間接的に指定する。スプライン曲線は、複数の制御点をすべて通るが、B-スプライン曲線は、両端以外の複数の制御点は通らない。尚、ベジエ曲線やB-スプライン曲線は、描画ソフトでもお馴染みのやつだ。
2013-04-01
史上最強の哲人「じゃりン子チエ」
四月一日早朝。ベランダでぼんやりしていると、ランドセルを振り回す一人の少女が通りかかった。下駄を高々とならしながら呟く、その後ろ姿には、なにやら哲人の風格を漂わせている。
「ウチ、誰やと思うてるねん!ただの不良少女やないで、テツの子供やで!」
「おとなの相手して、いつも傷つくのは少女の方やねん!」
赤貧チルドレンと呼ばれ、小学生にして経営者、そして、父親の保護者。そこには憧れの少女像がある。おいらも、テッちゃんになりたい!そして、朝っぱらからホルモンと純米酒を喰らうのであった...
1. 不幸の法則
「うちのオバアはん、嫌なこと頭こぶりついたら運動したらええ言うとった。運動してくたくたになったら、嫌な事もくたくたになるんやて!」
オバアはん「長いこと生きてますとな、ほんまに死にたいちゅうことが何回かありますのや。そういうとき、メシも食べんともの考えると、ロクなこと想像しまへんのや。
おまけに、さむーい部屋で一人でいてみなはれ。ひもじい、さむい、もお死にたい、これですわ。
いややったら食べなはれ、ひもじい、寒い、もお死にたい、不幸はこの順番でやってきますんやで。」
ヨシ江「一人で生きてゆけるなんて思ってると、辛抱せなあかんときに辛抱がきかんようになったりもするんよ。」
地獄組のボス「おまえはチルドレンやから今の苦労が後々ビクトリーしちゃうこともある。そやけど、ワシらみたいに年がオールドしちゃうとなあ、もお人生のレースにカンバックできんのや。...
人間がびびる時はなぁ。なんか守るものがある時なんじゃ!」
2. 大物の悩み
テツ「わし!今、大物として悩んでるんや!」
チエ「どこが大物やねん!裸になって踊ったくせに!しらふで踊ってたん鉄だけや!」
テツ「しらふでやれるから大物なんや!酒飲まんとやれんような奴は根性なしや!」
...
テツ「知らんかった!大物て退屈やなぁ!ひょっとしたら、わし友達おらんようになったんとちゃうか。...
金がのうて退屈やったら、死にたなるなぁ!」
チエ「そやけど、悩んでるみたい!」
花井「悩んでるんやない。悩み方、知らんから困ってるんや!」
花井「なあ、なんとなく形がぎこちないやろ!」
チエ「ヤクザな金は身につかんてオバアはんがゆうとったど」
テツ「金を差別すな、バチあたりが」
テツ「女房に逃げられるのを恐れて男が勤まるかい!」
チエ「テツ、あんまりアホに自信持ってると風邪ひくど」
3. 猫の人間観察
小鉄「あり余るシアワセは、時として苦痛を伴うものなのさ!...
人間と付き合うと苦労するよ!」
小鉄「ヤクザ(テツ+お好み焼き屋) + 警察 = ?」
ジュニア「かっこがはいると難しいな、テツがお好み焼きをくいすぎると豚になるど。」
小鉄「それや!二人とも豚箱行きや!」
「ウチ、誰やと思うてるねん!ただの不良少女やないで、テツの子供やで!」
「おとなの相手して、いつも傷つくのは少女の方やねん!」
赤貧チルドレンと呼ばれ、小学生にして経営者、そして、父親の保護者。そこには憧れの少女像がある。おいらも、テッちゃんになりたい!そして、朝っぱらからホルモンと純米酒を喰らうのであった...
1. 不幸の法則
「うちのオバアはん、嫌なこと頭こぶりついたら運動したらええ言うとった。運動してくたくたになったら、嫌な事もくたくたになるんやて!」
オバアはん「長いこと生きてますとな、ほんまに死にたいちゅうことが何回かありますのや。そういうとき、メシも食べんともの考えると、ロクなこと想像しまへんのや。
おまけに、さむーい部屋で一人でいてみなはれ。ひもじい、さむい、もお死にたい、これですわ。
いややったら食べなはれ、ひもじい、寒い、もお死にたい、不幸はこの順番でやってきますんやで。」
ヨシ江「一人で生きてゆけるなんて思ってると、辛抱せなあかんときに辛抱がきかんようになったりもするんよ。」
地獄組のボス「おまえはチルドレンやから今の苦労が後々ビクトリーしちゃうこともある。そやけど、ワシらみたいに年がオールドしちゃうとなあ、もお人生のレースにカンバックできんのや。...
人間がびびる時はなぁ。なんか守るものがある時なんじゃ!」
2. 大物の悩み
テツ「わし!今、大物として悩んでるんや!」
チエ「どこが大物やねん!裸になって踊ったくせに!しらふで踊ってたん鉄だけや!」
テツ「しらふでやれるから大物なんや!酒飲まんとやれんような奴は根性なしや!」
...
テツ「知らんかった!大物て退屈やなぁ!ひょっとしたら、わし友達おらんようになったんとちゃうか。...
金がのうて退屈やったら、死にたなるなぁ!」
チエ「そやけど、悩んでるみたい!」
花井「悩んでるんやない。悩み方、知らんから困ってるんや!」
花井「なあ、なんとなく形がぎこちないやろ!」
チエ「ヤクザな金は身につかんてオバアはんがゆうとったど」
テツ「金を差別すな、バチあたりが」
テツ「女房に逃げられるのを恐れて男が勤まるかい!」
チエ「テツ、あんまりアホに自信持ってると風邪ひくど」
3. 猫の人間観察
小鉄「あり余るシアワセは、時として苦痛を伴うものなのさ!...
人間と付き合うと苦労するよ!」
小鉄「ヤクザ(テツ+お好み焼き屋) + 警察 = ?」
ジュニア「かっこがはいると難しいな、テツがお好み焼きをくいすぎると豚になるど。」
小鉄「それや!二人とも豚箱行きや!」
2013-03-24
"カッコウはコンピュータに卵を産む(上/下)" Clifford Stoll 著
さらに一冊、本棚の奥から目線を送ってくるヤツがいる。たまには再読月間なるものがあってもええか。十年前であれば、一度読んだ本を読み返すなんて、専門書でもない限り考えもしなかった。ブログってヤツが、気まぐれの範疇を広げるのか?おまけに、推理小説ばりの展開が一気飲みを誘い、今日も朝日が眩しい。
カッコウといえば、種間托卵で知られる。托卵とは、他の鳥の巣に卵を産みつけ、仮親に育てさせる習性のこと。そこで、仮親が自分の卵だと思い込んで温めてくれるか?これが運命の分かれ目となる。ハッカーは、カッコウの生態とよく似たやり方でスーパーユーザになりすまし、コンピュータに卵を産みつける。システム管理者は、それに気づかず卵の実行を放置し続けるのだった。
かつてハッカーという言葉は、技術者魂を感じさせるものであったが、コンピュータ犯罪の代名詞へ変貌していく時代。この物語は、著者クリフォード・ストール自身が、コンピュータ侵入者を追跡した体験談を綴ったものである。彼はこの事件をきっかけにセキュリティの専門家となるが、あくまでも一介の天文学者であることを強調する。当初コンピュータの素人だったそうだが、システムを監視する辛抱強さは研究者の資質がなくては勤まらない。あらゆる現象や行動を日誌に記す執念。「文章のないところに現象はない」というのが、天文学者たる者の鉄則だという。いまやネットワークノードは天文学的な数字で点在する。しかも、宇宙と同じく、均等化よりもクラスタ化を望むかのように。そこに天文学者が関わるところに因縁めいたものがある。
研究能力は天才的な機転や着想にかかっていると思われがちだが、地道な努力と集中力、そして何よりも継続力が問われる。天才的な発想とは、普段から思考を試みている結果なのであろう。そして、ハッカーの側にも同じことが言えそうか。ここで紹介されるシステムへの侵入方法に、天才的な閃きがあるわけではない。むしろ独創性の欠乏を執念で補っていると言うべきか。その意味で、追跡する側と追跡される側の人間性は似ているのかもしれん。
時代は80年代と古く、コンピュータの脆弱性とユーザの認識は、今とは比べ物にならないだろう。だが、システムの安全性に関する問題は、本質的に変わっていない。それは、仮に完璧なセキュリティシステムが存在したとしても、操作するのは生身の人間だということである。パスワードが絶対に盗聴されないとしても、メモを貼ったり、デフォルトのまま放置したユーザも少なくない。完全な暗号鍵をこしらえたとしても、どこかに鍵を渡す伝言経路が存在する。すべてのユーザが危機管理に認識を高めたとしても、睡眠口座、永眠口座、幽霊口座のようなものが生じる。長期間使われない口座は俺のモノ!としてしまえば、ハッカーも銀行屋と同じ人種か。
だからといって怪しい者を片っ端から締め出しては、コンピュータネットワークの利便性を根本的に否定することになる。利便性とリスクのバランス、この問題は人間社会に永遠に付きまとうであろう。建て前では、軍、国防企業、ネットワーク運営機構など、どこのシステムも機密の厳重さを宣伝する。一旦、審査機関がシステムの安全性にお墨付きを与えれば、欠陥に関する情報は抑えこまれる。そして、ある程度の専門知識を持った一般ユーザの方が、その危険性をよく把握していたりするものだ。安全神話には、官僚化しやすいという特性がある。要するに、人間の思い込みってやつほど厄介なものはない。群衆パニックを恐れるあまりに肝心な情報が隠蔽されるという構図は、人間の政治的特質と言うべきであろう。ただの一人が問題を指摘しても、それを不都合に思う多数派によって揉み消させるのがオチよ。そこで今、オープンソースのような経済モデルがどこまで機能するかが問われている。いわば、民主主義の在り方のようなものが...
1. 侵入経路
物語は、ローレンス・バークレー研究所から始まる。BSD系unixを生んだカリフォルニア大学バークレー校のそば。この研究所は、かつてマンハッタン計画の一翼を担っていたという。だが、1950年代、主要研究はローレンス・リヴァモア研究所に移転し、機密の束縛から解放される。コンピュータの性能はやや劣るものの、ネットワークが自由に利用できる空気に研究者が群がる。
まだメインフレームが主力の時代とはいえ、人気機種はVAX。OSはDECのVMSとバークレー流unixが併用される。計算機室では、VMS信奉者とunix権威者が議論の応酬。著者クリフは、天文学研究のかたわらシステム管理者となる。90年代初頭でも、システム管理を専門技術とする意識が薄く、ちょいとマシンに詳しい者が仕事の合間にやったものだ。彼もその類いであろうか。
さて、ハッカーの侵入経路を眺めるだけでも、なにやら懐かしいものがある。その発端は75セント。コンピュータ使用料が75セントだけ合わない。原因究明は新米管理者にうってつけの仕事と思われた。使用料の請求がなければ、誰も侵入者に気づかないというお粗末さ。
侵入者は、バークレー研究所を足場に、Milnet経由で軍事施設や世界中の基地のコンピュータを物色してまわる。Milnetとは、米国防総省の軍事研究用ネットワークで、当初インターネットの前身だったARPANETから独立していたが、インターネットの一部となった。ちなみに、日本の研究機関に、JUNETというのがあった。ニュースの閲覧などで利用したものだが、これが日本におけるインターネットの前身になろうか。
侵入口は、telnetポート番号23と通信レート1200ボーを確認、すなわち、電話回線。バークレー研究所は、世界中のコンピュータを結ぶ通信サービス会社タイムネット(TYMNET)に加入していたという。この頃、既にパケット通信が主流のようだ。パケット経路を測定すると、到達時間が異常に遅い。侵入者は月の住人か?やがて逆探知によって、DATEX-Pネットワークからのアクセスが確認される。DATEX-Pは、タイムネットのドイツ版で、ブンデスポスト(ドイツ連邦郵便局)が運営管理しているという。なるほど、地球の裏側からの侵入であったか。とはいえ、アメリカからDATEX-Pにアクセスして、逆戻りしているかもしれない。逆探知の精度を高めるために偽の機密ファイルをちらつかせたりと罠を仕掛け、ドイツ当局は侵入者の名前と居所を押さえた。だが、FBIの正式な要請がなければ動けないという。しかも、外部に情報を漏らすことができない。クリフはただ指をくわえて、侵入者のコマンド監視を続けるのだった。
2. セキュリティホールと侵入の手口
侵入の手口は、atrun をまがいのファイルにすり替えて、システムが卵を返すというもの。unixシステムには、atrun を5分おきに実行する仕組みがある。その常駐デーモンは、atd。ちなみに、コマンド at はキューにスタックしたジョブを指定の時間に実行させるが、その仕掛けを利用したもの。当然、atrun は一般ユーザには手の届かないシステム領域に格納される。スーパーユーザの情報が漏れているのか?
GNU emacs には一つ、いかんともしがたい脆弱性があったという。誰でも、どこでもファイル転送ができるという開放的な思想なだけに、保護領域にもファイル転送ができてしまうとか。emacs開発者リチャード・ストールマンは、なによりも情報は万人の財産であると強く主張した人物。研究者たちが、GNUに群がったのは言うまでもない。しかも、多くのシステム管理者は、その穴を知らずに放置していたとか。ちなみに、guestユーザの権限や、ftp の anonymous がデフォルトで許可されていないか?などは最初にチェックするものだが、昔は穴を塞ぐよりも、とりあえず高価なマシンをネットワークにつないで、それから考えていたような気がする。
こういう穴だらけのシステムに対して、VMS信奉者はunixを揶揄する。だが、プログラム固有の穴は、ちょっと知識のある人なら誰でも知っていて、対処法の情報交換も盛んに行われていたという。むしろ問題にするならVMSの欠陥の方だという。バージョン4.5 にはトラック1台くぐれる穴があるとか。DECは穴を塞ぐソフトを配布しているが、外部にはひたすら隠していたという。ちょっと待て!VMSは、国家安全保障局が許可し、安全のお墨付きを与えていたではないか。一年間かけた検査では、DECがちょっと手を入れて、くぐり抜けたんだとか。既に5万台の欠陥コンピュータが出回っていたという。
いまやコンピュータシステムの脆弱性を、製造メーカ1社に委ねるのは危険である。この世に完璧な安全システムが存在しないとしたら、安心を買う方法には2つある。危険性を承知した上で自己防衛に励むか、危険性に目を背けて神に祈るか。尚、前者は情報公開という厄介なものが前提され、後者は知らぬが仏の原理が働く。そりゃ、幸せな方を選ぶかぁ...
ハッカーは、ps -eafg と叩いている。プロセス状態を表示するコマンドだ。unix系を使ったことがある人なら、ps aux を一度は叩いたことがあるだろう。fフラグがバークレー版にないことから、旧世代のunix信者だと分析している。
また、ハッカーはパスワードファイルをコピーしてまわっている。パスワードは暗号化されているが、これをどうするのか?どうやらパスワードを解読している模様。
さらに、ネットワークプログラムに目をつけている。telnet と rlogin のソースをコピーしようとする。いずれもユーザコマンドを送信するプログラムで、トロイの木馬を仕込むのにおあつらえ向き。telnet をちょいと手直しするだけで、パスワード盗用プログラムに変貌するのは言うまでもあるまい。今では、telnetを禁止して、sshにしているが、それで大丈夫なのかは分からん。
また、バークレー研究所で最も無防備なElxsiコンピュータが紹介される。建設設計グループが導入して一ヶ月ほど。ハッカーは、UUCPアカウントに入り込む。なんと、パスワードも聞かれない。おまけに、UUCPアカウントに最初から特権を与えている。思いがけずスーパーユーザになって慌てた模様。ハッカーは、Elxsiの性能を測定するプログラムを実行して、警戒心を煽らないように、そっと入り口を塞いで去っていった。
3. パスワード破り
パスワードファイルを取得したところで、文字列は暗号化されていて、解読はほぼ不可能である。当時の標準暗号は DES でアルゴリズムは公開されいてるが、暗号化方向は一方通行。ハッカーは、暗号解読のアルゴリズムを編み出したのか?その可能性を否定はしない。だが、人間が思いつく文字列は、だいたい何らかの意味をなす。しかも、覚えられるようなキーワードにするだろう。ハッカーは、片っ端から辞書にある単語を入力するという原始的な手法を用いているようだ。そして、辞書に載った単語から、暗号プログラムに通したリストを作るのは難しいことではない。生成された暗号文字列を照合させるだけで、パスワードを解読することができる。こういう指摘は古くからある。だから数字や特殊文字を混在させることが奨励される。
また、暗号解読のアルゴリズムを編み出したとしても、100%の精度を求める必要はない。25%でも、4回のトライで当たる計算。ちょっと根気のある人なら、すべてのユーザに対して10回づつぐらい試すだろう。ロールプレイングゲームなど、アイテムを探し出してパワーアップしていくようなストーリー性は、このような根気を要求する。解読できた時の快感を味わう心理原理は、ゲーム性の確率に支配されている。ユーザ名義がばれるだけで、しかも、ユーザの一人が貧弱なパスワードを設定しているだけで、かなり危険な状況にあるというわけだ。人為的なミスや悪行から完璧にシステムを守ることなどできるのだろうか?今の標準暗号は AES に代わったが、量子暗号が標準化されたとしても、鍵を受け渡す伝言経路は完全に保護できるのだろうか?
4. 官僚組織の重い腰
冷戦時代、東西ドイツは諜報活動の最前線。ハッカーはドイツ駐留米軍基地を物色している。ハッカーの侵入した企業は...
・ユニシス: 機密厳重が表看板のコンピュータメーカ。
・TRW: 軍用ならびに宇宙開発用コンピュータメーカ。
・SRI: 軍からコンピュータの機密保護システム設計を請け負っている。
・マイター: 軍用の機密厳重なコンピュータを設計し、NSAのコンピュータ安全監査を担当。
・BBN: Milnetを構築。
いずれも、政府から多額な補助金を受けとる羽振りのよい超大企業。機密保護システムの設計、製造、構築、監査に携わっていながら、自社コンピュータには出入り自由ときた。だが、銀行ネットワークには見向きもしない。機密情報をKGBにでも売るつもりか?
FBIは、たった75セントの被害?と門前払い。CIAとNSA(国家安全保障局)は興味を示すものの、管轄はFBIだと主張。空軍省OSI(特別捜査課)は、Milnetをいかにして防御すべきか苦悩するものの、具体的に動けない。国家コンピュータ安全センターは、コンピュータの保安基準を定めるのが仕事で、運用上の問題には関与しないと言い切る。んー...どこぞの原子力規制委員会みたいなことを。どこの国でも官僚の動きは鈍い。
しかーし、アメリカの高級官僚のレベルでは、ちと違う。CIAは陰ながらすぐに情報収集に動く。コンピュータ安全センターの科学主任ボブ・モリスは、クリフをNSAの副長官ハリー・ダニエルズと面会させる。モリスは、AT&Tベル研究所でUnixのパスワード保護機構を開発した人物だという。彼は、プログラムやシステム固有の問題があるにせよ、それを把握するのはシステム管理者の責任だと指摘している。
さらに、NSAの副長官という雲の上のような存在が、第二次大戦中、日本の暗号機をいじくっていた人物で、ネットワークの専門用語がすらすらと通じる。しかも、この手の事件で記録の大切さを十分理解している。現場をしっかりと把握し、危機意識を持ったお偉いさんが、官僚組織の中に一人いるだけで国家は救われるのだろう。おそらく、組織の優秀さというものは、こういう一人に支えられるものなのだろう。大概の組織では、こういう人物ほど異端児扱いされ、葬られるものだが...
5. ウィルス騒動
これはハッカー事件とは関係ないが、ウィルスが増殖する被害が発生し、全米のunix達人たちが立ち上がった様子を紹介してくれる。組織化されていない技術集団が、暗黙の組織となるのは壮観!
ウィルスはメールシステムを攻撃。sendmailの穴から侵入し、finger と telnet で、他のコンピュータに乗り移る。通常、sendmailに電子メールを送りつければ、滞りなく宛先に届いて用は足りる。だが、異常があった場合、発信者は誤りを検出して、デバックモードを要求することができる。これが裏口。デバックモードでは、コマンドを受け付ける。ここに、ウィルスが実行されるように仕組まれたという。中には、sendmailの穴を悪用されないように修正している管理者もいたそうな。
もう一つのルートが、finger デーモン。fingerはユーザ情報を表示するコマンド。これは、512文字の容量がある。ウィルスは、536文字を送りつけた。はみ出した24文字はどうなるか?コマンドとして実行されるだけのことよ。
ただ、いずれも繁殖するだけでデータを破壊しないのだから、ウィルスというよりワームか。ネットワーク負荷を増大させるのだから、有害であることに違いはない。犯人の名は、ロバート・T・モリス。ボブ・モリスの息子だ。あのポール・グレアムは息子モリスにメールで聞いている。輝ける大作戦の成り行きは?と。2000台を麻痺させたが、あまり出来のいいワームではなかったらしい。これで、父モリスのNSAでの立場が悪くなる。ワームにせよ、ウィルスにせよ、性質が分かれば治療できる。この場合、sendmail と finger デーモンの穴を塞いで、パスワードを変更し、システムに増殖したウィルスを除去すればいい。とはいえ、そう簡単でもないだろう。ウィルスは2日ほどで撃退したという。結果的に、NSAの息子のおかげでシステムの脆弱性の認識を高めることになった。
いまや、パスワードの盗用被害はますます勢いを増し、インターネットは国際謀略の手段と化した。ネットワークという巨大な怪物を相手取るのは、あくまでも生身の人間であることに変わりはない。利便性とリスクのトレードオフとは、自由と平等の関係と類似したものに映る。
カッコウといえば、種間托卵で知られる。托卵とは、他の鳥の巣に卵を産みつけ、仮親に育てさせる習性のこと。そこで、仮親が自分の卵だと思い込んで温めてくれるか?これが運命の分かれ目となる。ハッカーは、カッコウの生態とよく似たやり方でスーパーユーザになりすまし、コンピュータに卵を産みつける。システム管理者は、それに気づかず卵の実行を放置し続けるのだった。
かつてハッカーという言葉は、技術者魂を感じさせるものであったが、コンピュータ犯罪の代名詞へ変貌していく時代。この物語は、著者クリフォード・ストール自身が、コンピュータ侵入者を追跡した体験談を綴ったものである。彼はこの事件をきっかけにセキュリティの専門家となるが、あくまでも一介の天文学者であることを強調する。当初コンピュータの素人だったそうだが、システムを監視する辛抱強さは研究者の資質がなくては勤まらない。あらゆる現象や行動を日誌に記す執念。「文章のないところに現象はない」というのが、天文学者たる者の鉄則だという。いまやネットワークノードは天文学的な数字で点在する。しかも、宇宙と同じく、均等化よりもクラスタ化を望むかのように。そこに天文学者が関わるところに因縁めいたものがある。
研究能力は天才的な機転や着想にかかっていると思われがちだが、地道な努力と集中力、そして何よりも継続力が問われる。天才的な発想とは、普段から思考を試みている結果なのであろう。そして、ハッカーの側にも同じことが言えそうか。ここで紹介されるシステムへの侵入方法に、天才的な閃きがあるわけではない。むしろ独創性の欠乏を執念で補っていると言うべきか。その意味で、追跡する側と追跡される側の人間性は似ているのかもしれん。
時代は80年代と古く、コンピュータの脆弱性とユーザの認識は、今とは比べ物にならないだろう。だが、システムの安全性に関する問題は、本質的に変わっていない。それは、仮に完璧なセキュリティシステムが存在したとしても、操作するのは生身の人間だということである。パスワードが絶対に盗聴されないとしても、メモを貼ったり、デフォルトのまま放置したユーザも少なくない。完全な暗号鍵をこしらえたとしても、どこかに鍵を渡す伝言経路が存在する。すべてのユーザが危機管理に認識を高めたとしても、睡眠口座、永眠口座、幽霊口座のようなものが生じる。長期間使われない口座は俺のモノ!としてしまえば、ハッカーも銀行屋と同じ人種か。
だからといって怪しい者を片っ端から締め出しては、コンピュータネットワークの利便性を根本的に否定することになる。利便性とリスクのバランス、この問題は人間社会に永遠に付きまとうであろう。建て前では、軍、国防企業、ネットワーク運営機構など、どこのシステムも機密の厳重さを宣伝する。一旦、審査機関がシステムの安全性にお墨付きを与えれば、欠陥に関する情報は抑えこまれる。そして、ある程度の専門知識を持った一般ユーザの方が、その危険性をよく把握していたりするものだ。安全神話には、官僚化しやすいという特性がある。要するに、人間の思い込みってやつほど厄介なものはない。群衆パニックを恐れるあまりに肝心な情報が隠蔽されるという構図は、人間の政治的特質と言うべきであろう。ただの一人が問題を指摘しても、それを不都合に思う多数派によって揉み消させるのがオチよ。そこで今、オープンソースのような経済モデルがどこまで機能するかが問われている。いわば、民主主義の在り方のようなものが...
1. 侵入経路
物語は、ローレンス・バークレー研究所から始まる。BSD系unixを生んだカリフォルニア大学バークレー校のそば。この研究所は、かつてマンハッタン計画の一翼を担っていたという。だが、1950年代、主要研究はローレンス・リヴァモア研究所に移転し、機密の束縛から解放される。コンピュータの性能はやや劣るものの、ネットワークが自由に利用できる空気に研究者が群がる。
まだメインフレームが主力の時代とはいえ、人気機種はVAX。OSはDECのVMSとバークレー流unixが併用される。計算機室では、VMS信奉者とunix権威者が議論の応酬。著者クリフは、天文学研究のかたわらシステム管理者となる。90年代初頭でも、システム管理を専門技術とする意識が薄く、ちょいとマシンに詳しい者が仕事の合間にやったものだ。彼もその類いであろうか。
さて、ハッカーの侵入経路を眺めるだけでも、なにやら懐かしいものがある。その発端は75セント。コンピュータ使用料が75セントだけ合わない。原因究明は新米管理者にうってつけの仕事と思われた。使用料の請求がなければ、誰も侵入者に気づかないというお粗末さ。
侵入者は、バークレー研究所を足場に、Milnet経由で軍事施設や世界中の基地のコンピュータを物色してまわる。Milnetとは、米国防総省の軍事研究用ネットワークで、当初インターネットの前身だったARPANETから独立していたが、インターネットの一部となった。ちなみに、日本の研究機関に、JUNETというのがあった。ニュースの閲覧などで利用したものだが、これが日本におけるインターネットの前身になろうか。
侵入口は、telnetポート番号23と通信レート1200ボーを確認、すなわち、電話回線。バークレー研究所は、世界中のコンピュータを結ぶ通信サービス会社タイムネット(TYMNET)に加入していたという。この頃、既にパケット通信が主流のようだ。パケット経路を測定すると、到達時間が異常に遅い。侵入者は月の住人か?やがて逆探知によって、DATEX-Pネットワークからのアクセスが確認される。DATEX-Pは、タイムネットのドイツ版で、ブンデスポスト(ドイツ連邦郵便局)が運営管理しているという。なるほど、地球の裏側からの侵入であったか。とはいえ、アメリカからDATEX-Pにアクセスして、逆戻りしているかもしれない。逆探知の精度を高めるために偽の機密ファイルをちらつかせたりと罠を仕掛け、ドイツ当局は侵入者の名前と居所を押さえた。だが、FBIの正式な要請がなければ動けないという。しかも、外部に情報を漏らすことができない。クリフはただ指をくわえて、侵入者のコマンド監視を続けるのだった。
2. セキュリティホールと侵入の手口
侵入の手口は、atrun をまがいのファイルにすり替えて、システムが卵を返すというもの。unixシステムには、atrun を5分おきに実行する仕組みがある。その常駐デーモンは、atd。ちなみに、コマンド at はキューにスタックしたジョブを指定の時間に実行させるが、その仕掛けを利用したもの。当然、atrun は一般ユーザには手の届かないシステム領域に格納される。スーパーユーザの情報が漏れているのか?
GNU emacs には一つ、いかんともしがたい脆弱性があったという。誰でも、どこでもファイル転送ができるという開放的な思想なだけに、保護領域にもファイル転送ができてしまうとか。emacs開発者リチャード・ストールマンは、なによりも情報は万人の財産であると強く主張した人物。研究者たちが、GNUに群がったのは言うまでもない。しかも、多くのシステム管理者は、その穴を知らずに放置していたとか。ちなみに、guestユーザの権限や、ftp の anonymous がデフォルトで許可されていないか?などは最初にチェックするものだが、昔は穴を塞ぐよりも、とりあえず高価なマシンをネットワークにつないで、それから考えていたような気がする。
こういう穴だらけのシステムに対して、VMS信奉者はunixを揶揄する。だが、プログラム固有の穴は、ちょっと知識のある人なら誰でも知っていて、対処法の情報交換も盛んに行われていたという。むしろ問題にするならVMSの欠陥の方だという。バージョン4.5 にはトラック1台くぐれる穴があるとか。DECは穴を塞ぐソフトを配布しているが、外部にはひたすら隠していたという。ちょっと待て!VMSは、国家安全保障局が許可し、安全のお墨付きを与えていたではないか。一年間かけた検査では、DECがちょっと手を入れて、くぐり抜けたんだとか。既に5万台の欠陥コンピュータが出回っていたという。
いまやコンピュータシステムの脆弱性を、製造メーカ1社に委ねるのは危険である。この世に完璧な安全システムが存在しないとしたら、安心を買う方法には2つある。危険性を承知した上で自己防衛に励むか、危険性に目を背けて神に祈るか。尚、前者は情報公開という厄介なものが前提され、後者は知らぬが仏の原理が働く。そりゃ、幸せな方を選ぶかぁ...
ハッカーは、ps -eafg と叩いている。プロセス状態を表示するコマンドだ。unix系を使ったことがある人なら、ps aux を一度は叩いたことがあるだろう。fフラグがバークレー版にないことから、旧世代のunix信者だと分析している。
また、ハッカーはパスワードファイルをコピーしてまわっている。パスワードは暗号化されているが、これをどうするのか?どうやらパスワードを解読している模様。
さらに、ネットワークプログラムに目をつけている。telnet と rlogin のソースをコピーしようとする。いずれもユーザコマンドを送信するプログラムで、トロイの木馬を仕込むのにおあつらえ向き。telnet をちょいと手直しするだけで、パスワード盗用プログラムに変貌するのは言うまでもあるまい。今では、telnetを禁止して、sshにしているが、それで大丈夫なのかは分からん。
また、バークレー研究所で最も無防備なElxsiコンピュータが紹介される。建設設計グループが導入して一ヶ月ほど。ハッカーは、UUCPアカウントに入り込む。なんと、パスワードも聞かれない。おまけに、UUCPアカウントに最初から特権を与えている。思いがけずスーパーユーザになって慌てた模様。ハッカーは、Elxsiの性能を測定するプログラムを実行して、警戒心を煽らないように、そっと入り口を塞いで去っていった。
3. パスワード破り
パスワードファイルを取得したところで、文字列は暗号化されていて、解読はほぼ不可能である。当時の標準暗号は DES でアルゴリズムは公開されいてるが、暗号化方向は一方通行。ハッカーは、暗号解読のアルゴリズムを編み出したのか?その可能性を否定はしない。だが、人間が思いつく文字列は、だいたい何らかの意味をなす。しかも、覚えられるようなキーワードにするだろう。ハッカーは、片っ端から辞書にある単語を入力するという原始的な手法を用いているようだ。そして、辞書に載った単語から、暗号プログラムに通したリストを作るのは難しいことではない。生成された暗号文字列を照合させるだけで、パスワードを解読することができる。こういう指摘は古くからある。だから数字や特殊文字を混在させることが奨励される。
また、暗号解読のアルゴリズムを編み出したとしても、100%の精度を求める必要はない。25%でも、4回のトライで当たる計算。ちょっと根気のある人なら、すべてのユーザに対して10回づつぐらい試すだろう。ロールプレイングゲームなど、アイテムを探し出してパワーアップしていくようなストーリー性は、このような根気を要求する。解読できた時の快感を味わう心理原理は、ゲーム性の確率に支配されている。ユーザ名義がばれるだけで、しかも、ユーザの一人が貧弱なパスワードを設定しているだけで、かなり危険な状況にあるというわけだ。人為的なミスや悪行から完璧にシステムを守ることなどできるのだろうか?今の標準暗号は AES に代わったが、量子暗号が標準化されたとしても、鍵を受け渡す伝言経路は完全に保護できるのだろうか?
4. 官僚組織の重い腰
冷戦時代、東西ドイツは諜報活動の最前線。ハッカーはドイツ駐留米軍基地を物色している。ハッカーの侵入した企業は...
・ユニシス: 機密厳重が表看板のコンピュータメーカ。
・TRW: 軍用ならびに宇宙開発用コンピュータメーカ。
・SRI: 軍からコンピュータの機密保護システム設計を請け負っている。
・マイター: 軍用の機密厳重なコンピュータを設計し、NSAのコンピュータ安全監査を担当。
・BBN: Milnetを構築。
いずれも、政府から多額な補助金を受けとる羽振りのよい超大企業。機密保護システムの設計、製造、構築、監査に携わっていながら、自社コンピュータには出入り自由ときた。だが、銀行ネットワークには見向きもしない。機密情報をKGBにでも売るつもりか?
FBIは、たった75セントの被害?と門前払い。CIAとNSA(国家安全保障局)は興味を示すものの、管轄はFBIだと主張。空軍省OSI(特別捜査課)は、Milnetをいかにして防御すべきか苦悩するものの、具体的に動けない。国家コンピュータ安全センターは、コンピュータの保安基準を定めるのが仕事で、運用上の問題には関与しないと言い切る。んー...どこぞの原子力規制委員会みたいなことを。どこの国でも官僚の動きは鈍い。
しかーし、アメリカの高級官僚のレベルでは、ちと違う。CIAは陰ながらすぐに情報収集に動く。コンピュータ安全センターの科学主任ボブ・モリスは、クリフをNSAの副長官ハリー・ダニエルズと面会させる。モリスは、AT&Tベル研究所でUnixのパスワード保護機構を開発した人物だという。彼は、プログラムやシステム固有の問題があるにせよ、それを把握するのはシステム管理者の責任だと指摘している。
さらに、NSAの副長官という雲の上のような存在が、第二次大戦中、日本の暗号機をいじくっていた人物で、ネットワークの専門用語がすらすらと通じる。しかも、この手の事件で記録の大切さを十分理解している。現場をしっかりと把握し、危機意識を持ったお偉いさんが、官僚組織の中に一人いるだけで国家は救われるのだろう。おそらく、組織の優秀さというものは、こういう一人に支えられるものなのだろう。大概の組織では、こういう人物ほど異端児扱いされ、葬られるものだが...
5. ウィルス騒動
これはハッカー事件とは関係ないが、ウィルスが増殖する被害が発生し、全米のunix達人たちが立ち上がった様子を紹介してくれる。組織化されていない技術集団が、暗黙の組織となるのは壮観!
ウィルスはメールシステムを攻撃。sendmailの穴から侵入し、finger と telnet で、他のコンピュータに乗り移る。通常、sendmailに電子メールを送りつければ、滞りなく宛先に届いて用は足りる。だが、異常があった場合、発信者は誤りを検出して、デバックモードを要求することができる。これが裏口。デバックモードでは、コマンドを受け付ける。ここに、ウィルスが実行されるように仕組まれたという。中には、sendmailの穴を悪用されないように修正している管理者もいたそうな。
もう一つのルートが、finger デーモン。fingerはユーザ情報を表示するコマンド。これは、512文字の容量がある。ウィルスは、536文字を送りつけた。はみ出した24文字はどうなるか?コマンドとして実行されるだけのことよ。
ただ、いずれも繁殖するだけでデータを破壊しないのだから、ウィルスというよりワームか。ネットワーク負荷を増大させるのだから、有害であることに違いはない。犯人の名は、ロバート・T・モリス。ボブ・モリスの息子だ。あのポール・グレアムは息子モリスにメールで聞いている。輝ける大作戦の成り行きは?と。2000台を麻痺させたが、あまり出来のいいワームではなかったらしい。これで、父モリスのNSAでの立場が悪くなる。ワームにせよ、ウィルスにせよ、性質が分かれば治療できる。この場合、sendmail と finger デーモンの穴を塞いで、パスワードを変更し、システムに増殖したウィルスを除去すればいい。とはいえ、そう簡単でもないだろう。ウィルスは2日ほどで撃退したという。結果的に、NSAの息子のおかげでシステムの脆弱性の認識を高めることになった。
いまや、パスワードの盗用被害はますます勢いを増し、インターネットは国際謀略の手段と化した。ネットワークという巨大な怪物を相手取るのは、あくまでも生身の人間であることに変わりはない。利便性とリスクのトレードオフとは、自由と平等の関係と類似したものに映る。
2013-03-17
"超マシン誕生" Tracy Kidder 著
なにやら忘れかけているものを思い出させてくれる...ようなヤツを、本棚の奥からもう一冊。こいつも純米酒と一緒に読み流すつもりでいたが、またもや朝日が眩しい。
本書には、かなり古いイメージがある。だが、PALを採用する話も飛び出すから、大して世代が変わらないのか?ちょっとショック!ちなみに、GALやらPALの話題で盛り上がっていると、夜の社交場の専門用語ですか?と若年どもが近寄ってきた...
原題 "The Soul of a New Machine" は、1982年ピューリッツアー賞を獲得した書。もう古典の部類に入るのだろうか。この物語は、データゼネラル社製 32bitミニコンピュータ、Eclipse MV/8000 の誕生秘話である。それは、「自己実現、達成感、自己充足」のための冒険であったとさ。
かつて技術大国と言われながら、コンピュータサイエンスがあまり評価されない我が国で、20年前から指摘されてきた空洞化が現実のものとなった。売上至上主義が蔓延し、技術者たちを道具の一部として売り飛ばしてきた。一方、金融主義や商業主義の猛烈なアメリカでさえ、設計開発の醍醐味を評価する風潮はいまだ衰えない。
「ヨーロッパの大伽藍を建てた石工たちは、金のためだけに働いたのではない。彼らは神のために寺院をつくったのだ。それは、人生を意義あるものにする仕事だった。ほかでもない、そういう仕事をウエストとその配下の技術者たちは求めていたのだと私は思う。
事実、彼ら自身、ことあるごとに金のために働いているのではないと言った。イーグル誕生の余波の中で、グループのある者は、働きに見合うだけの金も名誉も得ていないと思っていた。また、そのことでいささかむかっ肚を立てているのだと語った者もいる。だがそういう技術者たちでさえ、プロジェクトそのものについて語る時には、かつてと同様の熱っぽさで語り、その顔を紅潮させたものだった。」
プロジェクトが家畜小屋のような場所から始まる様子には、懐かしいものを感じる。地下倉庫のような所から生まれたベンチャー企業も多いことだろう。膝が触れるような人口密度の高い空間から。自由奔放な酸素とは、そんな薄暗い劣悪な環境から光合成されるものかもしれん。
しかし、事業が軌道に乗り、立派なオフィスを構えた途端に、銀行屋が押し寄せる。今まで見向きもしなかったくせに。融資のために奇妙な監査が出入りするようになると、組織は融通性を失う。外部から資金を入れて、優秀な技術者が出ていくのでは、何をやっているのやら?そりゃ、収入が多いに越したことはない。だが、技術屋が何より欲するものは、自由奔放な空気なのだ。
ボスのトム・ウエストは、メンバーたちを退屈させず、大概の自由裁量を認める。だが現実に、メンバーに自由裁量を与えると、無秩序になると恐れるマネージャが多い。縛り付けて、それでうまくいっているのか?などと自問しないのだろうか?技術屋たちの頑なな気持ちは妥協を許さない。それは、サービス残業などとは次元が違う。気違いじみた仕事のやり方で、数日だって徹夜する。魔物にでも憑かれたような集中力は、ある種の麻薬症状とでも言っておこうか。この快感がお偉方には分からない。事なかれ主義で出世してきた連中に分かるはずもないか。管理職にイエスマンたちが陣取れば、技術者も自らの責任範囲を宣言して自衛に走る。
また、日本には、コミュニケーションを図るために忘年会や親睦会といった行事を重視する組織が多い。欧米でもチームでパーティをやったりするが、ちと違って義務化しようとするのだ。不参加を査定対象にすると脅す組織もあると聞く。群れることをチームワークだと勘違いしているのか?哲学的な共通意識があれば、無理やり仲間意識を煽る必要もあるまいに。とはいえ、どうしても人間性で合わない者同士がいる。組織には、上司と部下が互いに選び合えるぐらいの緊張感があっていい。仲良しグループを募ってもうまくいかないであろうから。
ところで、飲みに行く時は断りやすい空気を漂わせておきたい。断る理由に、今日は気分じゃないぐらいでOK、観たい番組があるからぐらいでOK。自然に集う空間だから居心地がいい。しかーし、そろそろ帰ろうかなぁ...と席を立つと、飲みに行くぞ!と勝手に翻訳する奴らがいる。たまには断れよ!と、鏡の向こうで赤い顔をしたプロジェクトリーダが愚痴を漏らしていた。
1. Eagle vs. Fountainhead
今は、ミニコンピュータなんて死語であろうか。IBMメインフレームが主流の時代、DECはミニコンピュータ市場を開拓する。DEC社はとっくにお亡くなりになったが、80年代末から90年代にかけて、この会社に憧れる電子工学科の学生で溢れていた。本物語には、あの懐かしいVAXも登場する。
データゼネラル社は、DECの退職組を中心に組織され、世界第2位のミニコンピュータメーカにまで成長する。当初16bit戦争であったが、VAXシリーズの登場が32bit戦争の引き金となる。
プロジェクトリーダのウエストは、せっかちを絵に描いたような人物だという。いちいち説明する暇もなければ、波長が合わないとすぐに失望するのだそうな。そんな彼がターゲットとしたのは、VAX 11/780。
1976年、Fountainhead Project(FHP)を開始。ところが、開発部隊が本拠地マサチューセッツからノースカロライナへ移転することになると、士気は低下する。従業員たちは家族ごと大移動しなければならないことに反発。そして、残ったエンジニアたちがエレガントなマシンを作る決意をする。彼らは新しいマシン名をEGOと名付けた。FHPのアルファベットを一文字ずつ遡ると、EGOとなる。FHPよりも先んずるという意味か。ちなみに、「2001年宇宙の旅」中で猛り狂うコンピュータHALの名は、IBMの文字を同じように遡ったところからきているそうな。狂乱を先んずるという意味かは知らん。
会社の本気度はチーム編成に見て取れる。FHPの50人体制に対して、EGOの5人。だが、得てして少数精鋭という自負が士気を高める。もし成功すれば英雄になれるし。
1978年、FHPが成果を上げられずにいる中、Eagle Projectを開始。Eagleという言葉は、略すとEGOに近い。白紙のようで白紙でないようなプロジェクト。そして、非公式的で迅速に事を成す。会社とは無関係にやっているような奴ら、と漏らす古株もいる。チーム固有の空気を醸し出すのは、縄張り意識の顕れであろう。好転したプロジェクトにありがちな現象で、優秀なチームという誇りが、そうさせる。
しかし、大成功を収めたとはいえ、プロジェクト解散前に醜態を見せる場面もある。特許申請のための会合で、誰が何に寄与したか非難の応酬。やはり人の子か。これらのプロジェクトには、最終的に約300人が携わったという。大所帯ともなると、何かと揉めるものらしい。
2. 設計開発の醍醐味
プロジェクトリーダのウエストはアーキテクチャの専門家を必要としていた。コンピュータ構造を知り尽くしたスチーブ・ワラックに白刃の矢を立てる。だが、ワラックは、会社が Eagle Project に本腰なのか疑っていた。そして、社長エドソン・デ・カストロに直接聞きに行く。社長室のドアは、意見のある技術者に常に開放されていたという。社長の答えはただ一つ、32bit Eclipseの実現!それは、Fountainhead でも、Eagle でもいいはず。ワラックにとって、想像しうる最高の仕事とは、完全無欠の夢のコンピュータを作ることだったという。最低の仕事とはガラクタを作らされること、これが技術者の本音であろう。プロジェクトリーダが最も気を使うところである。
アーキテクチャにとって、とりわけ命令セットの設計が要で、適切な命令セットの選択はコンピュータの性能を決定づける。ワラックは、VAXの命令セットをスーパー命令セットと呼んでいる。これは互換性を犠牲にしていた。だが、データゼネラルは、Eclipse の古い技術との完全互換を目指していた。
マイクロコードの利点は融通性にある。とはいえ、今の融通性とはかなり抽象度が違う。これをソフトウェアというかは微妙か。カットアンドトライ宗教は、ハードウェアとマイクロコードの双方を熟知した技術者へと進化させる。今時、マイクロコードを書くプログラマなんて、とんと見かけない。マイクロコードという用語も通じないか。スクラッチパッドという用語は、逆に携帯端末で耳にするようになった。巨大マシンが小型化しただけといえば、そうなんだけど。物理的な構造が大して変わらなければ、用語も受け継がれるところがある。だが、媒体や手段の違いでニュアンスも変化する。社内であってもグループ間で専門用語の使い方が違ったり、通信制御や画像処理といった分野の違いでも用語のニュアンスが違ったりする。自然言語と同様、専門用語も文化の影響を受けやすい。
さて、最先端のマシン設計では、その時代の最高周波数との戦いを余儀なくされる。それは、時間の征服に他ならず、周波数、スケジュール、リリース...すべてがトラブルの根元にある。時間は人々を殺気立たせ、ナノ秒単位で押し寄せてきやがる。周波数との戦いはノイズとの戦いに転化され、極めてアナログ的なところがある。いや、山勘的か。ハードウェアは、今ほどソフトウェアの言いなりになってはくれない。電圧レベルを全体的に下げると、ノイズレベルが相対的に下がり、スレッシュホールドとの比で、特定の電圧範囲だけ正常動作するとか...プローブを当てると正常動作するが、離すとノイズに埋没するとか...実験室ではうまくいっても、展示会場に持っていくと、たちまち誤動作するとか...その原因は、実験机は古びた年季の入った木製だが、展示会場はスチール製の机で反射でノイズが拡散されるとか...むかーしの思い出が蘇る。汚い配線、汚いコード、汚い設計は、すべて誤動作の要因となる。マシンの性能を損なう手段なんて事欠かん!
設計で最も恐ろしいのは、地雷を踏むこと、いや、知らぬうちに自ら地雷を埋めることか。したがって、熟練者の設計は、恐ろしく几帳面で配線や配置が美しく、匠の域を感じる。また、技術の根幹には、スリリングを楽しむことがある。時間に余裕ができれば、面白半分にトラップを作る衝動に駆られる。これを冒険心というかは知らん。
本書には、かなり古いイメージがある。だが、PALを採用する話も飛び出すから、大して世代が変わらないのか?ちょっとショック!ちなみに、GALやらPALの話題で盛り上がっていると、夜の社交場の専門用語ですか?と若年どもが近寄ってきた...
原題 "The Soul of a New Machine" は、1982年ピューリッツアー賞を獲得した書。もう古典の部類に入るのだろうか。この物語は、データゼネラル社製 32bitミニコンピュータ、Eclipse MV/8000 の誕生秘話である。それは、「自己実現、達成感、自己充足」のための冒険であったとさ。
かつて技術大国と言われながら、コンピュータサイエンスがあまり評価されない我が国で、20年前から指摘されてきた空洞化が現実のものとなった。売上至上主義が蔓延し、技術者たちを道具の一部として売り飛ばしてきた。一方、金融主義や商業主義の猛烈なアメリカでさえ、設計開発の醍醐味を評価する風潮はいまだ衰えない。
「ヨーロッパの大伽藍を建てた石工たちは、金のためだけに働いたのではない。彼らは神のために寺院をつくったのだ。それは、人生を意義あるものにする仕事だった。ほかでもない、そういう仕事をウエストとその配下の技術者たちは求めていたのだと私は思う。
事実、彼ら自身、ことあるごとに金のために働いているのではないと言った。イーグル誕生の余波の中で、グループのある者は、働きに見合うだけの金も名誉も得ていないと思っていた。また、そのことでいささかむかっ肚を立てているのだと語った者もいる。だがそういう技術者たちでさえ、プロジェクトそのものについて語る時には、かつてと同様の熱っぽさで語り、その顔を紅潮させたものだった。」
プロジェクトが家畜小屋のような場所から始まる様子には、懐かしいものを感じる。地下倉庫のような所から生まれたベンチャー企業も多いことだろう。膝が触れるような人口密度の高い空間から。自由奔放な酸素とは、そんな薄暗い劣悪な環境から光合成されるものかもしれん。
しかし、事業が軌道に乗り、立派なオフィスを構えた途端に、銀行屋が押し寄せる。今まで見向きもしなかったくせに。融資のために奇妙な監査が出入りするようになると、組織は融通性を失う。外部から資金を入れて、優秀な技術者が出ていくのでは、何をやっているのやら?そりゃ、収入が多いに越したことはない。だが、技術屋が何より欲するものは、自由奔放な空気なのだ。
ボスのトム・ウエストは、メンバーたちを退屈させず、大概の自由裁量を認める。だが現実に、メンバーに自由裁量を与えると、無秩序になると恐れるマネージャが多い。縛り付けて、それでうまくいっているのか?などと自問しないのだろうか?技術屋たちの頑なな気持ちは妥協を許さない。それは、サービス残業などとは次元が違う。気違いじみた仕事のやり方で、数日だって徹夜する。魔物にでも憑かれたような集中力は、ある種の麻薬症状とでも言っておこうか。この快感がお偉方には分からない。事なかれ主義で出世してきた連中に分かるはずもないか。管理職にイエスマンたちが陣取れば、技術者も自らの責任範囲を宣言して自衛に走る。
また、日本には、コミュニケーションを図るために忘年会や親睦会といった行事を重視する組織が多い。欧米でもチームでパーティをやったりするが、ちと違って義務化しようとするのだ。不参加を査定対象にすると脅す組織もあると聞く。群れることをチームワークだと勘違いしているのか?哲学的な共通意識があれば、無理やり仲間意識を煽る必要もあるまいに。とはいえ、どうしても人間性で合わない者同士がいる。組織には、上司と部下が互いに選び合えるぐらいの緊張感があっていい。仲良しグループを募ってもうまくいかないであろうから。
ところで、飲みに行く時は断りやすい空気を漂わせておきたい。断る理由に、今日は気分じゃないぐらいでOK、観たい番組があるからぐらいでOK。自然に集う空間だから居心地がいい。しかーし、そろそろ帰ろうかなぁ...と席を立つと、飲みに行くぞ!と勝手に翻訳する奴らがいる。たまには断れよ!と、鏡の向こうで赤い顔をしたプロジェクトリーダが愚痴を漏らしていた。
1. Eagle vs. Fountainhead
今は、ミニコンピュータなんて死語であろうか。IBMメインフレームが主流の時代、DECはミニコンピュータ市場を開拓する。DEC社はとっくにお亡くなりになったが、80年代末から90年代にかけて、この会社に憧れる電子工学科の学生で溢れていた。本物語には、あの懐かしいVAXも登場する。
データゼネラル社は、DECの退職組を中心に組織され、世界第2位のミニコンピュータメーカにまで成長する。当初16bit戦争であったが、VAXシリーズの登場が32bit戦争の引き金となる。
プロジェクトリーダのウエストは、せっかちを絵に描いたような人物だという。いちいち説明する暇もなければ、波長が合わないとすぐに失望するのだそうな。そんな彼がターゲットとしたのは、VAX 11/780。
1976年、Fountainhead Project(FHP)を開始。ところが、開発部隊が本拠地マサチューセッツからノースカロライナへ移転することになると、士気は低下する。従業員たちは家族ごと大移動しなければならないことに反発。そして、残ったエンジニアたちがエレガントなマシンを作る決意をする。彼らは新しいマシン名をEGOと名付けた。FHPのアルファベットを一文字ずつ遡ると、EGOとなる。FHPよりも先んずるという意味か。ちなみに、「2001年宇宙の旅」中で猛り狂うコンピュータHALの名は、IBMの文字を同じように遡ったところからきているそうな。狂乱を先んずるという意味かは知らん。
会社の本気度はチーム編成に見て取れる。FHPの50人体制に対して、EGOの5人。だが、得てして少数精鋭という自負が士気を高める。もし成功すれば英雄になれるし。
1978年、FHPが成果を上げられずにいる中、Eagle Projectを開始。Eagleという言葉は、略すとEGOに近い。白紙のようで白紙でないようなプロジェクト。そして、非公式的で迅速に事を成す。会社とは無関係にやっているような奴ら、と漏らす古株もいる。チーム固有の空気を醸し出すのは、縄張り意識の顕れであろう。好転したプロジェクトにありがちな現象で、優秀なチームという誇りが、そうさせる。
しかし、大成功を収めたとはいえ、プロジェクト解散前に醜態を見せる場面もある。特許申請のための会合で、誰が何に寄与したか非難の応酬。やはり人の子か。これらのプロジェクトには、最終的に約300人が携わったという。大所帯ともなると、何かと揉めるものらしい。
2. 設計開発の醍醐味
プロジェクトリーダのウエストはアーキテクチャの専門家を必要としていた。コンピュータ構造を知り尽くしたスチーブ・ワラックに白刃の矢を立てる。だが、ワラックは、会社が Eagle Project に本腰なのか疑っていた。そして、社長エドソン・デ・カストロに直接聞きに行く。社長室のドアは、意見のある技術者に常に開放されていたという。社長の答えはただ一つ、32bit Eclipseの実現!それは、Fountainhead でも、Eagle でもいいはず。ワラックにとって、想像しうる最高の仕事とは、完全無欠の夢のコンピュータを作ることだったという。最低の仕事とはガラクタを作らされること、これが技術者の本音であろう。プロジェクトリーダが最も気を使うところである。
アーキテクチャにとって、とりわけ命令セットの設計が要で、適切な命令セットの選択はコンピュータの性能を決定づける。ワラックは、VAXの命令セットをスーパー命令セットと呼んでいる。これは互換性を犠牲にしていた。だが、データゼネラルは、Eclipse の古い技術との完全互換を目指していた。
マイクロコードの利点は融通性にある。とはいえ、今の融通性とはかなり抽象度が違う。これをソフトウェアというかは微妙か。カットアンドトライ宗教は、ハードウェアとマイクロコードの双方を熟知した技術者へと進化させる。今時、マイクロコードを書くプログラマなんて、とんと見かけない。マイクロコードという用語も通じないか。スクラッチパッドという用語は、逆に携帯端末で耳にするようになった。巨大マシンが小型化しただけといえば、そうなんだけど。物理的な構造が大して変わらなければ、用語も受け継がれるところがある。だが、媒体や手段の違いでニュアンスも変化する。社内であってもグループ間で専門用語の使い方が違ったり、通信制御や画像処理といった分野の違いでも用語のニュアンスが違ったりする。自然言語と同様、専門用語も文化の影響を受けやすい。
さて、最先端のマシン設計では、その時代の最高周波数との戦いを余儀なくされる。それは、時間の征服に他ならず、周波数、スケジュール、リリース...すべてがトラブルの根元にある。時間は人々を殺気立たせ、ナノ秒単位で押し寄せてきやがる。周波数との戦いはノイズとの戦いに転化され、極めてアナログ的なところがある。いや、山勘的か。ハードウェアは、今ほどソフトウェアの言いなりになってはくれない。電圧レベルを全体的に下げると、ノイズレベルが相対的に下がり、スレッシュホールドとの比で、特定の電圧範囲だけ正常動作するとか...プローブを当てると正常動作するが、離すとノイズに埋没するとか...実験室ではうまくいっても、展示会場に持っていくと、たちまち誤動作するとか...その原因は、実験机は古びた年季の入った木製だが、展示会場はスチール製の机で反射でノイズが拡散されるとか...むかーしの思い出が蘇る。汚い配線、汚いコード、汚い設計は、すべて誤動作の要因となる。マシンの性能を損なう手段なんて事欠かん!
設計で最も恐ろしいのは、地雷を踏むこと、いや、知らぬうちに自ら地雷を埋めることか。したがって、熟練者の設計は、恐ろしく几帳面で配線や配置が美しく、匠の域を感じる。また、技術の根幹には、スリリングを楽しむことがある。時間に余裕ができれば、面白半分にトラップを作る衝動に駆られる。これを冒険心というかは知らん。
2013-03-10
"ハッカーズ" Steven Levy 著
言語設計者たちのインタビュー(前記事)を聞いていると、なんとなく本棚の古典に目が留まる。もう20年かぁ...600ページもの分厚さ、風呂上がりのビールでちょっくら読み流すつもりが、いつの間にか朝日が眩しい。こういう本は、何か忘れかけているものを思い出させてくれる...ような気がする。
「汝、それに触れるべからず!と決めつける文化を否定すること、自分の創造力でそいつを否定していくことが必要なんだ!」
今日、ハッカーという言葉に悪い印象を与えることが多い。自称ハッカーってのがのさぼり、ネット社会ではいつの間にか一般市民が犯罪者に仕立てられる時代、いずれも本来の意味から酷く逸脱していくように映る。ハッカー倫理とは、けして他人に迷惑をかけるものでもなれば、自己顕示欲を誇示するものでもなかろう。ましてや、権威主義や商業主義といった脂ぎった発想から生じるものでもなければ、特許紛争に躍起になるものでもなかろう。マシンを知り尽くし、能力を限界まで引き出そうとする人で、子供の純真な好奇心を哲学的に高める実験。そう、知的冒険という意味であった。
本書は、かつて電子工学の創造性を純粋に謳歌した人たちが居たことを物語る。ハッカーとは、技術への狂気を生き甲斐へと昇華させた連中!とでも言っておこうか。コンピュータは命令する者の愚かさを忠実に反映しやがる。そこに快感があるのか。ある種の自虐的楽観主義か。彼らはマシンをハックしながら、日常生活をハックし、その究極に人生をハックしようとする。コンピュータ設計とは、ある種の人生ゲームを作っているということかもしれん。
本書は、ハッカーの起源を50年代末から60年代のMIT(マサチューセッツ工科大学)のAIラボに遡る。そこには、テック鉄道模型クラブ(TMRC)という冒険家の集まりがあったとさ。彼らは、スリリングな喜びを感じる作品や計画を「ハック」と呼ぶ。ハッカー主義を奨励した二人の教授も見逃せない。マービン・ミンスキーと Lisp のジョン・マッカーシー。それは、メガマシン IBM704 を取り巻く官僚主義との戦いから始まった。
こういう物語は、昔のTSS(タイムシェアリングシステム)を思い出させる。最悪なのはユーザ使用量に対する課金システム。同じ会社の汎用機でありながら、各部署に使用料を請求しやがる。まさに縦割り官僚組織。ちょっとしたシミュレーションを試すにも、予算にCPU時間、メモリ使用量、ディスクスペースを申請しなければならなかった。コンピュータが計算していなくても、どうせアイドリング状態にあるのに。1人にパソコン1台なんて夢のような時代であった。
ここで紹介される伝説的なソフトウェアハッカーは、リチャード・グリーンブラットとビル・ゴスパー。この頃のハッカーたちは、BASICを能力の発揮できないファシスト言語と見なしている。とはいえ、コンピュータを凡人に近づけてくれたのも事実。やがてゲームなどの多彩な機能が要求されると、抽象化言語の重要性を認めていくことになる。
アナログ錬金術師スチュアート・ネルソンは、PDP-1 を接続して電話システムをハックしたという。70年代になると、Intel 8080チップが登場。Altair 8800(1974年、MITS社)は、これを搭載したコンピュータキット。メモリはわずか 256byte で入出力装置がなく、フロントスィッチでパチパチさせながら直接メモリにデータを入力する仕組み。見えず、聞こえず、口のきけない三重苦の状態にあったという。当初から本体よりも拡張基板に注目され、ハードウェアハッカーを覚醒させる。合言葉は、自家製コンピュータを楽しもうぜ!「ブートストラップ」は、ハードウェアハッカーたちが作った用語の一例。リー・フェルゼンスタインのジャンク屋流と、スティーブ・ドンピアの音楽演奏は技術魂をくすぐる。
しかし、80年代になると、ゲーム業界が急激に成長し、商業主義の波が押し寄せる。この頃、ベンチャーの介入がはじまる。ハッカーたちは著作権や印税の誘惑を知り、ハッカー倫理は終焉を迎えたとされる。しかし、ゲームがコンピュータの大衆化を加速させたのは間違いない。そんな潮流にあっても、ジョン・ハリスは生まれながらのゲームハッカーだったという。彼には異性人が異星人に見えるのかは知らんが、女性にはただ憧れるだけ。ハッカーたちは共通してあまり女っ気がない。それどころか、この物語に女性ハッカーが見当たらないのはなぜ?ハッカーたちには、どこか社会嫌いや人間嫌いなところがある。修行に女は必要ない!ってか?いや、必要だ!せめて体の触れ合いぐらいは仮想化を避けたい。んー...色と欲の酔っ払いには、ハッカー倫理は縁遠きものらしい。
ちなみに、電子工学科のおいらのクラスには、約100人の中に女子生徒が2人いて、アイドルでもないが中心的に振舞っていた。一方、薬学科の友人のクラスに遊びに行くと、約100人の中に男子生徒が20人ぐらい、ひそひそ話をしながら行儀よく座っていた。同じ少数派でありながら堂々とした態度を見せつけられると、社交性では女性の方がはるかにたくましく映ったものである。
そして25年後、MITで最後の真性ハッカーと称すリチャード・ストールマンは、古き善きハッカー文化が死につつあると嘆く。ストールマンといえば、emacs の開発者として知られる。あらゆる文化で最も活気に溢れる時代は、その黎明期にあろうか。奇妙な常識化が進むよりは、馬鹿にされるぐらいでちょうどいい。歴史を振り返れば、あらゆる革命的な市民運動が、その純粋な姿を保ち切れなかった。革命児によってもたらされた組織でさえ、やがて官僚化する運命にある。業界が成熟するということは、マーケットが出来上がるということ。コモディティ化を促進しながら携わる人々が凡庸化する。そして、枯渇し、飽きられ、自滅していくのか?消費主義は、消耗主義へ変貌し、消滅主義へ導かれるのかは知らん。ハッカー倫理も例外ではない。伝道師たちによって庶民に広まると暴走を始める。無法者の割合が変わらなくても絶対数が増えると、そこに奇妙な群衆の波が生じる。やはり、シャングリ・ラのような世間の目に晒してはならない領域があるのだろうか?
1. ハッカーとノンハッカー
ハッカーとノンハッカーを分けるものは、アップル社を創設した二人のスティーブに見てとれる。スティーブ・ジョブズは、いまや伝説的な実業家とされる。だが、スティーブ・ウォズニャックの天才的な設計がなければ、Apple II が歴史的なコンピュータとなることはなかっただろう。技術者には、ウォズの名の方が馴染みがあるかもしれない。会社を作るということは、金儲けに関わるということ。それは、ハッカーとして一線を越える行為でもある。ウォズはアップル社を去った。
なにも商業主義が悪と言うつもりはない。技術を徹底的に探求するには金がかかるし、何事も成長には投資が必要である。書籍も買えない貧乏では学ぶことすら難しい。ただ、成功の証がフェラーリやポルシェを何台も所有するのでは、ちと違う。一流の技術を持ち、優れたビジネスパートナーに恵まれ、巨額を手にすることが可能となれば、人はどうなるのだろうか?どれだけ純真さを守る力があるというのか?歳を重ね、経験を重ねると、理性的になるかと言えば、それも怪しい。商売戦略では、巧みな駆け引きを覚え、出し抜くことに注力する。そして、自虐的楽観主義は、自愛的悲観主義に変貌する。ただし、ここで言う自愛とは、他人のせいにすること。人間ってやつは、肉体も精神も腐っていくのだろうか?どうりで、大人になると、足が臭くなり、口が臭くなり、酒席で醜態を演じるわけよ。
近年、商業的成功者が、ますますもてはやされる傾向にある。その境界は、ビル・ゲイツあたりになろうか。MS-DOS が IBM PC の事実上の標準となれば、Windows が Mac の特長であったGUIの美味しいところを持っていく。今では、アップルの方が革新的イメージを強く与えるが、これらを革新的精神と言うのかは知らん。マスメディアを味方につけると何かと都合がいいのは、いつの時代も同じ。あらゆる業界で、二番煎じ、三番煎じがうまいことやる。コンピュータフェアの発起人やブームに乗るなど、政治的振る舞いや宣伝能力に長けた人が大儲けをする。Lispマシンを福音するにも、ある程度の商業化は必要であろう。だが、ハッカー倫理に照らし合わせれば妥協を許さない。商業的に成功したものが、技術的に優れているとは言えない。そこそこ使えるぐらいでも、何か新しい風をもたらしそうだという空気を与えるだけで、人々は群がる。社会は感情で動くもの。それが現実だ。
しかし、本当の意味で社会を支えているのは、草分け的な活動を地道にしている人たちであろう。人間社会には、一番やっている奴が、あまりお金を貰わないという法則でもあるのだろうか?あるいは、権威や大金は人を惑わせるが、そんな脂ぎった精神と付き合わずに済むということであろうか?
2. 自由奔放と民主主義
ハッカー精神が受け継がれるコミュニティと言えば、オープンソースのような経済モデルは、民主的な草分け運動によって成功した例と言えそうか。しかし、普通の民主主義と、ちと違う。誰でも参加できるとはいえ、議論のレベルが高ければ気後れし、最低限度の知識や規定が暗黙に引かれている。だから、罵ったりするような悪態はあまり見かけず、ほとんどが建設的な発言となるのだろう。ちなみに、気後れせず図々しく自己顕示欲を剥き出しにする人を政治屋と言う。
民主主義にとって、誰でも発言できるというよりも、誰でも傍観できるということの方がはるかに重要なのかもしれない。ここに情報透明性の原理がある。政治では機能しない民主主義が、専門のコミュニティで機能するのは、共通目的による集合体であるということであろうか。特定のエンジニアに後援会もなければ、個人的な支援運動があるわけでもない。無秩序でありながら奇妙な秩序がある。まるで生物組織が形成されるかのように、役割分担が自然に形成される。技術を探求するには、当然ながら自由奔放な雰囲気が欠かせない。
しかしながら、どんな集団であれ能力差が生じるし、相対的に劣等者を生み出す。自己の居場所を自然に確保できれば、自由はすこぶる心地良いが、必死に居場所を探す必要に迫られれば、自由は窮屈になる。実際、優秀なエンジニアと仕事をするとかなり辛い。こっちは、いつも全力疾走しなければならないのだから。ちょっと休んでくれ!とお願いすると、実は互いに見栄っ張りで、余裕を演じていただけというオチも、たまにはあるけど。まったく余裕がなく、個人のペースが極度に乱される場合は、却って思考を硬直させるので注意したい。
3. 「2001年宇宙の旅」の HAL 9000
スティーブ・ドンピアは、自分の Altair を組み立てた。8080チップは、72の機能からなる命令セットを持っている。ドンピアが低周波ラジオで天気予報を聞きながら機械語でプログラミングしていると、ラジオと干渉してけたたましいノイズを発したという。Altair の内部でビット位置を変えていく度に、別のノイズ音が鳴る。そして、Altair の最初の I/O装置を発見したという。メモリアドレス 075 で発するノイズは、ギターのFシャープに相当...てな具合に、音色とメモリアドレスを対応させ、音階のチャートを作り、作曲用のプログラムを完成させた。
ある集会でビートルズの「フール・オン・ザ・ヒル」が流れるように、マシンをセット。普段なら最新チップ情報で賑やかなハッカーたちが、畏敬の念に打たれて静まり返ったという。ハッカーたちが自分を取り戻す前に、すかさず「デイジー」の演奏。尚、1957年にベル研究所でコンピューターで演奏された初めての曲が「デイジー」だったそうな。キューブリックの「2001年宇宙の旅」では、分解され機能を喪失しつつあるコンピュータ HAL 9000 が、デイジー・ベルの一部を歌う場面がある。なるほど、初代コンピュータへの退行という意味であったか。
「汝、それに触れるべからず!と決めつける文化を否定すること、自分の創造力でそいつを否定していくことが必要なんだ!」
今日、ハッカーという言葉に悪い印象を与えることが多い。自称ハッカーってのがのさぼり、ネット社会ではいつの間にか一般市民が犯罪者に仕立てられる時代、いずれも本来の意味から酷く逸脱していくように映る。ハッカー倫理とは、けして他人に迷惑をかけるものでもなれば、自己顕示欲を誇示するものでもなかろう。ましてや、権威主義や商業主義といった脂ぎった発想から生じるものでもなければ、特許紛争に躍起になるものでもなかろう。マシンを知り尽くし、能力を限界まで引き出そうとする人で、子供の純真な好奇心を哲学的に高める実験。そう、知的冒険という意味であった。
本書は、かつて電子工学の創造性を純粋に謳歌した人たちが居たことを物語る。ハッカーとは、技術への狂気を生き甲斐へと昇華させた連中!とでも言っておこうか。コンピュータは命令する者の愚かさを忠実に反映しやがる。そこに快感があるのか。ある種の自虐的楽観主義か。彼らはマシンをハックしながら、日常生活をハックし、その究極に人生をハックしようとする。コンピュータ設計とは、ある種の人生ゲームを作っているということかもしれん。
本書は、ハッカーの起源を50年代末から60年代のMIT(マサチューセッツ工科大学)のAIラボに遡る。そこには、テック鉄道模型クラブ(TMRC)という冒険家の集まりがあったとさ。彼らは、スリリングな喜びを感じる作品や計画を「ハック」と呼ぶ。ハッカー主義を奨励した二人の教授も見逃せない。マービン・ミンスキーと Lisp のジョン・マッカーシー。それは、メガマシン IBM704 を取り巻く官僚主義との戦いから始まった。
こういう物語は、昔のTSS(タイムシェアリングシステム)を思い出させる。最悪なのはユーザ使用量に対する課金システム。同じ会社の汎用機でありながら、各部署に使用料を請求しやがる。まさに縦割り官僚組織。ちょっとしたシミュレーションを試すにも、予算にCPU時間、メモリ使用量、ディスクスペースを申請しなければならなかった。コンピュータが計算していなくても、どうせアイドリング状態にあるのに。1人にパソコン1台なんて夢のような時代であった。
ここで紹介される伝説的なソフトウェアハッカーは、リチャード・グリーンブラットとビル・ゴスパー。この頃のハッカーたちは、BASICを能力の発揮できないファシスト言語と見なしている。とはいえ、コンピュータを凡人に近づけてくれたのも事実。やがてゲームなどの多彩な機能が要求されると、抽象化言語の重要性を認めていくことになる。
アナログ錬金術師スチュアート・ネルソンは、PDP-1 を接続して電話システムをハックしたという。70年代になると、Intel 8080チップが登場。Altair 8800(1974年、MITS社)は、これを搭載したコンピュータキット。メモリはわずか 256byte で入出力装置がなく、フロントスィッチでパチパチさせながら直接メモリにデータを入力する仕組み。見えず、聞こえず、口のきけない三重苦の状態にあったという。当初から本体よりも拡張基板に注目され、ハードウェアハッカーを覚醒させる。合言葉は、自家製コンピュータを楽しもうぜ!「ブートストラップ」は、ハードウェアハッカーたちが作った用語の一例。リー・フェルゼンスタインのジャンク屋流と、スティーブ・ドンピアの音楽演奏は技術魂をくすぐる。
しかし、80年代になると、ゲーム業界が急激に成長し、商業主義の波が押し寄せる。この頃、ベンチャーの介入がはじまる。ハッカーたちは著作権や印税の誘惑を知り、ハッカー倫理は終焉を迎えたとされる。しかし、ゲームがコンピュータの大衆化を加速させたのは間違いない。そんな潮流にあっても、ジョン・ハリスは生まれながらのゲームハッカーだったという。彼には異性人が異星人に見えるのかは知らんが、女性にはただ憧れるだけ。ハッカーたちは共通してあまり女っ気がない。それどころか、この物語に女性ハッカーが見当たらないのはなぜ?ハッカーたちには、どこか社会嫌いや人間嫌いなところがある。修行に女は必要ない!ってか?いや、必要だ!せめて体の触れ合いぐらいは仮想化を避けたい。んー...色と欲の酔っ払いには、ハッカー倫理は縁遠きものらしい。
ちなみに、電子工学科のおいらのクラスには、約100人の中に女子生徒が2人いて、アイドルでもないが中心的に振舞っていた。一方、薬学科の友人のクラスに遊びに行くと、約100人の中に男子生徒が20人ぐらい、ひそひそ話をしながら行儀よく座っていた。同じ少数派でありながら堂々とした態度を見せつけられると、社交性では女性の方がはるかにたくましく映ったものである。
そして25年後、MITで最後の真性ハッカーと称すリチャード・ストールマンは、古き善きハッカー文化が死につつあると嘆く。ストールマンといえば、emacs の開発者として知られる。あらゆる文化で最も活気に溢れる時代は、その黎明期にあろうか。奇妙な常識化が進むよりは、馬鹿にされるぐらいでちょうどいい。歴史を振り返れば、あらゆる革命的な市民運動が、その純粋な姿を保ち切れなかった。革命児によってもたらされた組織でさえ、やがて官僚化する運命にある。業界が成熟するということは、マーケットが出来上がるということ。コモディティ化を促進しながら携わる人々が凡庸化する。そして、枯渇し、飽きられ、自滅していくのか?消費主義は、消耗主義へ変貌し、消滅主義へ導かれるのかは知らん。ハッカー倫理も例外ではない。伝道師たちによって庶民に広まると暴走を始める。無法者の割合が変わらなくても絶対数が増えると、そこに奇妙な群衆の波が生じる。やはり、シャングリ・ラのような世間の目に晒してはならない領域があるのだろうか?
1. ハッカーとノンハッカー
ハッカーとノンハッカーを分けるものは、アップル社を創設した二人のスティーブに見てとれる。スティーブ・ジョブズは、いまや伝説的な実業家とされる。だが、スティーブ・ウォズニャックの天才的な設計がなければ、Apple II が歴史的なコンピュータとなることはなかっただろう。技術者には、ウォズの名の方が馴染みがあるかもしれない。会社を作るということは、金儲けに関わるということ。それは、ハッカーとして一線を越える行為でもある。ウォズはアップル社を去った。
なにも商業主義が悪と言うつもりはない。技術を徹底的に探求するには金がかかるし、何事も成長には投資が必要である。書籍も買えない貧乏では学ぶことすら難しい。ただ、成功の証がフェラーリやポルシェを何台も所有するのでは、ちと違う。一流の技術を持ち、優れたビジネスパートナーに恵まれ、巨額を手にすることが可能となれば、人はどうなるのだろうか?どれだけ純真さを守る力があるというのか?歳を重ね、経験を重ねると、理性的になるかと言えば、それも怪しい。商売戦略では、巧みな駆け引きを覚え、出し抜くことに注力する。そして、自虐的楽観主義は、自愛的悲観主義に変貌する。ただし、ここで言う自愛とは、他人のせいにすること。人間ってやつは、肉体も精神も腐っていくのだろうか?どうりで、大人になると、足が臭くなり、口が臭くなり、酒席で醜態を演じるわけよ。
近年、商業的成功者が、ますますもてはやされる傾向にある。その境界は、ビル・ゲイツあたりになろうか。MS-DOS が IBM PC の事実上の標準となれば、Windows が Mac の特長であったGUIの美味しいところを持っていく。今では、アップルの方が革新的イメージを強く与えるが、これらを革新的精神と言うのかは知らん。マスメディアを味方につけると何かと都合がいいのは、いつの時代も同じ。あらゆる業界で、二番煎じ、三番煎じがうまいことやる。コンピュータフェアの発起人やブームに乗るなど、政治的振る舞いや宣伝能力に長けた人が大儲けをする。Lispマシンを福音するにも、ある程度の商業化は必要であろう。だが、ハッカー倫理に照らし合わせれば妥協を許さない。商業的に成功したものが、技術的に優れているとは言えない。そこそこ使えるぐらいでも、何か新しい風をもたらしそうだという空気を与えるだけで、人々は群がる。社会は感情で動くもの。それが現実だ。
しかし、本当の意味で社会を支えているのは、草分け的な活動を地道にしている人たちであろう。人間社会には、一番やっている奴が、あまりお金を貰わないという法則でもあるのだろうか?あるいは、権威や大金は人を惑わせるが、そんな脂ぎった精神と付き合わずに済むということであろうか?
2. 自由奔放と民主主義
ハッカー精神が受け継がれるコミュニティと言えば、オープンソースのような経済モデルは、民主的な草分け運動によって成功した例と言えそうか。しかし、普通の民主主義と、ちと違う。誰でも参加できるとはいえ、議論のレベルが高ければ気後れし、最低限度の知識や規定が暗黙に引かれている。だから、罵ったりするような悪態はあまり見かけず、ほとんどが建設的な発言となるのだろう。ちなみに、気後れせず図々しく自己顕示欲を剥き出しにする人を政治屋と言う。
民主主義にとって、誰でも発言できるというよりも、誰でも傍観できるということの方がはるかに重要なのかもしれない。ここに情報透明性の原理がある。政治では機能しない民主主義が、専門のコミュニティで機能するのは、共通目的による集合体であるということであろうか。特定のエンジニアに後援会もなければ、個人的な支援運動があるわけでもない。無秩序でありながら奇妙な秩序がある。まるで生物組織が形成されるかのように、役割分担が自然に形成される。技術を探求するには、当然ながら自由奔放な雰囲気が欠かせない。
しかしながら、どんな集団であれ能力差が生じるし、相対的に劣等者を生み出す。自己の居場所を自然に確保できれば、自由はすこぶる心地良いが、必死に居場所を探す必要に迫られれば、自由は窮屈になる。実際、優秀なエンジニアと仕事をするとかなり辛い。こっちは、いつも全力疾走しなければならないのだから。ちょっと休んでくれ!とお願いすると、実は互いに見栄っ張りで、余裕を演じていただけというオチも、たまにはあるけど。まったく余裕がなく、個人のペースが極度に乱される場合は、却って思考を硬直させるので注意したい。
3. 「2001年宇宙の旅」の HAL 9000
スティーブ・ドンピアは、自分の Altair を組み立てた。8080チップは、72の機能からなる命令セットを持っている。ドンピアが低周波ラジオで天気予報を聞きながら機械語でプログラミングしていると、ラジオと干渉してけたたましいノイズを発したという。Altair の内部でビット位置を変えていく度に、別のノイズ音が鳴る。そして、Altair の最初の I/O装置を発見したという。メモリアドレス 075 で発するノイズは、ギターのFシャープに相当...てな具合に、音色とメモリアドレスを対応させ、音階のチャートを作り、作曲用のプログラムを完成させた。
ある集会でビートルズの「フール・オン・ザ・ヒル」が流れるように、マシンをセット。普段なら最新チップ情報で賑やかなハッカーたちが、畏敬の念に打たれて静まり返ったという。ハッカーたちが自分を取り戻す前に、すかさず「デイジー」の演奏。尚、1957年にベル研究所でコンピューターで演奏された初めての曲が「デイジー」だったそうな。キューブリックの「2001年宇宙の旅」では、分解され機能を喪失しつつあるコンピュータ HAL 9000 が、デイジー・ベルの一部を歌う場面がある。なるほど、初代コンピュータへの退行という意味であったか。
2013-03-03
"言語設計者たちが考えること" Federico Biancuzzi, Shane Warden 編
おいらは、プログラマでもなければ数学者でもない。なのに、プログラミング言語も数学もちょっとかじる。どちらも便利な道具だから。プログラム用法には、文章用法が少なからず影響を受けているのだろう。どうりで千鳥足の彷徨者は、テーマから酷く逸脱した、冗長したスパゲッティ文章を量産するわけよ。
「設計や実装のシンプルさという価値を過小評価してはいけない。複雑さはいつでも追加することができる。達人はそういったものを取り除くのだ。」
巷では、プログラマに数学の知識は必要か?という議論がある。コンピュータが数学的に設計されている以上、黎明期は数学者やコンピュータ科学者の影響力が強かった。ここに登場する言語設計者たちも、数理論理学、情報工学、計算機科学などを専攻する人が多数派で、数学は必要だとする意見が多い。確かにクラス型は、群、体、環、あるいは線形空間といった代数的構造に対応する。
しかし一方で、プログラムを意味的に捉えれば、極めて言語学に近い。自然言語もプログラミング言語も、人間の思考や行動の表記法として君臨するのだから。少数派ではあるが、文学修士号を取得する者、芸術団体の理事や音楽家の経歴を持つ者、あるいは趣味を開花した者まで登場する。そして、数学が苦手だと公言する人がいれば励まされる。彼らの表記法へのこだわりが、プログラミング言語を人間味ある表現に近づけ、より庶民的にしてきたのは確かだ。現実に、数学と縁遠いとされる社会学や経済学にも便利な道具として重宝され、文系出身のプログラマもわんさといる。高度な数学の知識を隠蔽するという意味では、言語文化にオブジェクト指向が根付いていると言えよう。とはいえ、数学の知識があるに越したことはない。それが学問の幅というものであろうから。
...数学落伍者の嘆きより。
本書は、C++, Python, APL, Forth, BASIC, AWK, Lua, Haskell, ML, SQL, Objective-C, Java, C#, UML, Perl, PostScript, Eiffel, Ruby に携わった27人の言語設計者たちのインタビュー集である。彼らに共通していることは、既存の言語に囚われない柔軟な発想の持つ主であること、そして、なによりも情熱の塊のような連中だということである。
「情熱を持って好奇心を追求する。素晴らしい創造や発見の多くは、適切な答えを導き出す準備が整った状況で、適切な時に、適切な場所に誰かが居合わせた場合にのみ生み出される。」
プログラミング言語は、どれをとっても長所と短所があり、万能なものなど存在しない。そして、極めて文化的で宗教的なところがある。数学者や科学者でさえ愛用言語への思いは強く、互いの短所を罵り合う様相はケインズが揶揄した美人投票にも似たり。プログラミング言語の優位性は、企業の圧力や宣伝力に左右されることが多く、科学的に評価されることは少ないようだ。
人間の思考は、人体という構造体によって支えらえる。その構造体は、細胞、特定の機能を持つ器官、更にある目的を果たすために互いの器官が連携し合う組織系によって構成される。その上に、精神なる得体の知れないものがあるとされるが、どこまでを実体と言うかは知らん。個体が形成されるまでに様々な構成段階があるのは、まさにオブジェクトクラス。プラトン式イデアという純粋なデータ構造に、ダーウィニズムというある種の時間の概念が加わると、エントロピーの原理がごとく複雑系へと進化する。過去の抽象化の流れは、未来の抽象化の姿を見せ続けるであろう。
さて、言語にまつわる泥酔者軍団の仕事環境を、ざっと紹介してみよう。...
だいたい5,6人のチームで、おいらはプロジェクトリーダをすることが多い。歳のせいかは知らん。分野で言えばデジタル回路設計となるのだが、ここ十年は検証環境ばかり面倒を見ている。デバッグ作業は大嫌いだが、検証環境を構築するのは嫌いではない。それに、実装の制約に囚われず、自由におまけ機能が搭載できるし、使用言語もそこそこ自由。回路設計といってもソフトウェアとの境界はますます曖昧になり、回路部をHDL(ハードウェア記述言語)で書き、その周辺を様々な言語で書いて協調させる。回路に実装する機能はプロセッサや信号処理アルゴリズムなどで、その検証用の等価モデルをプログラミングする。モデリングでは、C か C++ で要求されることが多い。数学的な要素が強い部分では、Octave(数値演算言語)を組み合わせることもしばしば。
実験的に使い捨てコードを書くことが多いので動的言語を使いたいが、渋い顔をされる。パフォーマンスを理由にされても、大差ないのだけど。統合的な実行環境では、shellやTcl/Tkなどを用い、awk, sort, sed, grep, diff といったunix系コマンド群をいまだに重宝している。方針としては、なるべくスクリプト言語を使い、assertion機能を駆使するといった感じであろうか。
ちなみに、Anders Hejlsberg は、中心的なデバッグツールは、Console.Writelineメソッドだと言っている。要するに、ちょっとしたステートメントを埋め込むだけで、かなりの問題を探り当てることができるというわけだ。多くのプログラマにとって、それが実態であろう。達人がこういう発言をしてくれるのは救われる。複雑なケースにおいては、スタックトレースや局所変数などの監視が必要になるのだけど。だからというわけでもないが、Ruby がお気に入り。なかなか認めてくれないから、趣味で導入しているけど。
操作性を、GUI環境にしろ!という話もあるが、却下!却下!お偉いさんは見た目がお好きなようで、担当者の誰もそんなことは言わない。画像処理系では絵を直接見たいという要求があり、Gnuplot, LibTIFF, ImageMagick と協調させると喜ばれる。これも趣味だけど。統計情報やログ管理では、Perl で要求されることが多い。趣味で Ruby を使うけど。確かに、Perl は文字列操作が強力だ。そして、正規表現を埋め込むとますます暗号文っぽくなりやがる。ちなみに、Perlファンは、"Pathologically Eclectic Rubbish Lister"(病的折衷主義のガラクタ出力機)と呼ぶそうな。自虐楽観主義とでも言っておこうか。こんな楽しみ方があってもいい。
...てなわけで、おいらのプログラミング言語への思いは趣味ぐらいなものである。ソフトウェア工学なんて学んだこともない。最近、教育の依頼を受けることがあるが、教えられるものなど何もない。使えないと思ったら見捨ててもらって結構だ。技術を学びたければ、気に入った師匠を見つけて弟子入りすればいい。師匠が書籍であってもいいではないか。有名な講義がネット経由で受講できる時代、わざわざこちらから教育方針を打ち出す必要もない思うが、組織となるとそうもいかないらしい。とりあえず、コードレビューが重要だということは言っておこうか。哲学的な意識合わせが目的で、書き方を規定するものではない。メンバーが固定化するとやらなくなるけど。
言語がいくら汎用的に設計されても、すべての機能を喧嘩させずに共存させることは難しい。したがって、特定用途向けの言語を組み合わせることは合理性に適っている。動的言語が流行るおかげで、他言語へのハードルを低くしてくれるのもありがたい。そして、各々の言語システムを組み合わせながら、ユーザ独自の統合環境を構築することになろう。問題を一番理解しているのは、その問題に直面している連中であろうから、そこに独自の表記法が生まれても不思議はない。クラス群の名詞とメソッド群の動詞を特化した言葉で抽象化するだけでも、立派な言語システムに見えるだろう。アプリケーションを作るとは、ある種の言語を作ると言うことができるかもしれない。
あらゆる学問で、専門用語や独自の表記法が編み出される。自然言語においても、日本語や英語などの大きな枠組みがあるにせよ、独自の解釈とニュアンスの下で単語が用いられ、誰一人として同じ言葉を喋っちゃいない。言語が精神と結びつくならば、本質的に多様性を内包することになるだろう。
1. 言語選択
当初目をつけていたのは、Python と Objective-C であるが、本書のおかげで APL や Haskell にも興味がわく。
APL は行列代数をうまく扱うという。まさに画像処理の次元空間を扱うのに良さそう。実は、ハードウェア記述と配列記述は相性がいいのではないかと思っている。ただし、表記法は従来の代数表記とは景色が違う。演算の優先順位が右から左、ただそれだけ。なるほど、小学校から馴染んできた四則演算で、加減算より乗除算が優先されるなんて不自然かもしれない。単純に並べ順を変えれば余計な規定は不要というわけか。宇宙人が地球人に接触しようとしないのは、そこに住む知的生命体が奇妙な優先順位に囚われているからであろうか?真理を無視してまで。
Haskell では副作用の制御が強調される。これが関数型言語の長所で、並列化を容易にするという。回路設計と並列化の概念は直結するだろう。
むかーし、言語を選択する基準の一つにデータ型の明確さがあった。BASICのように自動で型変換されることに違和感があった。性格から来るのかは知らんが、コードの間違えはキャストミスから起こることが多い。ただ、厳格過ぎるのも鬱陶しい。近年の動的言語は数値リテラルが厳格など、その按配が肌に合う。Haskell や ML は型推論の機能を備えているそうな。だが、静的な型付けが悪で、動的な型付けが善とも言い切れない。自動化の弊害は、本質的な思考を疎かにさせるところがある。
尚、Dennis M. Ritchie は「C言語は強い型付けと、弱い型チャックを特徴とした言語である。」と述べたという。Tom Love は、Objective-C よりも C++ が使われる理由は「AT&Tの威光があったから」と言い切る。
また、ポインタから逃れるために Delphi や Java を検討した時代もある。結局、C言語を基準とする見方は変わっていない。なんだかんだ言っても、C世代か。ちなみに、学生時代、ある女生徒が「はじめてのC」がいいよ!という発言に、男性諸君は皆振り返ったものだ。
C が常に選択肢として残るのは、やはり安定性であろう。せっかく使う言語がいつのまにか消滅するのではリスクが大きい。ただ、レガシーコードが亡霊のように付きまとい、仕方がない面もある。
近年、オブジェクト指向言語を選択するという流れがある。この用語が過度な熱狂から生じたという見方があるものの、コードと向かい合う考え方が整理できるのは大きな意味がある。ガベージコレクションが搭載されるかどうかも大きな選択肢となろう。実行速度を犠牲にすることも否めないが、動的なメモリ管理を酔っ払いはできるだけ避けたい。この機能をオブジェクト指向の概念に含むかどうかは、意見の分かれそうなところか。
ところで、入門言語は何がいいか?とお聞かれると、Rubyがいい!と即答していた時期があった。だが、微妙かもしれない。便利なものに慣らされて、面倒な知識を後付けする方がずっと辛いから。この考えはプログラマとはだいぶ違うかもしれない。今日の回路設計者はトランジスタが何であるかなど漠然としか知らなくて済む。だが、CPUの構造ぐらいは知っておくべきだろう。ポインタは嫌われ者だが、実装上のメリットも大きい。アセンブラから学べとまでは言わないにしても、アキュムレータ周りの振る舞いぐらい知っておいて損はない。
ちなみに、真の数学を記述するならアラビア語を学べ!という意見も耳にするが、真理の探求が人間の発明した言語に依存するとも思えない。なんにせよ、あまり手段にこだわることもあるまい。どんな言語を使うにしても、物理的な構造をどこかで意識している方がいい。社会が仮想化へと邁進するからこそ、実体という視点を見失しなわないようにしたい。
2. オブジェクト指向とパラダイム設計
初めてオブジェクト指向に触れたのは20年以上前か。当時、講座や書籍を漁ったが、真新しいものに映らなかった。カプセル化の概念は古くからあるし、現場ではクラスもどきの抽象的方策を用いていた。Thomas E. Kurtz に至っては「コンピュータ業界における最大の詐欺!」とまで言っている。とはいえ、再利用や拡張性は誰もが抱える問題で、オブジェクト指向もこれを念頭に置いている。ただ、再利用性と言っても、立場によって微妙にニュアンスが違うようだ。その違いは、データ構造、ライブラリ、コンポーネントに現われる。配列や連結リスト、スタックやキューなどの構成において。
カプセル化については全般的に異論はないようだ。やはりこの概念は本質であろうか。ただ、C++ では、必ずしもメソッドを経由する必要はなく、データ型に直接アクセスできる柔軟性がオーバーヘッドを抑制するとしている。そして、ジェネリック性を重視する立場から Java を攻撃している。
最も毛嫌いしている概念は、継承だ!多重継承ともなると泥酔者の頭は Kernel Panic!
Objective-C が多重継承を禁止しているのは、Smalltalk の直系の子孫だからだという。再考するのであれば、単一継承すら取り除くかもしれない、とまで言っている。そうだろう!そうだろう!
しかーし、Eiffel では多重継承を主軸に位置づけている。継承にアレルギーがあるのは、すっきりした事例を見たことがないだけのことかもしれない。尚、Eiffel の契約の概念は良く、再利用には欠かせない発想だ。
今、政治的に再利用するように仕向けられたモジュールがある。ドキュメントもない。黒幕の住処?その名はブラックボックスと呼ばれる。お偉いさんが口にする「実績がある!」ってどういう意味だ?再利用性のあるコードを書くにしても熟練が必要で、安易な考えで取り組むと、却って冗長となりバグ要因を増やす。お偉いさんには、再利用の裏に潜む「日程短縮」という言葉がよほど心地よく響くらしい。だが、この手の癒し系の言葉は、ヘタするとたちまち悪魔へ変貌する。おいらは小悪魔にしか興味がないので付き合いは勘弁願いたい。
さて、オブジェクト指向は薬なのか?毒なのか?という議論は絶えない。これはソフトウェア固有の概念とは思わない。ハードにせよソフトにせよ、モジュール設計には哲学や思想が重要である。モジュールの再利用では、全体的な設計方針やシステム思想に沿っているかが鍵となる。したがって、ドキュメントには、コードの説明よりも意図する事やテスト思想の方が重要となるはず。プリミティブな領域を超えて、万能なモジュールを設計するなど不可能であろうから。システム設計とは、パラダイム設計であると言うことができるだろう。
3. OSとCPU、そして言語マシン
近年、OSは必要か?という議論をよく見かける。OSってやつはユーザを圧倒するほど複雑だ。組み込み系ではユーザに意識させないように慎ましく存在するが、パソコンではアプリケーションを脇に追いやってまで主役であろうとする。こいつがいったい何をやってくれるというのか?起動で思いっきり待たせるだけか?まるで政治家のような存在よ。
Forthマシンを設計した Charles H. Moore はこう述べている。
「Bill Gates 氏が、OSという考え方を世界に浸透させたのは素晴らしいことです。しかし、これはおそらく史上初の、そして世界最大の詐欺だと言えるでしょう。」
Javaマシンが公開されたのは、いつ頃だったか。当時、仮想マシンという見方よりは、なぜ、CPUの命令セットが言語のシンタックスを直接搭載しないのか?などと、ぼんやりと考えたものである。言語の柔軟性をハードウェアで束縛するのはアホのすること、と笑われたものだけど。
Forth にはシンタックスがほとんどないという。シンタックスよりもセマンティクスを重視すると。Lisp もそうだが、関数型言語の特徴がそういうものなのかもしれない。
それはさておき、互いに異なる言語を搭載したCPUが、マルチコアと結びつけばどうだろうか?ML のような関数型言語を搭載した自動定理証明マシンなんてものがあってもよさそう。今までハードウェアがソフトウェア化する傾向にあったが、今後は逆の流れがあっても良さそうな気がする。FPGAの大規模化にともない、CPUの物理構造を動的にすることもそう難しくはない。ユーザがOSに囚われる必要がないように、言語システムがCPUの命令セットに囚われる必要もないだろう。
4. プログラミング病理学とコンピュータ科学
Brad Cox が、virtualschool.edu に投稿した一節を紹介してくれる。
「ゆえにコンピュータ科学は死んでいない。そもそも一度も存在したことがないのだから。私が現在執筆中の書籍で扱おうとしている新たなパラダイムの中核は、我々がソフトウェア危機と呼ぶ症状を引き起こしている疾病原因となるウィルスが、原子ではなくビットで構成された物質を取り扱うことにより、自然に発生するのではなく、人間が生み出しているというところにある。
しかし、この物質は質量保存の法則に従わないため、鉛筆や手荷物コンベヤを製造する人々に対する報酬という動機付けを生み出すような商業メカニズムが完全に崩壊するのだ。商業がなければ、高度な社会秩序へと進化することができず、すべてのものを一から作り出す愚かな人たちしかいない原始的な状態の泥沼から抜け出せなくなってしまうのだ。
こうなると、あらゆるものは他の類を見ない固有のものとなり、実証的な研究を保証するための整合性あるものは何一つなくなってしまう。これが、コンピュータ科学というものが存在しない理由である。」
5. ビジュアルモデリングとドキュメント
UML は本書の中でもちょいと異質か。おいらの視点もかなり異質だけど。ソフトウェア工学というより、システム工学に分類すべきだと思っている。アーキテクチャの可視化という意味では、プログラムと密接に関わるのだけど。
ドキュメント管理という観点からすると、これに近い考え方をやっている。ただし、言語ではなく図形ツールを使っているところに問題がある。非常にメンテナンス性が悪い。仕様は日々生き物のようにうごめく。プロジェクトも、モジュールも、日程も、何もかも...ドキュメントは、常に最新版に保たれるからこそ威力を発揮する。メンバーの誰もがより最適な方向へ進もうとし、その歩みを止めるわけにはいかない。そして、プロマネはドキュメントの修正に睡眠時間を削られるのよ。
そして、ドキュメントを一人で管理すべきか?という問題がある。うちのような小規模なプロジェクトでは一人でやるべきであるが、大規模なプロジェクトではそうもいかないだろう。そこで、図面を言語で作成するという発想は素晴らしい。言語記述による統合化と分散化という観点から注目したのだった。
だが、、むかーしちょっとかじって、リファレンスも埃をかぶったまま。UML は難しすぎると、設計者が言ってくれるのは救われる。20%未満の機能で十分であると。特に、UML2.0 はあまりにも多くの方法論を取り込んだために、セマンティクスが明確に定義できなくなったという。もっとも敷居を高くしてしまったのは、UML から実装コードまで生成するというアイデアである。もはやプログラミング言語を求めているのか?James Rumbaugh は醜い!と吐き捨てる。UML にそんな魔法の力はないと。そして、OMGの標準化プロセスを非難している。おかげで、頭をリセットして読み直す気になれる。
ちなみに、 Ivar Jacobson は、ソフトウェア業界の人々は本やマニュアルを読まないと指摘している。忙しいこともあろうが、にわかに信じ難い。周りのソフト屋さんはいつも専門書と睨めっこしていて、刺激を受ける。凝り固まった本ばかり読むという意味もあるかもしれない。
「設計や実装のシンプルさという価値を過小評価してはいけない。複雑さはいつでも追加することができる。達人はそういったものを取り除くのだ。」
巷では、プログラマに数学の知識は必要か?という議論がある。コンピュータが数学的に設計されている以上、黎明期は数学者やコンピュータ科学者の影響力が強かった。ここに登場する言語設計者たちも、数理論理学、情報工学、計算機科学などを専攻する人が多数派で、数学は必要だとする意見が多い。確かにクラス型は、群、体、環、あるいは線形空間といった代数的構造に対応する。
しかし一方で、プログラムを意味的に捉えれば、極めて言語学に近い。自然言語もプログラミング言語も、人間の思考や行動の表記法として君臨するのだから。少数派ではあるが、文学修士号を取得する者、芸術団体の理事や音楽家の経歴を持つ者、あるいは趣味を開花した者まで登場する。そして、数学が苦手だと公言する人がいれば励まされる。彼らの表記法へのこだわりが、プログラミング言語を人間味ある表現に近づけ、より庶民的にしてきたのは確かだ。現実に、数学と縁遠いとされる社会学や経済学にも便利な道具として重宝され、文系出身のプログラマもわんさといる。高度な数学の知識を隠蔽するという意味では、言語文化にオブジェクト指向が根付いていると言えよう。とはいえ、数学の知識があるに越したことはない。それが学問の幅というものであろうから。
...数学落伍者の嘆きより。
本書は、C++, Python, APL, Forth, BASIC, AWK, Lua, Haskell, ML, SQL, Objective-C, Java, C#, UML, Perl, PostScript, Eiffel, Ruby に携わった27人の言語設計者たちのインタビュー集である。彼らに共通していることは、既存の言語に囚われない柔軟な発想の持つ主であること、そして、なによりも情熱の塊のような連中だということである。
「情熱を持って好奇心を追求する。素晴らしい創造や発見の多くは、適切な答えを導き出す準備が整った状況で、適切な時に、適切な場所に誰かが居合わせた場合にのみ生み出される。」
プログラミング言語は、どれをとっても長所と短所があり、万能なものなど存在しない。そして、極めて文化的で宗教的なところがある。数学者や科学者でさえ愛用言語への思いは強く、互いの短所を罵り合う様相はケインズが揶揄した美人投票にも似たり。プログラミング言語の優位性は、企業の圧力や宣伝力に左右されることが多く、科学的に評価されることは少ないようだ。
人間の思考は、人体という構造体によって支えらえる。その構造体は、細胞、特定の機能を持つ器官、更にある目的を果たすために互いの器官が連携し合う組織系によって構成される。その上に、精神なる得体の知れないものがあるとされるが、どこまでを実体と言うかは知らん。個体が形成されるまでに様々な構成段階があるのは、まさにオブジェクトクラス。プラトン式イデアという純粋なデータ構造に、ダーウィニズムというある種の時間の概念が加わると、エントロピーの原理がごとく複雑系へと進化する。過去の抽象化の流れは、未来の抽象化の姿を見せ続けるであろう。
さて、言語にまつわる泥酔者軍団の仕事環境を、ざっと紹介してみよう。...
だいたい5,6人のチームで、おいらはプロジェクトリーダをすることが多い。歳のせいかは知らん。分野で言えばデジタル回路設計となるのだが、ここ十年は検証環境ばかり面倒を見ている。デバッグ作業は大嫌いだが、検証環境を構築するのは嫌いではない。それに、実装の制約に囚われず、自由におまけ機能が搭載できるし、使用言語もそこそこ自由。回路設計といってもソフトウェアとの境界はますます曖昧になり、回路部をHDL(ハードウェア記述言語)で書き、その周辺を様々な言語で書いて協調させる。回路に実装する機能はプロセッサや信号処理アルゴリズムなどで、その検証用の等価モデルをプログラミングする。モデリングでは、C か C++ で要求されることが多い。数学的な要素が強い部分では、Octave(数値演算言語)を組み合わせることもしばしば。
実験的に使い捨てコードを書くことが多いので動的言語を使いたいが、渋い顔をされる。パフォーマンスを理由にされても、大差ないのだけど。統合的な実行環境では、shellやTcl/Tkなどを用い、awk, sort, sed, grep, diff といったunix系コマンド群をいまだに重宝している。方針としては、なるべくスクリプト言語を使い、assertion機能を駆使するといった感じであろうか。
ちなみに、Anders Hejlsberg は、中心的なデバッグツールは、Console.Writelineメソッドだと言っている。要するに、ちょっとしたステートメントを埋め込むだけで、かなりの問題を探り当てることができるというわけだ。多くのプログラマにとって、それが実態であろう。達人がこういう発言をしてくれるのは救われる。複雑なケースにおいては、スタックトレースや局所変数などの監視が必要になるのだけど。だからというわけでもないが、Ruby がお気に入り。なかなか認めてくれないから、趣味で導入しているけど。
操作性を、GUI環境にしろ!という話もあるが、却下!却下!お偉いさんは見た目がお好きなようで、担当者の誰もそんなことは言わない。画像処理系では絵を直接見たいという要求があり、Gnuplot, LibTIFF, ImageMagick と協調させると喜ばれる。これも趣味だけど。統計情報やログ管理では、Perl で要求されることが多い。趣味で Ruby を使うけど。確かに、Perl は文字列操作が強力だ。そして、正規表現を埋め込むとますます暗号文っぽくなりやがる。ちなみに、Perlファンは、"Pathologically Eclectic Rubbish Lister"(病的折衷主義のガラクタ出力機)と呼ぶそうな。自虐楽観主義とでも言っておこうか。こんな楽しみ方があってもいい。
...てなわけで、おいらのプログラミング言語への思いは趣味ぐらいなものである。ソフトウェア工学なんて学んだこともない。最近、教育の依頼を受けることがあるが、教えられるものなど何もない。使えないと思ったら見捨ててもらって結構だ。技術を学びたければ、気に入った師匠を見つけて弟子入りすればいい。師匠が書籍であってもいいではないか。有名な講義がネット経由で受講できる時代、わざわざこちらから教育方針を打ち出す必要もない思うが、組織となるとそうもいかないらしい。とりあえず、コードレビューが重要だということは言っておこうか。哲学的な意識合わせが目的で、書き方を規定するものではない。メンバーが固定化するとやらなくなるけど。
言語がいくら汎用的に設計されても、すべての機能を喧嘩させずに共存させることは難しい。したがって、特定用途向けの言語を組み合わせることは合理性に適っている。動的言語が流行るおかげで、他言語へのハードルを低くしてくれるのもありがたい。そして、各々の言語システムを組み合わせながら、ユーザ独自の統合環境を構築することになろう。問題を一番理解しているのは、その問題に直面している連中であろうから、そこに独自の表記法が生まれても不思議はない。クラス群の名詞とメソッド群の動詞を特化した言葉で抽象化するだけでも、立派な言語システムに見えるだろう。アプリケーションを作るとは、ある種の言語を作ると言うことができるかもしれない。
あらゆる学問で、専門用語や独自の表記法が編み出される。自然言語においても、日本語や英語などの大きな枠組みがあるにせよ、独自の解釈とニュアンスの下で単語が用いられ、誰一人として同じ言葉を喋っちゃいない。言語が精神と結びつくならば、本質的に多様性を内包することになるだろう。
1. 言語選択
当初目をつけていたのは、Python と Objective-C であるが、本書のおかげで APL や Haskell にも興味がわく。
APL は行列代数をうまく扱うという。まさに画像処理の次元空間を扱うのに良さそう。実は、ハードウェア記述と配列記述は相性がいいのではないかと思っている。ただし、表記法は従来の代数表記とは景色が違う。演算の優先順位が右から左、ただそれだけ。なるほど、小学校から馴染んできた四則演算で、加減算より乗除算が優先されるなんて不自然かもしれない。単純に並べ順を変えれば余計な規定は不要というわけか。宇宙人が地球人に接触しようとしないのは、そこに住む知的生命体が奇妙な優先順位に囚われているからであろうか?真理を無視してまで。
Haskell では副作用の制御が強調される。これが関数型言語の長所で、並列化を容易にするという。回路設計と並列化の概念は直結するだろう。
むかーし、言語を選択する基準の一つにデータ型の明確さがあった。BASICのように自動で型変換されることに違和感があった。性格から来るのかは知らんが、コードの間違えはキャストミスから起こることが多い。ただ、厳格過ぎるのも鬱陶しい。近年の動的言語は数値リテラルが厳格など、その按配が肌に合う。Haskell や ML は型推論の機能を備えているそうな。だが、静的な型付けが悪で、動的な型付けが善とも言い切れない。自動化の弊害は、本質的な思考を疎かにさせるところがある。
尚、Dennis M. Ritchie は「C言語は強い型付けと、弱い型チャックを特徴とした言語である。」と述べたという。Tom Love は、Objective-C よりも C++ が使われる理由は「AT&Tの威光があったから」と言い切る。
また、ポインタから逃れるために Delphi や Java を検討した時代もある。結局、C言語を基準とする見方は変わっていない。なんだかんだ言っても、C世代か。ちなみに、学生時代、ある女生徒が「はじめてのC」がいいよ!という発言に、男性諸君は皆振り返ったものだ。
C が常に選択肢として残るのは、やはり安定性であろう。せっかく使う言語がいつのまにか消滅するのではリスクが大きい。ただ、レガシーコードが亡霊のように付きまとい、仕方がない面もある。
近年、オブジェクト指向言語を選択するという流れがある。この用語が過度な熱狂から生じたという見方があるものの、コードと向かい合う考え方が整理できるのは大きな意味がある。ガベージコレクションが搭載されるかどうかも大きな選択肢となろう。実行速度を犠牲にすることも否めないが、動的なメモリ管理を酔っ払いはできるだけ避けたい。この機能をオブジェクト指向の概念に含むかどうかは、意見の分かれそうなところか。
ところで、入門言語は何がいいか?とお聞かれると、Rubyがいい!と即答していた時期があった。だが、微妙かもしれない。便利なものに慣らされて、面倒な知識を後付けする方がずっと辛いから。この考えはプログラマとはだいぶ違うかもしれない。今日の回路設計者はトランジスタが何であるかなど漠然としか知らなくて済む。だが、CPUの構造ぐらいは知っておくべきだろう。ポインタは嫌われ者だが、実装上のメリットも大きい。アセンブラから学べとまでは言わないにしても、アキュムレータ周りの振る舞いぐらい知っておいて損はない。
ちなみに、真の数学を記述するならアラビア語を学べ!という意見も耳にするが、真理の探求が人間の発明した言語に依存するとも思えない。なんにせよ、あまり手段にこだわることもあるまい。どんな言語を使うにしても、物理的な構造をどこかで意識している方がいい。社会が仮想化へと邁進するからこそ、実体という視点を見失しなわないようにしたい。
2. オブジェクト指向とパラダイム設計
初めてオブジェクト指向に触れたのは20年以上前か。当時、講座や書籍を漁ったが、真新しいものに映らなかった。カプセル化の概念は古くからあるし、現場ではクラスもどきの抽象的方策を用いていた。Thomas E. Kurtz に至っては「コンピュータ業界における最大の詐欺!」とまで言っている。とはいえ、再利用や拡張性は誰もが抱える問題で、オブジェクト指向もこれを念頭に置いている。ただ、再利用性と言っても、立場によって微妙にニュアンスが違うようだ。その違いは、データ構造、ライブラリ、コンポーネントに現われる。配列や連結リスト、スタックやキューなどの構成において。
カプセル化については全般的に異論はないようだ。やはりこの概念は本質であろうか。ただ、C++ では、必ずしもメソッドを経由する必要はなく、データ型に直接アクセスできる柔軟性がオーバーヘッドを抑制するとしている。そして、ジェネリック性を重視する立場から Java を攻撃している。
最も毛嫌いしている概念は、継承だ!多重継承ともなると泥酔者の頭は Kernel Panic!
Objective-C が多重継承を禁止しているのは、Smalltalk の直系の子孫だからだという。再考するのであれば、単一継承すら取り除くかもしれない、とまで言っている。そうだろう!そうだろう!
しかーし、Eiffel では多重継承を主軸に位置づけている。継承にアレルギーがあるのは、すっきりした事例を見たことがないだけのことかもしれない。尚、Eiffel の契約の概念は良く、再利用には欠かせない発想だ。
今、政治的に再利用するように仕向けられたモジュールがある。ドキュメントもない。黒幕の住処?その名はブラックボックスと呼ばれる。お偉いさんが口にする「実績がある!」ってどういう意味だ?再利用性のあるコードを書くにしても熟練が必要で、安易な考えで取り組むと、却って冗長となりバグ要因を増やす。お偉いさんには、再利用の裏に潜む「日程短縮」という言葉がよほど心地よく響くらしい。だが、この手の癒し系の言葉は、ヘタするとたちまち悪魔へ変貌する。おいらは小悪魔にしか興味がないので付き合いは勘弁願いたい。
さて、オブジェクト指向は薬なのか?毒なのか?という議論は絶えない。これはソフトウェア固有の概念とは思わない。ハードにせよソフトにせよ、モジュール設計には哲学や思想が重要である。モジュールの再利用では、全体的な設計方針やシステム思想に沿っているかが鍵となる。したがって、ドキュメントには、コードの説明よりも意図する事やテスト思想の方が重要となるはず。プリミティブな領域を超えて、万能なモジュールを設計するなど不可能であろうから。システム設計とは、パラダイム設計であると言うことができるだろう。
3. OSとCPU、そして言語マシン
近年、OSは必要か?という議論をよく見かける。OSってやつはユーザを圧倒するほど複雑だ。組み込み系ではユーザに意識させないように慎ましく存在するが、パソコンではアプリケーションを脇に追いやってまで主役であろうとする。こいつがいったい何をやってくれるというのか?起動で思いっきり待たせるだけか?まるで政治家のような存在よ。
Forthマシンを設計した Charles H. Moore はこう述べている。
「Bill Gates 氏が、OSという考え方を世界に浸透させたのは素晴らしいことです。しかし、これはおそらく史上初の、そして世界最大の詐欺だと言えるでしょう。」
Javaマシンが公開されたのは、いつ頃だったか。当時、仮想マシンという見方よりは、なぜ、CPUの命令セットが言語のシンタックスを直接搭載しないのか?などと、ぼんやりと考えたものである。言語の柔軟性をハードウェアで束縛するのはアホのすること、と笑われたものだけど。
Forth にはシンタックスがほとんどないという。シンタックスよりもセマンティクスを重視すると。Lisp もそうだが、関数型言語の特徴がそういうものなのかもしれない。
それはさておき、互いに異なる言語を搭載したCPUが、マルチコアと結びつけばどうだろうか?ML のような関数型言語を搭載した自動定理証明マシンなんてものがあってもよさそう。今までハードウェアがソフトウェア化する傾向にあったが、今後は逆の流れがあっても良さそうな気がする。FPGAの大規模化にともない、CPUの物理構造を動的にすることもそう難しくはない。ユーザがOSに囚われる必要がないように、言語システムがCPUの命令セットに囚われる必要もないだろう。
4. プログラミング病理学とコンピュータ科学
Brad Cox が、virtualschool.edu に投稿した一節を紹介してくれる。
「ゆえにコンピュータ科学は死んでいない。そもそも一度も存在したことがないのだから。私が現在執筆中の書籍で扱おうとしている新たなパラダイムの中核は、我々がソフトウェア危機と呼ぶ症状を引き起こしている疾病原因となるウィルスが、原子ではなくビットで構成された物質を取り扱うことにより、自然に発生するのではなく、人間が生み出しているというところにある。
しかし、この物質は質量保存の法則に従わないため、鉛筆や手荷物コンベヤを製造する人々に対する報酬という動機付けを生み出すような商業メカニズムが完全に崩壊するのだ。商業がなければ、高度な社会秩序へと進化することができず、すべてのものを一から作り出す愚かな人たちしかいない原始的な状態の泥沼から抜け出せなくなってしまうのだ。
こうなると、あらゆるものは他の類を見ない固有のものとなり、実証的な研究を保証するための整合性あるものは何一つなくなってしまう。これが、コンピュータ科学というものが存在しない理由である。」
5. ビジュアルモデリングとドキュメント
UML は本書の中でもちょいと異質か。おいらの視点もかなり異質だけど。ソフトウェア工学というより、システム工学に分類すべきだと思っている。アーキテクチャの可視化という意味では、プログラムと密接に関わるのだけど。
ドキュメント管理という観点からすると、これに近い考え方をやっている。ただし、言語ではなく図形ツールを使っているところに問題がある。非常にメンテナンス性が悪い。仕様は日々生き物のようにうごめく。プロジェクトも、モジュールも、日程も、何もかも...ドキュメントは、常に最新版に保たれるからこそ威力を発揮する。メンバーの誰もがより最適な方向へ進もうとし、その歩みを止めるわけにはいかない。そして、プロマネはドキュメントの修正に睡眠時間を削られるのよ。
そして、ドキュメントを一人で管理すべきか?という問題がある。うちのような小規模なプロジェクトでは一人でやるべきであるが、大規模なプロジェクトではそうもいかないだろう。そこで、図面を言語で作成するという発想は素晴らしい。言語記述による統合化と分散化という観点から注目したのだった。
だが、、むかーしちょっとかじって、リファレンスも埃をかぶったまま。UML は難しすぎると、設計者が言ってくれるのは救われる。20%未満の機能で十分であると。特に、UML2.0 はあまりにも多くの方法論を取り込んだために、セマンティクスが明確に定義できなくなったという。もっとも敷居を高くしてしまったのは、UML から実装コードまで生成するというアイデアである。もはやプログラミング言語を求めているのか?James Rumbaugh は醜い!と吐き捨てる。UML にそんな魔法の力はないと。そして、OMGの標準化プロセスを非難している。おかげで、頭をリセットして読み直す気になれる。
ちなみに、 Ivar Jacobson は、ソフトウェア業界の人々は本やマニュアルを読まないと指摘している。忙しいこともあろうが、にわかに信じ難い。周りのソフト屋さんはいつも専門書と睨めっこしていて、刺激を受ける。凝り固まった本ばかり読むという意味もあるかもしれない。
登録:
投稿 (Atom)

