江端さんのひとりごと 「全世界ヌーディスト計画」 2001/12/14 2001/11/27 2001/12/14 鴨 浩靖 様より頂戴したコメントを追加 2001/11/27 初版 ある日のこと、私は嫁さんに質問してみました。 江端 :「バナナ園の主人である私は、ある時、過剰豊作となってしまったバ ナナの一部を、自宅の農園で無料提供をすることにしました」 嫁さん:「えっ、なに?」 江端 :「さて、このバナナを自宅に持ち帰ったお母さんが、体の弱い子供に それを食べさせました」 嫁さん:「・・・」 江端 :「この子供は不幸にして、良く熟れたバナナを受けつけず、この子供 は、激しい嘔吐にみまわれ、そのまま入院してしまうことになりま した」 嫁さん:「それで?」 江端 :「この子供の入院騒ぎの責めを、バナナ園の主人である私は受けなけ ればならないでしょうか?」 嫁さん:「・・・無料だったんでしょ?」 江端 :「そう」 嫁さん:「他の人は入院することなかったんでしょ?」 江端 :「そう」 嫁さん:「持っていった人の自己責任に決っているじゃない」 江端 :「やっぱりそう思うよねぇ・・・」 嫁さん:「一体、何なの?」 江端 :「ソフトウェアの世界では、『バナナを食するに際する許諾条項が書 かれた用紙も一緒に渡し』、その内容は『バナナを剥いた瞬間から、 その責任はバナナを剥いて食った人にある』ことが明記されている 必要があり、もしそのような手続きをしていないと、『バナナ園の 主人が悪い』と見なされることがあるんだ」 ----- 嫁さんは、『仕事でプログラミングをやっていて、さらに家に帰って来てま で、よくやろうと思うね』と飽きれた様に言いますが、プログラミングという やつは、これで、なかなか楽しいものなのです。 仕事で作成するソフトウェアでは、避けえない納期の制約や、コストや性能 の面から、やむなくプログラミングの内容に関して、妥協や制約を余儀なくさ れることもあります、が、趣味のソフトウェアの開発は、そういう雑多なこと を気にせず、自分の好きなように実装できます。 それに、プログラミングは、ゲームのような要素やスリルもあります。 プログラム作成とは、解法が無限個ある、超難解なゲームとかパズルのよう なもので、たった一行のコーディングミスが、正反対の結果を導くこともあり ますし、最悪の場合、システムをダウンさせることもあります。 ですから、数百、数千行のコードが、自分の思った通りに動作し、期待通り の結果を返した時の快感と言うのは、大麻や麻薬の比ではありません 知らんけど。 ----- さて、ここで、プログラムとソフトウェアの関係について説明します。 +------------+ プログラム |ソースコード| +------------+ | | コンパイル、ビルド、リンク v +------------+ ソフトウェア | バイナリ | | コード | +------------+ コンピュータは、0と1からなる、2進数の数字(バイナリ)からなる命令しか 理解できません(正確に言うと、『デジタルコンピュータ』)。 しかし、人間がこのバイナリ命令を作成し、コンピュータに理解させるのは 至難の業です。 0100010001001010001011110101010100101011011111.......... これを見て、「なるほど、アドレス&4098から始まるメモリ8ビットを、アド レス&F9A2にコピーするんだな」と理解できたら、その人は人間ではなく、多 分、コンピュータです。 そこで、人間にも理解できる記述で、コンピュータへの命令を作成できない ものか、と考えられたものが、コンピュータ言語です。 コンピュータ言語には、様々なものがありますが、何れにしてもその目的は ただ一つ、「人間様に理解できる記述」を目指したものです。 void main(void) { printf("God Bless Ebata\n"); } 上記のプログラムは、"C"と言う名前のコンピュータ言語を使って、"God bless Ebata"を表示せよ、と言う命令を記述したもので、これをソースコード と呼びます。 これなら、人間にも何となく理解できそうですが、これでもまだ、コンピュー タには理解できません。 そこで登場するのが、コンパイラー(翻訳者)です。 このコンパイラーは、コンパイル、ビルド、リンクなる処理を行い、上記の ソースコードを、コンピュータにも理解できるバイナリコードに変換します。 こうして、コンピュータは、プログラムの内容を理解し、命令を実行できる ようになる訳です。 ソフトウェアは、このバイナリコードさえあれば動きますので、一般的に、 あなたが日常使っているワープロソフトや、表計算ソフトのパッケージには、 このバイナリコードは入っていますが、ソースコードは入っていません。 つまり、ワープロソフトや、表計算ソフトのソースコードは、公開する必要 がないのです。 ソースコードには、その会社が莫大な資金と人材を投与して開発したノウハ ウがてんこ盛りに記述されており、プログラマならその内容を理解することが できます。 しかし、呪文のような"01011011111.........."のバイナリコードから、そ のノウハウを読み出すことは、不可能に近いです。 車のエンジンの本体を見せずに、エンジンを提供する。 テレビの本体を見せずに、テレビを提供する。 そんなことは不可能です。 しかし、ソフトウェアは、ノウハウを一切公開せず、製品を供給できるので す。 ビバ! ソフトウェア産業!! てなもんです。 ----- ところが、この商売のからくりを逆に使って、エンドユーザに損害を与えて 知らん顔して、うまいこと儲けている会社も出てくる訳です。 ワープロソフトがハングすると、オペレーティングシステムも巻き添えにす るような愚劣な品質なソフトやOSを平気で出荷して憚りない、世界中の殆どの パソコンに強制的にインストールされるOSを作り、エンドユーザに製品を購入 させた挙句、デバックやテストまでさせる、Mの頭文字で始まる会社がその代 表格です。 無論、このMの頭文字で始まる会社は、ソースコードの公開など絶対にしま せん。 ソースコードが無断で使用され、ノウハウが盗用され、類似製品を山ほど作 られることになりますから、それはそれで仕方ないと思うのですが、それにし ても、この品質の悪さには本当に頭に来ます。 「ソースコードを公開しやがれ!このど阿呆が!!俺が全部書き直してやる!」 これが世に言う、『オープンソース運動』の基本的な思想なのです。 ----- さて、話を元に戻します。 米国赴任以来、私は、自分の為だけのプログラムを、幾つか作成してきて、 これらは私の仕事や趣味に大変役に立っています。 これらのプログラムは、製品にして売買する程、高機能でも高品質でもあり ませんが(と言っても、市販の製品がそれほど良い品質であることは稀ですが) が、きっと同じ問題で困っている他の人を助ける一手段になるだろう、と思っ ています。 そもそも、プログラムと言うのは、無限回のコピーが可能ですので、これら のプログラムを、他の人に渡したところで、私が『損』をする訳ではありませ ん。 バイナリコードは勿論ですが、私はある理由から、ソースコードも全部公開 しています。 このようにソースコードを公開するソフトウェアの提供形態は、「オープン ソース」と呼ばれ、ソフトウェアの世界では、かなり知られているものなので す。 そして、これらのオープンソースのソフトウェアの殆どが、無料で利用可能 で、その上、これらの多くは『あんたが望めば、好きなようにソースを変更し てもいいよ』と、プログラム許諾条項に記載されています。 公開されているソースコードでは、それを使っている人がバグを見つけると、 寄ってたかって、ソースコードをいじって、それを「直して」しまいますので、 もの凄い速さで、ソフトウェアの品質が高まっていきます。 これこそが、公開されたソースコードのループバックメカニズム、「オープ ンソース」の恐るべき、善のフィードバックシステムと呼べるものです。 ----- 私は、私のソフトウェアを使いたい人に、何の制限も付けることなく、使っ て貰いたいと思っていますが、一番最初に示した、『バナナ園の悲劇』に出て くる農園の主人のようにはなりたくはないのです。 と言うか、普通に考えれば、上記のケースで『バナナ園の主人が責任を負う』 というのは、どう考えてもしっくりこないのですが、HP社と日立の間でライセ ンス契約の業務を担当している先輩の談によれば、 『それは、バナナ園の主人が悪いな』 と言うことに、なってしまうそうです。 バナナを利潤目的で売っているのであれば、社会的な道義的な責任が生ずる のは当然としても、善意のボランティアで、バナナを配布したとしても、その 結果に対しても責任が生ずるという解釈が、法律で言うところの『責任』の概 念なのだそうです。 ちなみに、ソフトウェアの世界では、利潤目的で販売しているのにも関わら ず、その製品によって発生した事故に関して、免責(私は責任を取らんよ)を宣 言するのが一般的です。 ----- このようにソフトウェアの種類(商用、無料、オープンソース)に関わらず、 その著作者であるソフトウェアの製作者を保護する目的も含めて、ソフトウェ アには『ライセンス』なるものが付与されます。 ライセンスとは、許諾契約のことで、ソフトウェアを使用する際は、ユーザ はライセンスに従う義務が発生します。 もし、そのユーザが、そのライセンスに同意しない場合は、そのソフトウェ アを使用することはできません。 このライセンスの内容には、利用可能なコンピュータの台数、ユーザー数、 などの、さまざまな取り決めがありますが、この中で最も重要なものが、プロ グラム製作者(著作者)保護の為の免責事項です。 これは、以前、江端さんのひとりごと「プログラム使用許諾条項の新コンセ プト」の中で記載した文章です -------------- (以下、「マイクロソフトソフトウェア製品のライセンスポリシーハンドブッ ク(www.microsoft.com/japan/legal/license/MS_LPH.pdf)」より抜粋) 免責条項 いかなる場合においてもマイクロソフトおよびその子会社は、第三者 ソフトウェア製品の使用または使用不能から生じる直接または間接の 損害(逸失利益、事業の中断、事業情報の喪失、またはその他の金銭 的損失を含みますがこれらに限定されません)に関して一切責任を負 いません。たとえ、マイクロソフトおよびその子会社がこのような損 害の可能性について知らされていた場合でも同様です。 江端要約 マイクロソフトのソフトやOSを使って出た損害については、責任を取 らんよ。 江端解釈 いやなら、使うな。 -------------- つまるところ、免責事項とは、 考えうる全ての責任に対して、考えうる可能な限りの『逃げ口上』 と言い直してもよいでしょう。 ----- 私も、私自身を守る為に、自分の作ったソフトウェアに、自分でライセンス を作成しなければなりませんでしたが、私のようば法律の素人が下手にライセ ンスを作成すれば、ザルのような法律の抜け穴付きのライセンスを作るのは、 目に見えていました。 ソフトウェア開発者の多くは、既に実績のあるライセンスをそのまま使って しまうのが、安心確実と考えたようで、フリーあるいはオープンソースのソフ トウェアの多くは、以下の様なライセンスを使用しているようです。 BSD Copyright、GNU General Public License、Artistic License、 X Window System License、Apache License 等、その他、 http://www.gnu.org/philosophy/license-list.ja.html に詳細に記載されています。 さて、詳細は省きますが、私は色々なライセンスを調査し、自分のソフトウェ アに適合できるライセンスを、BSD Copyright(以下、[BSD]) と GNU General Public License(以下、[GPL]) の2つに絞り込みました。 しかし、ここからが大変でした。 ----- [BSD]と[GPL]は、ある種の宗教論争のようになっており、検索エンジンで該 当のサイトを探して見ても、どうも要領を得ませんでした。 そこで、自分なりにライセンスを読み下して解釈をしてみました。 両方のライセンスに共通するところは、以下のセンテンスです。 [BSD] の場合、 本ソフトウェア XXXXX が、特定の目的に適う製品であるかのような、 いかなる明示された保証はありません。また、なにか保証があるよう な含みを持たせた一切の保証の類からの責任もすべて拒否します。 [GPL]の場合、 本ソフトウェア XXXXX の頒布にあたっては、市場性及び特定目的適 合性についての暗黙の保証を含めて、いかなる保証も行いません。 このように、ソフトウェアが発生させる結果に対する、全面的な免責の宣言 という点において共通です。 ところが、この両者が決定的に違うところは、このソフトウェアの「派生物」 の取り扱いです。 「派生物」とは、例えば、誰かが私の作成したソースコードの一部、あるい は全部を使って開発したソフトウェアなどが、これに当たります。 「派生物」を、最も意地悪く、しかし、的確に表現するのであれば、 「盗作物」 ですが、まあ、それはさておき、 [BSD] の場合、 - このソフトウェアを、どのように使おうが構わん。 - このソフトウェアのコードを勝手に変更してもいいし、このソフト ウェア、あるいは変更したソフトウェアで商売しても構わん。 - その変更したコードは公開しなくてもいい。 - その変更したコードは、どんなライセンスをしようが構わん。 この果てしなき大らかさ。 『持ってけ!ドロボー!!』 が、[BSD] の基本思想です。 ----- 以下、若草OpenBSD友の会 http://www.openbsd.ics.nara-wu.ac.jp/wakakusa/ の、鴨 浩靖 様より頂戴したコメント (コメントここから) BSDスタイルライセンスの精神を私なりに身も蓋もなく表現しますと、以下 のようになります。 何をしようとあなたの勝手である。ただし、 1. あなたのすることに、私を巻き込むな。 2. 私の名誉を尊重せよ。 学術研究の成果を公表する際の態度そのものですので、アカデミアの住人に は使いやすいライセンスです。 (コメントここまで) ----- さて一方、[GPL]ですが、 [GPL] の場合、 - このソフトウェアを、どのように使おうが構わん。 - このソフトウェアのコードを勝手に変更してもいいし、このソフト ウェア、あるいは変更したソフトウェアで商売しても構わん。 と、ここまでは、[BSD]と同じなのですが、 - その変更したコードは、変更前のコードと併わせて、*絶対に* 公 開しなくてはならない。 - その変更したコードは、[GPL]でライセンスしなくてはならない。 纏めますと、[GPL]のコードを、例え一行でも使ったプログラムは、自らも 必ず、[GPL]を使用し、ソースコードを完全公開にしなければならないと言う ことです。 滅茶苦茶な例を敢えて強行するのであれば、 ----- ストリッパーのお姉さんの肌の一部でも見た観客のおじさん達は、全 員裸にならなければならず、そのおじさんの肌の一部を見た他の誰も が、裸にならなければならない ----- ということです。 この[GPL]の野望は、まさしく 「全世界ヌーディスト計画」 と呼ぶにふさわしい、壮大な計画なのです。 冗談ではなく、GNU General Public License (GPL) を草起した、フリーソ フトウェアファンデーションの創立者、リチャード・ストールマン が、GNUプ ロジェクトについて書いた最初の文書「GNU 宣言」は、ソフトウェアの「全世 界ヌーディスト計画」を提唱したものでした。 --- ソフトウェアのコードは、(商用であろうがなかろうが)そもそも全部 ヌードであるべきなのだ --- というストールマンの信念が、リナース・トーバルズと彼を支えるコントリ ビュータ達に、20世紀最後の人間の善なる資質によって生み出された奇跡の産 物、ソースコード完全公開のオペレーティングシステム、Linux を生み出させ たのであります。 ----- この「全世界ヌーディスト計画」に対して、全ての女性に黒い布で顔を隠す ことを強要するかのごとく、イスラム原理主義政権的な方針で、いかなるソー スコードも隠しまくる、Mの頭文字で始まる会社のようなやり方は、 「全世界ブルカ(*1)計画」 と呼んでも良いかもしれません。 (*1)イスラム教の諸国で、女性が黒または白い大きな布で頭から足まですっぽ り覆っている布のこと。国によっては、女性が人前で顔や肌を見せること を許していない。 ----- 私自身は、ソフトウェアの世界が「ヌーディスト」になるべきか、「ブルカ」 になるべきかは、よく分かりません。 そして、これからこのソフトウェアの世界がどのように進んでいくのかも、 想像できません。 「ヌーディスト」の方のビジネスモデルは、レッドハット社やシグナス社の 成功例の他には、あまり聞いたことがありませんし、本で読んだりして、字面 としては理解できても、頭の中に入って、理路整然と理解できているとは到底 言えません。 ----- ただ一つ、はっきり言えることは、「全世界ブルカ計画」で、どれほど私が 苦しめられ、悲しまされ、酷い目に会い、頭に来たことかと言うことです。 原因不明のシステムダウン、それによって破壊された数限りないファイル達。 簡単にウィルスに汚染され、他のシステムへの感染源として世界中を混乱に落 しいれる愚劣な低品質なソフトウェア群。 私が管理しているパソコンに、ウィルス汚染の嫌疑をかけられ、HP社のネッ トワーク管理部門から、イーサネットケーブルの切り離しを命じられた時の屈 辱を、私は忘れません(しかも、冤罪)。 『ネットワークスペシャリストの、この江端が、あの会社のメーラやWebサー バのような、愚劣、低品位ソフトウェアを使うとでも思っているのか!馬鹿に するにも程がある!!』 と、悔し涙を流しながら、コロラドの大地に沈んでいく夕日を眺めた日々。 ----- 一方、「全世界ヌーディスト計画」で、どれほど素晴しいソフトウェア達に 巡り会い、その恩恵を授けられたことか知れません。 言うまでもなく、Linux。 自宅のパソコンでUNIXクローンが動き、Xウインドウが表示された時の感動 は忘れられません。 Emacsがない人生など考えられませんし、コンパイラのgccは勿論ですが、デ バッガgdbと連携して使用した時の、その高機能、高信頼な動作。 スクリプト言語Perl、ファイル共有ソフトSMB、メーリングリスト管理ソフ トのmajordomo、現在世界一使われているApache webサーバ、仕事でもApache のXMLパーサで泣かされた記憶はありません。 日本の方の開発したものでは、メーラのmew、検索エンジンNamazu、オブジェ クト指向スクリプト言語Ruby、そしてリアルタイムカーネルArt-Linux どれもこれも、私を本当に驚愕せしめ、心から感動させてくれたソフトウェ ア達です。 ----- 私が、今回この「全世界ヌーディスト計画」に乗っとって、自分の作ったソ フトウェアのソースコードを公開しようと思った理由は、ソフトウェアが本来 ある姿とは何か、と言うような哲学的な理由ではなく、オープンソースビジネ スモデルで儲けよう、と言うような利潤的な理由でもありません。 繰り返しになりますが、そもそも私は「オープンソース」の意義や目的を本 当に理解している訳ではないのです。 私は、ただ単純に、 ----- これだけの凄いソフトウェアを、何の条件もなく与えてくれたこの世 界に、その何億分の一でもお返しをすることができるかもしれない----- と思っただけです。 そして、私のヌード・・・ではなく、私の作ったソフトが、世界のどこかの パソコンで動いているんだなぁ、と言う事実は、技術者としての私を、うっと りさせてくれるのに、十分なものだったりするのです。 (本文章は、全文を掲載し内容を一切変更せず著者を明記する限りにおいて、 転載して頂いて構いません。)