小飼弾です。前回から1ヶ月以上開いてしまいましたが、ご機嫌はいかがでしょうか。

 前回、私は以下のように書きました。

小飼弾 404 Title Not Found : #3 プログラマーの三大美徳その3「傲慢」
プログラミングの世界で傲慢を手に入れる最も簡単な方法は何でしょうか?

 懸命な読者の方は、もしかして気がついていらっしゃるかも知れません。

 オープンソースに関わることです。

 プログラマーの三大美徳、「怠惰」、「短気」、そして「傲慢」のうち、傲慢のみは他者がいないと成り立たないと私は書きました。プログラマーとして、その他者との関わりを最も簡単に得る方法がオープンソースなのです。

 もちろん、オープンソースのみが、プログラマーと他者が関わる方法ではありません。プログラマーというのは、その作品であるプログラムを通して、必ずユーザーとは関わりを持つのです。自分用のプログラムしか書いたことのない人ならとにかく、プログラミングを日々の糧としている「プロ」グラマーであれば、「顧客で手一杯」とか、「上司が許さない」とか、オープンソースに関わらない理由をすでにいくつもお持ちかもしれません。

 オープンソースは強制ではありませんから、忙しい人はとりあえず後回しにしていただいて構いません。しかし暇なときに、少し思い出して欲しいのです。

 あなたは、誰のためにプログラムを書いているのですか、と。

 今のあなたはとにかく、あなたがはじめてプログラムを書いたとき、それは誰のためだったでしょう?

 あなた自身のためだったはずです。

 そのうち、それが楽しくなりだして、あなたはいろいろなプログラムを書くようになります。そのうち、それを職業にしてもいいと思うようになり、あなたは晴れてプログラマーとして就職し、今度は顧客のためにプログラムを書くようになります。

 今のあなたは、プログラムを書くことを楽しんでいますか?

 もし楽しくなかったら、オープンソースのことを思い出して下さい。

 オープンソースとは、あくまであなたがあなた自身のために書いたプログラムを、ソースコードを含めて公開することを言います。「ただで公開するなんてなんと気前がいいのだ」とは実は少し違います。あくまであなたが楽しんで書いたプログラムを、あなたが楽しんだ結果であるプログラムのみならず、あなたが楽しんだ過程であるソースコードまで公開することをオープンソースと呼ぶのです。

 実はオープンソース以前、こうしたプログラムは Free Software と呼ばれていました。あの Richard Stallman が定義した概念です。Freeware と呼んではいけません。あくまで Free Software です。なぜ Freeware と読んでは行けないかといえば、Freewareには、「自由なソフトウェア」ではなく「無料ソフトウェア」という概念があるからです。Free Software はあくまで「自由なソフトウェア」なのです。

 崇高ですが、ちょっと堅苦しいですね。

 Eric Raymond もそう思ったようです。彼が Open Source という、思想ではなく形態に基づいた名前をわざわざ用意した背景にはこのことがあります*0。Free Software の思想も確かに傲慢ではありますが、それは気の長短はさておき、かなりの勤勉さが要求される傲慢です。「もっと怠惰に出来ないか」というのが Open Source なのです。

 オープンソースでは、一番大事なのは参加者がそれを楽しむことです。ソースの巧緻は実は二の次以降でいい。はっきり言って学芸会レベルだって構わない。大事なのは、それを恥ずかしがらずに公開してしまうことです。

 そうすると、まわりの視線がやはり気になります。実際にケチをつける人だって出てきます。引っ込み思案のあなたは、そうすると「二度と恥をかくものか」と思ってしまうかも知れません。

 しかし、そこで隠れてはいけません。頭をかきつつも、よりかっこよくした次のバージョンを出すのです。またしてもソース付きで。考えてもみてください。ここでは「必要な機能がない」だとか「バグだらけ」というお客さんのクレームは心配しなくてもいいのです。なにしろフリーですから、外野は野次は言えても文句は言えないのです。

 そうこうしているうちに、あなたにも「かっこいいプログラムとはどういうプログラムか」ということがだんだん分かってきます。ありがたいことに、すでに多くのかっこいいオープンソースプログラムが世の中にはいくつもあるのです。自分の気に入った所は正々堂々とまねましょう。著作権の心配も不要です。Yesterdayを歌って逮捕される心配は少なくともオープンソースの世界では昨日どころかおとといの話です。

 そうやっていくと、あなたのプログラムはいつの間にやら学芸会レベルから学会レベルになるのです。時分のためにやっていたことが人様の役にも立つようになるのです。これが楽しくないわけがありません。

 しかも、オープンソースであるが故に、自分で全てを書く必要すらないのです。すでに人が書いてくれたところは、そのまま使ってかまわないのです。ただし、人が書いた部分は、必ず誰が書いたかがわかるようにしておいてください。これがオープンソースで一番重要なルールです。

 もちろん、いきなりLAMP*1級の大きなプロジェクトを立ち上げるのは無謀ですし、オープンソースが社会基盤ともなっている昨今では、CPAN*2にモジュールをアップロードしたり、SourceForge*3でプロジェクトを立ち上げたりというのも少しこわい気もします。

 そんな時は、blogあたりからはじめるのはいかがでしょうか?そう。blogも立派なオープンソースです。ここにちょっとしたコードを書き連ねて行くのです。そうするとコメントやトラックバックやソーシャルブックマークでいろいろなフィードバックをもらえます。そうやって自信をつけたからもう少し大きな舞台に上がって行けばいいのです。

 また、大きな舞台に慣れてからでも、こうした小さな舞台というのは有用です。RubyのMatzさんもbloggerですし*3、もちろん私もそうです。今や♪小さなものから大きなものまで動かす力だオープンソース、となったのは、この敷居の低さがあるのです。

 オープンソースだからといって気構えすることはないのです。自分が書きたいものを自分が書きたいときに自分が書きたいだけかけばいいのです。

 こうして見ると、オープンソースというのはなかなかよさそうだなということを感じとっていただけたかと思うのですが、もちろんいいことばかりではありません。次回はオープンソースの問題をとりあげます。今度は一ヶ月ではなく一週間後の予定です。

  1. 詳しくはFree As in Freedom: Richard Stallman's Crusade for Free Softwareをご覧下さい。まだ日本語版はないようですが、この手の本としてはかなり読みやすいと思います。
  2. Linux, Apache, MySQL, and Programming Languages
  3. http://www.cpan.org/
  4. http://sourceforge.jp/
  5. http://www.rubyist.net/~matz/
本連載に関するコメントおよびTrackbackは、こちらでも受け付けております。