GNU ソフトウェアの関連記事 - 2

Richard Stallman に聞く (1)

□GNU は Unix ではない *1・2

Byte 編集部 David Bent、Jon Edwards -1986 年 -

Richard Stallman が現在開発中の Unix 互換ソフトウェア・システムについて、「Byte」誌の編集者と討論したものである。

1986 年 7 月

 Richard Stallman は最も野心に富んだフリー・ソフトウェア開発プロジェクト"GNU システム " に最近着手しました。「Dr. Dobb's Journal」誌の 1985 年 3 月号に"The GNU Manifesto"(「GNU 宣言」) を発表しました。その中で次のように述べています (ちなみに、GNU は"GNU's Not Unix" の頭字語です)。

「システムは完全に Unix と互換性のあるソフトウェア・システムであり、全ての (それを使える) 人にフリーなものとして提供可能となる。GNU が完成すると誰もが良いシステムを空気のように自由に入手することができる」

 Stallman は Emacs の作成者として広く知られています。Emacs は強力なエディタであり、MIT の AI ラボにいる時に開発されました。GNU プロジェクトで最初に開発されたソフトウェアは Emacs で、新規に作成されたものです。このことは偶然の一致ではありません。GNU Emacs は、入手可能なあらゆる価格帯のプログラムの中で最も優れたプログラムであるという評価を受けています。

Byte

「Dr. Dobb's」という雑誌の 1985 年 3 月号の「GNU 宣言」(The GNU Manifesto) を読みました。それから何が起きましたか ? それが始まりだったのですか ? またそれからの進捗はどうですか ?

Stallman

「Dr. Dobb's」に記事が出たことが GNU プロジェクトの始まりではありません。プロジェクトの準備ができた時に「GNU 宣言」を書きました。これはコンピュータ・メーカへ出資を仰ぐためのプロポーザルとして書いたものです。でも、メーカは巻き込まれたくないと思っていたので、私が出資金を集めることに奔走するよりは、実際のプログラムを書くべきだと考えました。

 「GNU 宣言」を書いてから 1 年半後にその記事が出て、ようやく GNU Emacs を配布し始めました。それ以来、GNU Emacs の完成度をあげながらもいろいろなマシンで動くように改良し、さらに最適化 C コンパイラや、C プログラムを動かすのに必要なソフトウェアの作成がほぼ終了しています。この中にはソース・コード・レベルのデバッガも入っており、Unix 上のほかのソース・コード・レベルのデバッガが備えていない多くの特徴を備えています。例えば、デバッガ内にユーザが自由に定義できる変数を持っていたり、変数の履歴を取って、変数表示や構造体周りの要素を非常に簡単に追跡することができます。

Byte

エディタは完成していて、現在広く配布されており、さらにコンパイラを仕上げようとしているのですね。

Stallman

10 月には、仕上げたいと思っています。

Byte

カーネルについてはどう考えていますか ?

Stallman

現在、あるカーネルに関してどういうふうにして作業を始めるか、計画を練っているところです。それは MIT で開発されたもので、現在、公にリリースされていて、それを使おうかと考えています。TRIX というカーネルで、リモート・プロシージャ・コールをベースにしています。

 現在のこのシステムには備わっていない Unix との互換機能部分を追加する必要があります。でもまだ始めていません。カーネルに取り掛かる前に、コンパイラを終えようとしています。(TRIX の) ファイル・システムは書き直さなければならないと考えています。例えば、ディスクの一貫性を保つために本来の順序でブロックの書き込みを行ない、信頼性の高い (failsafe) ファイル・システムや、バージョン番号の追加作業です。

 一般的に使われている方法を用いた Unix のバージョンにカーネルの構成を一致させることに、私は戸惑いを覚えました。バージョン番号を付けないで、ファイル名を指定できるようにしなければなりませんが、バージョン番号を明示的に与えることも可能にしなければなりません。

 普通の Unix プログラムが両方の機能を動作させるようにします。この機能を扱えるようにするために、プログラムを修正しないで済むようにするべきです。これを実現するための構成を考えていたのですが、実際に試してみれば、それが動くかどうかわかるでしょう。

Byte

