前回までは,オープンソースとフリーソフトウエアはプロダクトとしては同じものだけど,どっちの呼び方をするかで捉え方が違うのだという話をしました。この「同じものだけど違う」ということは,本連載における「公理系」です。つまり,本連載はこの「同じものだけど違う」という捉え方の上に立って,いろいろ考えていきたいと思います。

 そして,この連載は「オープンソース」についての話ですから,この「公理系」の上でオープンソースの話をすることになります。ですから,「フリーソフトウエア」については,特に必要にならない限りは触れないで行こうと思います。あくまでもオープンソースとしての切り口で見て行きたいと思います。もっとも,プロダクトとしては同じものですし無関係の概念でもないですから,まるっきり避けて通ることも不可能ですが,あくまでも「軸足」はこうだということです。

 正直なところ,フリーソフトウエアは「哲学」のある世界ですし,ライセンスごと開発者ごとにその哲学は異なりますから,あまり変なことを書くと怒られそうなのでそっとしておきたいということもあります。また,自分もそういった開発者であることから,そっとしておいてほしいと思うということもあります。

 ということで,今回はこの「開発者」を理解する話から始めたいと思います。

「ハッカー(hacker)」とはどんな人種か

 フリーソフトウエアの「開発者」は多くの場合敬意を込めて「ハッカー」と呼ばれます。もちろんここで言う「ハッカー」とは,システムの破壊工作を行う「クラッカー(cracker)」とはイコールではありません*1。元々「ハッカー」というのは「包丁1本で大根を彫刻」してしまうようなことを,涼しい顔をしてサクっとやってしまうような,そういったクールな仕事をする人を指す言葉です*2。実際には「泳ぐ白鳥」のように涼しい顔をしながら,水面下では必死に足をばたつかせていたりするのが実態だったりするわけですが,何にせよ「凄い技」を見せてくれることは確かです。確かに良くできたフリーソフトウエアは「凄い技」であることは少なくありません。

 このハッカーには「3つの美徳」があるとされています。それは,

  • 無精
  • 短気
  • 傲慢

 です。

 これだけ見ると,なんと言うか「とんでもない奴」がプロファイルされてるように見えますが,それぞれに理由がありますのでちょっと書いておきます。

無精

 面倒くさいことはしないのが無精です。ここで言うところの「面倒くさいこと」というのは,大抵は非生産的と言われる単純労働を指します。例えば,「テキストファイルの各行の頭に3つ空白を入れる」というような問題があったとすると,エディタを開いて1行1行丹念に空白を入れて行くのは,「面倒くさいこと」です。ハッカーは多分

$ sed -f 's/^/   /g'

 とやることでしょう。sedの使い方を知らないハッカーなら(そんな人がいるとは思えませんが),perlなりCなりでプログラムを書くかも知れません。元のテキストがそんなに長くなくて,いちいちエディタで直す時間がそのプログラムを作る時間より短いということになっても,ハッカーは面倒くさいということでプログラムを書くことを選ぶでしょう。

短気

 時間のかかることを嫌うのが短気です。ここで言うところの「時間のかかること」とは,自分が問題を解くことだったり,計算機が問題を解くことだったりといろいろです。例えば,「処理は遅いけど早く書けるプログラム」と「処理は速いけど書くのに時間がかかるプログラム」のどっちを選ぶかと言えば,イライラする時間が短い方を選ぶわけです。そういった意味では,perlは「程々の速度で動くものが程々の手間で書ける」という点でハッカー好みです。

傲慢

 あらゆることが自分の支配下にあるという態度が傲慢です。ここで言うところの「あらゆること」とは,大抵はハッカーの作るソフトウエア自体です。と,同時にそれは自分の思考が正しいと信じることでもあります。だから,ハッカーに「○○の××はおかしい」と行ったところで,聞く耳は持たないのが普通です。せいぜい「まずパッチ送って来い。話はそれからだ」でしょう。なぜなら,それを聞くことによって彼/彼女の「哲学」が侵されるだけではなく,ソフトウエアの方針も崩してしまいかねないからです。


 理由を見ると,確かに最もではありますが,それでも無精で短気で傲慢となると,とても利用者視点に立つ姿はできません。もちろん,ハッカーの中にも世間とのバランスを取りながら上手にこれら「美徳」を守る人もいますが,大抵はそうではありません。theo(Theo de Raadt)やrms(Richard M. Stallman)やlinusやdjb(Daniel J. Bernstein)のようなひとクセもふたクセもあるような,そんな人がほとんどです。利用者の視点に立つどころか,利用者の方が逃げ出す... どころか,ハッカー同志でさえ敬遠するような,そういった人達が優秀なハッカーとして評価されているわけです。

 彼等の作るものは優れていますし,「フリーソフトウエア」的には確固とした態度は大切です。そういった意味では,これらの「美徳」はまさしく美徳であり,日本古来の「職人」の姿に似たものがあります。ですから,これらの美徳は「職人気質」の言い換えだとも言えるわけです。

 と同時に,こういった職人気質では,「利用者視点」というのは難しいとも言えます。少なくとも利用者と直接会話は難しいでしょう。職人の世界ではこういった「人当たりの悪さ」も芸風の一つだと理解してもらえますが,「外の世界」ではなかなかそうも行きません。「炎上」させてしまいかねません。

 ついでに「古い格言」を持って来るなら,「優れたハッカーはドキュメントを残さない」ものとされています。そして,大抵のハッカーは「傲慢」にもそれを正当だと言い張るものです。「ソースを使え」と。

*1 「hack」と「crack」は独立した概念です。crackするhackerもいれば,hackしないcrackerもいます。しばしば「友達にいる」とされる「スーパーハッカー」はcrackするhackerですし,最近のcrackの多くはhackしていない「script kiddy」の手によるものです。

*2 個人的には山形浩生氏の「Hackについて」の解説が好みです
http://cruel.org/freeware/hack.html