今や、Unixだらけだ。Linuxであり、BSDである。Solarisであり、MacOS Xである。WndowsですらPOSIX APIを備えている。IBMのメインフレームでもLinuxを使う顧客がいるという。スーパーコンピュータもそうだ。Androidもそうだ。どうしてこうなってしまったか?
村井純さんが学生の頃、最初に教授に指示された仕事が、DECのPDP-11用OSであるRSX-11の逆アセンブルであったという。もちろん手作業である。村井純さんは、この作業でOSを学んだという。
その後しばらくしてUnixが登場する。Unixの特徴には、ファイルによる抽象化がある。一見奇妙なfork/execモデルも特徴と言える。しかし、一番の特徴は、Cで書かれていること、そしてそのソースコードを読むことができるということだ。
村井純さんがおっしゃるには、Cで書かれたUnixは遅かったという。ハードウェアベンダーがカリカリにチューンしたOSにはとてもかなわなかったという。しかし、それでもUnixを選んだ。なぜなら、Unixには自由があったからだという。
あるソフトウェアが自由とはどういうことか? もっと単純で物質的な道具について、その自由を表明したら少し奇妙な印象を受けるだろう。例えば、「ハサミは自由である」と言ってみたらどうか?
もちろん、ハサミは自由だ。アナタは、ハサミを使って自由に紙を切ってよい。封筒を開けるのに使ってよい。お菓子の袋を開けるのにも使ってよい。ハサミの使用目的は「切る」ことだ。ハサミが自由であるとは、アナタは何を切ってもよいということだ。もちろん、夜道で人を切りつけてはダメだ。犯罪行為は、道具に関わる自由の例外である。
ソフトウェアも道具だ。Unixにもハサミと同様の自由を認めてよいはずだ。つまり、Unixの使用目的について、アナタは自由である。問題は、Unixの使用目的とは何かということだ。UnixはOSなので、OS一般の使用目的と言い換えてもよい。
OSの教科書をめくると、OSには2つの機能があると書いてある。リソースの管理と、APIの提供だ。これらの機能は、アプリケーションプログラムを書きやすくするためにある。ナマのハードウェアを触るのはしんどい。
したがって、OSの使用目的とは、その上でアプリケーションプログラムを書いて動作させることと言っていいだろう。つまり、アナタは、そのOSで、自由にアプリケーションを書いたり動作させてよい。
どこかで何かを間違ったのだろうか? RSX-11上でアプリケーションプログラムを書いたり動作させることに関して、DECは自由を制限していたのだろうか? そんなはずはないと思う。村井純さんはどの自由のことを言ったのだろう?
帰りの電車の中で、思うところがあってRaymondの『The Art of Unix Programming』を読み始めた(こういうときSafari Books Onlineは最高!!)。この本の、あるセクションのタイトルが目に止まった。それこそ、Unixに固有に認められる自由だった。すなわち、Raymondが言うことには、「Unix Is Fun to Hack」である。
Unixには、アプリケーションプログラムを書いたり動作させたりするというOS一般に認められる自由の他に、ハックする自由がある。ハックの対象は、Unixのカーネルの内部まで及ぶ。つまり、Unixは中身を調べて、場合によっては改造してもいいということだ。そのためには、高級言語で書かれていたほうがいい。
アプリケーションプログラマの中には、RSX-11を好む人もいただろう。Unixは遅いし、誰かのハックのおかげでクラッシュするかもしれない。しかし、多分ハッカーはUnixを好む。誰だって、RSX-11を逆アセンブルしたくはないだろうし、逆アセンブルしたとしてもRSX-11のハックは地下でやるしかない。
道具に関する自由というコンセプトは、アメリカの銃規制の問題を思い起こさせる。アメリカでは合法的に銃を所持することができる。しかし、銃は犯罪にも使われるため、アメリカ人の中には銃を規制したほうがよいと考える人もいる。
銃の使用目的は、何かを撃つことだ。つまり、銃の自由とは、アナタはその銃で何かを撃ってもよいということだ。もちろん、人を撃ったらダメだ。ハサミで人を切りつけては行けないのと同じだ。
銃規制に反対する人は、単に銃を奪われることだけでなく、自由を奪われることを恐れているのではないかと思う。逆に賛成派は、多少の不自由を受け入れればよりより社会になるよ、と言っている。
ハックする自由。なんだか当たり前の結論に至った。Richard Stallmanなんかが一生懸命主張しているのも、つまるところはハックする自由なのだろう。Linuxをはじめ、オープンソースのソフトウェアが普及したのもハックする自由があったからだ。結局みんなUnixの仲間なのだ。
0 件のコメント:
コメントを投稿