GNU システムがほかのシステムと比較して優れている点について、概略を教えてください。あなたの目標の 1 つが Unix と互換性のあるシステムを開発することだということはわかりました。ファイル・システムに関しては、少なくても Unix を越える、何か優れたものを作っているという説明がありました。

Stallman

C コンパイラは効率が良く、コンパイル速度も高速なものになるでしょう。デバッガも良いものになりました。ファイル・システムを改良する方法が見つかるかもしれませんし、見つからないかもしれません。

 私はある程度、作り直すことの利点を理解しています。実現し直すことにより、さまざまなシステムはだいぶ良くなっています。それは、私が長い間、いろいろな分野にわたってさまざまな仕事をしてきたからです。ですから、豊富で具体的なアイデアがあります。

 システムを改良する方法の 1 つに、ファイルの大きさや行の長さに制限がなく、どんな文字が入っていても動作させるようにする、という方針があります。

 Unix システムは、その点では非常に悪いものと言えます。「勝手な制限を入れるべきではない」というソフトウェア工学の原則を、Unix は採用していないからです。おそらく、開発当初のターゲット・マシンが非常に小さく、それに全てを収めるべく Unix を開発することが一般的だったからでしょう。

 GNU システムの制限はただ 1 つ、プログラムの動作環境のメモリの大きさです。つまり、多くのデータを扱おうとするので、全てのデータをメモリ上に取り込めなくなった場合です。

Byte

仮想記憶を採用しても、この問題は解決されないように考えます。この問題を取り除くために、深みにはまってしまうかもしれませんね、永久に。

Stallman

実際には、この深みに永久に入っていくだいぶ前に解決策が見つかると思います。

Byte

どういったマシンのどのような環境で GNU Emacs が動きますか ? その点についてコメントをお願いします。現在 VAX で動いておりますが、パーソナル・コンピュータへの移植は行ないましたか ?

Stallman

パーソナル・コンピュータというのは何を指しているのかわかりません。例えば、Sun はパーソナル・コンピュータですか ?

 GNU Emacs を動かすには最低 1M バイトが必要ですが、それ以上実装されていれば望ましい、というものです。通常は仮想記憶上で動きます。

 C コンパイラに技術上の問題がある場合は話は別ですが、仮想記憶をサポートしているマシンや最近の Unix マシンでは、GNU Emacs が動くでしょうし、現在ほとんどの機種で動作しています。

Byte

それを Atari や Macintosh に移植しようとした人がいますか ?

Stallman

Atari 1040 ST には、まだ充分なメモリがありませんが、次期マシンでは動作するだろうと期待しています。多分動くでしょう。

 もちろん、現在流行しているマシンで動かそうとして設計しているわけではありません。

 このプロジェクトを開始してから 2〜3 年が経っています。このように制限のある環境で動くように修正を施してバランスをくずし、全体を悪いシステムにしたくはありません。それよりは自然で良いシステムを開発していこうと決心しました。

 私は、この 2〜3 年でこのような条件を満たすマシンが広まると確信しています。事実、メモリを必要とするプログラムが広範囲に広まっているのに、ほとんどのメーカが仮想記憶をなかなか採用しようとしません。これは驚きです。総合的な観点から、絶対に必要な機能だと考えています。

Byte

シングル・ユーザのマシンには必要ないのではないか、と多くの人が考えていると思いますが。

Stallman

そういった人々は、シングル・ユーザとシングル・プロセスの区別がついていません。Unix のようなシステムにおいては、1 人で使用していても同時に異なるプロセスが複数起動され、重要な機能です。

 充分なメモリがあれば、仮想記憶をサポートしていないマシンでも GNU Emacs を動かすことができます。しかし、その他の GNU システムや Unix システムの快適な動作は望めません。

Byte

GNU Emacs には、どのくらいのレベルの Lisp が入っているのですか ? Lisp を学習するには便利なツールかどうか関心があります。

Stallman

確かに学習は可能です。完全な Lisp システムを備えていますが、それほど強力ではありません。エディタ用のコマンドを作成するには充分なシステムでしょう。

 実際は、システム・プログラミングに採用される Common Lisp システムには匹敵しませんが、GNU Emacs の Lisp は、Lisp としての必要なものは全て提供しています。

Byte

GNU システムを私達のマシンやワークステーションに導入して、ふだんの作業に実用的で、しかもそこには GNU で配布しているコード以外は全く使用しない、そんな環境をいつ配布できるか予想できますか ?

Stallman

それは非常に難しい質問です。1 年でできるかもしれませんし、もちろんもっとかかるかもしれません。もう少し短いかもしれませんが、おそらくそのようなことはありえないでしょう。あと 1〜2 カ月でコンパイラ作業を終えたいと思っています。

 本当に開始すべき大きな作業はカーネルと一連のソフトウェアです。GNU の仕事は、プロジェクトの立ち上げ当初 2 年くらいかかると予想していました。しかし、2 年半たってもまだ終えていません。遅れの原因は、あるコンパイラが袋小路に入ってしまって、そこにだいぶ時間をとられてしまったことにあります。完全に書き直さなければなりません。

 ほかにも理由があります。GNU Emacs に時間がとられました。基本的には、自分でやらなければならないとは考えていません。

Byte

GNU の配布方法の概略を教えてください。

Stallman

マニュアルやソフトウェアをパブリック・ドメイン・ソフトウェアにしていません。というのは、「全てのユーザが共有の自由を獲得する」ことを確実なものにしたいからです。私が書き、配布しているソフトウェアの改良版を商用として改良や配布してほしくないからです。

 私はこれまでそういったことが発生しているとは考えたくありません。プログラムの自由な改良を促進したいのです。そのための最良の方法は、改良部分をフリーにしない、という誘惑を拒否することです。

 そうですね。確かにわずかの人は改良をあきらめるかもしれませんが、ほとんどの人は同様の改良を行なってフリーにしています。

Byte

どのようにしてそれを保証しているのですか ?

Stallman

プログラムを著作権で保護し、私が使っている条件の下でのみ、プログラムのコピーや修正に明確な許可を与えています。

 私のプログラムの修正に自分の変更点を加えて配布してはいけません。自分用になら可能です。それをほかの人にあげたり、教えてもいけません。でもほかの人に配布するのなら、私の使っているものと同じ条件の下で行なわなければなりません。

Byte

C コンパイラから生成されたコードに対しても、何らかの権利を主張しますか ?

Stallman

著作権法では、コンパイラの出力に対して私が著作権を主張できないようになっています。ですから主張しませんし、主張しようとも思いません。

 どのようなコンパイラを使っても、独占的な商品を開発することに同意はしません。しかし、このコンパイラを使った商品開発を中止させようという試みは (やろうとは思っていません)、とりわけ有用だとは思いません。

Byte

あなたの作成したコードを使って、さらに別のものを作成することを禁止しますか ?

Stallman

かなり大きなコードの変更を入れた場合は禁止します。2 行のコードなら何もしませんし、著作権を主張しません。基本的に、いくつかの条件があります。

 まず、著作権は、ソフトウェアの秘蔵者にソフトウェアをコピーさせたり、修正させたりしないために用いています。この権利の一部を放棄する旨の追加を行ないました。従って、この条件は、著作権が適用されるもののみについて言及しています。

 この条件に従う理由は、法律だからだとは考えていません。素直な人々がソフトウェアを受け取った時に、ほかの人々と将来にわたって共有できるという励ましになるからです。

Byte

ある意味で、あなたの哲学を信じる場合にのみ、面白く使えるツールを全て用意するという考え方へ誘導していますね。

Stallman

そうです。ソフトウェアの秘蔵者はそれを行なうために法律システムを利用していることもわかりました。私は誰もが使えることを守るために、それを使っているのです。

Byte

メーカがあなたのプロジェクトに出資したくないとしたら、完成した時に、誰が GNU システムを使うのか考えていますか ?

Stallman

特に考えはありません。それほど重要な質問ではありませんね。この目的は、独占的なソフトウェアがはびこるのを自分自身で拒否するようにすることです。そうしたい人がいるのも知っています。

 注意を払わない人がいるかもしれませんが、そういった人々は私の関心外です。その人々や、その人々に感化されている人にほんのわずかな悲しみを感じます。

 ちょうど今、独占的なソフトウェアの不愉快さを認める人は、息詰まったらコンピュータを使わないという選択肢を失っているように思います。そこで、私が快適な選択肢を与えようとしているのです。

 技術的な利点という簡単な理由から、人々は GNU システムを使っています。例えば、私の C コンパイラは従来見てきたいろいろなコンパイラと比較しても、ほぼ同等に良いコードを生成します。

 GNU Emacs は商業ベースの競合製品と比べてはるかに優れていると評価されています。GNU Emacs は資金援助を受けていませんが、皆に使われています。従って、技術的な利点のあるその他の GNU システムも使うだろうと考えています。

 社会的にも GNU システムは良いものですので、どうやってさらに良いものにするか技術的にわからなかったとしても GNU システムを進めていくつもりです。

 GNU プロジェクトは社会的なプロジェクトです。社会的な変化を成し遂げる技術的な手段なのです。

Byte

人々が GNU を採用するということはあなたにとって重要なことだと思います。配布するためにソフトウェアを作成するということは、本当に学術的な練習問題どころではありません。ソフトウェア業界に影響を及ぼす方法を変えていければ、と考えているわけですか ?

Stallman

そうです。魅力的なロゴがないので、誰も使わないだろうと言っている人もいれば、これはとても重要であり、誰もが使いたがるだろうと考えている人もいます。

 実際にどんなことが発生しているかを調べる方法はありません。この分野の不道徳を改めるための方法は、自分の天分を知ったからにはこれしかないと考えました。それを私がやらなければならないのです。

Byte

どんな意味が含まれているか読者に伝えていただけますか ? 確かに、政治的、社会的に重要な声明だと感じています。

Stallman

改革です。知識や情報にとりかかる一般的な方法を変えようとしています。知識の所有、使用の可否のコントロール、知識の共有の禁止を行なおうとすることは、一種の破壊行為だと考えています。全ての社会に貧困をもたらす犠牲を払って、それを行なう人々に利益を与える活動だからです。

 2 ドルの豊かな価値を失って、1 ドルを得ようとする人はいます。しかし、死んでしまうような場合を除いて、良心 (良識) のある人間はそういった類のことはやらないと思います。

 もちろん、このような行為を行なうような人はかなり裕福です。私に言わせれば、その人は単に無節操なだけですが。フリー・ソフトウェアを書いて、人々に使ってもらうよう促進するために報酬を得るような人に会いたいのです。独占的なソフトウェアを書いて報酬を得るような人には会いたくありません。社会に対して本当に貢献していないからです。

 資本主義の本質は、物を生産してうまくお金を儲け、それによって有益なことを行なうといったことをいわば自動的に促すという考えです。知識を所有し始めると、そのメカニズムは働きません。本当に有益なものは促進されないのです。

 自動車やひとかたまりのパンのようなものと情報は違う、ということを述べておきます。これは重要だと考えています。

 つまり、情報は (それを禁止しなければ) コピーしたり、皆で共有したり、手を加えて自分で良いものにすることができます。人間の行動には有益なものです。ですから、これは本当にひとかたまりのパンではありません。ひとかたまりのパンがあって、ほかの人に渡したいと思っても、パンのコピー・マシンにパンを入れただけでは実現しません。最初のパンを製造する工程と同じ工程を踏まないとさらに新しいパンを作ることはできません。

 従って、コピーを (不可能ですが) 許可するかどうかというのは不適切です。最近まで本は印刷機でのみプリントされました。自分でコピーはできますが、印刷機で行なうよりも多くの手間を要するので現実的ではありません。あらゆる目的と意味から、大量に作成する以外は、本を作ることは無意味であるかのように見えますし、魅力もほとんどありません。それで、著作権は、普通に読んでいる人から自由を実際に剥奪しませんでした。本の購入者は、著作権で禁止されていることを行なうようなことはありませんでした。

 しかし、これはコンピュータ・プログラムには当てはまりません。カセット・テープでもそうです。現在、本に関しては一部当てはまらなくなりましたが、ほとんどの本では、まだ当てはまります。確かに本を買うよりもコピー機でコピーをとる方が、高価で確実に多くの手間を要します。結果的にはそれは魅力が少ないということになります。

 ちょうど今、著作権が無害で満足できる状態から、著作権が有害で耐えきれない状態に変わる時期に来ています。禁止されているが、有益なことをやろうとした人は実際に「海賊」として中傷されます。自分の利益のために情報の利用を完全にコントロールしたいという人がいて、著作権は、その人を支援するために設計されました。情報を誰もが公にアクセスできて、公にすることを拒めないようにしたいと思っている人を支援するために設計されたのではありません。

 法律によって、パブリックな仕事のクラスが認識されるべきだと考えます。ここでいうパブリックというのは、公園のように空き缶が転がっているような場所ではなく、パブリック・ドメインとも違います。排他的な人は誰もいないし、皆が使用できるけれども、誰も邪魔もしないという意味です。皆の所有物から派生した仕事が拒否される事実を見かけた場合は、誰でも提訴できるようにするべきです。

Byte

しかし、海賊はプログラムを使いたいのであって、さらに良いものを作るためにその知識を利用したいとは思っていないので、コピーの入手方法に興味がないのではありませんか ?

Stallman

それについては重要な相違であるとは思いません。プログラムを使っている多くの人々は、プログラムはより一層社会に貢献すると言っています。1 回から数万回食べられるひとかたまりのパンを持っているからです。

Byte

サポートしてほしいために商業ベースのソフトウェアを購入するユーザもいます。GNU の配布にあたってはどのようなサポート体制を計画していますか ?

Stallman

その点に関してはユーザが誤解し、注意深く考えていないのではないかと思います。サポートがあるというのは確かに有益ですが、ソフトウェアを売ったり、あるいは独占的なソフトウェアを使って何かを得ようと考えている場合の、サポートという意味であれば、ユーザは自分で自分を混乱させていることになります。

 独占的なソフトウェアだから良いサポートを受けられるという保証は何もありません。ただ単に販売者がサポートを提供すると言っているだけで、良いものだとは言っていません。そして、良いか悪いかは彼らに関係ないのです。

 事実、人々は、GNU Emacs の方がいろいろな商業ベースの Emacs よりも良質なサポートが提供されると思っています。おそらく、私の方がほかの Emacs を作成した人々よりも良いハッカーだからです。

 人々が報告してきたバグに対する私の修正が入るというフリーなサポートがあります、あるいは、次期リリースにそれが入ります、と言うことは良質なレベルのサポートを提供していることになります。自分がかかえる問題は、いつでも人を雇って解決することができます。このソフトウェアがフリーになれば、サポートの競争市場に参入できます。

 Emacs のサービス・リストを配布しており、そのリストには名前と電話番号、有料のサポートについて記述されています。

Byte

バグ修正情報を集めていますか ?

Stallman

ええ、人々が私に送ってくれます。サービス・リストに載せてほしい人々と次のような約束をしています。

 サービスする人が話したことと、サポートの一部として GNU ソフトウェアへ行なった行為の全ての 2 点を内密にするように顧客に決して頼んではならないということです。

Byte

つまり、一部の人間だけが知っているような問題の解決方法を根拠にしたサポートはしてはいけないということですね。

Stallman

はい。問題を賢く、早く解決する方法や、共通の問題として既に理解されている事柄、ユーザにどうすべきかをうまく説明する方法への知識をもとに競争することはできます。

 これが今後の競争対象となる点の全てです。より良くすることはできますが、お互いに競争相手を積極的に邪魔することはできません。

Byte

自動車を買うのと似ているように思います。購入者にサポートや継続的な保守のためのサービスをメーカに持ち込ませないということですね。

Stallman

あるいは家を買う場合も、家の不具合を修復したことのある人だけが、最初に建築する業者になるのでしょうか ? ソフトウェアの独占によってもたらされる威圧に似たものがあります。人々は私に、Unix の世界で起こっている問題について話をします。なぜならば、メーカが Unix の改良版を販売し、その修正を集めてバイナリ版以外は配布しない傾向にあるからです。その結果、バグは本当の意味で修正されなくなります。

Byte

個々に独立してバグを修正しようという労力が重複しているからですか ?

Stallman

そうです。社会的な展望から、情報の独占問題を浮かび上がらせるために、別の視点を提供しましょう。

 責任保険の問題を考えてください。社会からの賠償を得るために、弁護士を頼むのは怪我人であり、弁護士の費用も捻出しなければなりません。これは馬鹿げたことですし、事故の被害者を救出するには非効率的な方法です。競争相手から無理に仕事を奪うことに、全ての時間を割いているような場合も考えられます。

 ボール紙の大きな箱に入っているペン (こうすることは中に入っているペンより費用がかかる) を思い浮かべてみてください。ペンが盗まれないようにしているだけなのです。どこの通りの曲がり角にもただのペンがあった方がよっぽど良いのではないでしょうか。

 交通の流れを妨害している料金所全てを思い出してみてください。これは巨大な社会現象です。社会を妨害して、お金儲けの方法を探しています。ひとたび社会を妨害するとすぐにそのままの状態で料金をとろうとします。

 情報の独占による無駄な継承はますます重要な問題になっていくだろうし、結局、ユートピアと現実社会とのギャップを生み出していくことになります。そのユートピアでは、ロボットが何もかも行なっているので、生活のために働く必要が本当にないのです。一方、我々がいる現実社会はというと、隣りの同業者がやっていることを真似して、それに時間を費やしています。

Byte

ソフトウェアに著作権告知を入れるようなことですね。

Stallman

禁じられたコピーを持っていないかどうかをチェックするために取り締まったり、独占物ゆえに、既に行なった全ての仕事を人々が重複して行なう点もよく似ています。

Byte

皮肉な人はあなたがどうやって生活の糧を得ているのか、疑っています。

Stallman

コンサルティングです。私がコンサルティングをする場合は、いつもその仕事で作成したものを配布する権利を残しています。また、私が作成したり、ほかの人が作成したものをフリー・ソフトウェアとしてそのコピーを送付することで、生計を立てることができます。

 大勢の人々が GNU Emacs の対価として 150 ドルを支払っていますが、今ではこのお金は、私が創設した Free Software Foundation へ入っています。Foundation は利害が複雑になるので、私には給料を支払っていません。その分を、ほかに GNU プロジェクトで働く人を雇うのに支払っています。

 私がコンサルティングで生計を立てていられれば、それが最良の方法だと思っています。

Byte

正式な GNU 配布テープには現在何が入っていますか ?

Stallman

現在、GNU 配布テープには、GNU Emacs(1 つのバージョンで全てのコンピュータに対応している)、Bison(Unix の YACC の代替プログラム)、MIT Scheme(Sussman 教授が Lisp を非常に単純化した Lisp の方言)、Rogue に似た地下牢爆破ゲームの Hack が入っています。

Byte

印刷されたマニュアルもテープと一緒に配布しているのですか ?

Stallman

いいえ。マニュアルの価格はそれぞれ 15 ドルですが、自分でコピーしてもいいのです。

 このインタビュー記事をコピーしてほかの人と情報を共有することもできます。

Byte

コピーの方法を教えてください。

Stallman

次の住所に問い合わせてください。

Free Software Foundation
675 Massachusetts Ave.,
Cambridge,MA 02139,U.S.A

Byte

GNU システムが完成したら、次は何をする予定ですか ?

Stallman

これといったものはありませんが、ソフトウェアの中のほかの分野で同じようなことをやりたいと考えています。

Byte

つまり、これはソフトウェア業界への一連の総攻撃の開始ですね ?

Stallman

そうありたいですね。しかし、おそらく私がやろうとしていることは、単に生きるためにわずかな時間で簡単な仕事をしながら安易な生活を送ろうとしているだけです。優雅に生きようとは思いません。人生の残りを、周りをうろついて面白い人を見つけたり、知らないことを学んだりしようと思っています。


GNU は Unix ではない【脚注】

*1

Copyright (C) 1986 Richard Stallman. 著作権の表示とこの告知をすべてのコピーに載せて、しかも何ら変更を加えていない場合のみ、この章のコピーの作成と配布を許可します。

*2

訳者注 これは GNU Emacs の配布テープの中に入っているファイル (etc/INTERVIEW) を日本語に訳したものです。もともと、米国のパーソナル・コンピュータの雑誌「Byte」の 1986 年 7 月号に出ていたものです。