小飼弾です。ご機嫌はいかがでしょうか。

 今回はプログラマーの三大美徳の最後、「傲慢」を取り上げます。

  1. 怠慢(Laziness)
  2. 短気(Impatience)
  3. 傲慢(Hubris)

 前回同様、まずLarry Wallの定義を紹介してから、本題に入ることにします。彼はHubrisをこう定義しています

HUBRIS
Excessive pride, the sort of thing Zeus zaps you for. Also the quality that makes you write (and maintain) programs that other people won't want to say bad things about. Hence, the third great virtue of a programmer.

訳すとこんな感じしょうか。

傲慢
神罰が下るほどの過剰な自尊心。または人様に対して恥ずかしくないプログラムを書き、また保守しようとする気質。よって、プログラマーの第三の美徳である。

さて、私は前回「JavaScriptには傲慢さが足りない」という言い方をしました。その例の一つとして、変数展開の例を挙げましたが、実は同様のことは最初のバージョンのJavaScriptではもっと難しかったのです。なにしろ、Netscape Navigator 2.0に搭載されていた最初のバージョンでは、replace()メソッドがなかったのです。それに相当する機能は、プログラマーの方で別途用意する必要がありました。

もしBrendan EichをはじめとするJavaScriptの開発者たちがもっと傲慢であったら、当時使われていた他のプログラミング言語の機能をはじめから盛り込み、その結果JavaScriptはもっと「傲慢な人々」にも支持されたでしょう。

ここで言う「傲慢な人々」とは、ハッカーのことです。ハッカーには現在いい意味と悪い意味がありますが、ここではよい方の意味*0、すなわち

ハッカー - Wikipedia
ハッカー (hacker) とはコンピュータや電気回路一般について常人より深い技術的知識を持ち、その知識を利用して技術的な課題に対して最小限の手間で最大の効果を生み出す人々のこと。

の意味で用いています。このハッカーたちは、当然他のプログラミング言語についての知識も詳しく、そして当時のJavaScriptは、上で述べたとおり他のプログラミング言語と比較してずいぶんと機能も仕様も貧弱なものでした。その結果ハッカーたちはあまりJavaScriptを使わなかったのです。

さらにそれに追い打ちをかけたのが、いわゆるブラウザー戦争です。Netscape Navigatorと Microsoft Internet Explorerは熾烈なシェア争いを繰り広げましたが、この二つのブラウザー間に搭載されたJavascript*0 には非互換だったのです。非互換とは言っても、全く別の言語というほどのものではなく、方言ほどの違いではありますが、それでもブラウザーには人間ほどの融通性はないので、プログラマーにとっては非常に頭が痛い問題です。

その結果、どんな人々がJavaScriptを使ったかというと、Webページには詳しくてもプログラムには詳しくない、「勤勉」で「暢気」で「謙虚」な人々が、バナー広告を別ウィンドウに表示しまくったり、ウィンドウ下のステータスバーに変なメッセージを表示したりと、見た目は派手でもプログラム的にはどうでもいいことに使いまくったのです。そのため、一時期は「セキュリティ向上のためにJavaScriptはOffに」という風潮さえ生まれました。

この状況が変わったのは、皮肉にもブラウザー戦争にInternet Explorerが勝利を治めて、ウェプベージの多くが「IE専用」になってからでした。こうなると方言の差は気にならず、そうなって来るとJavaScriptの本来の機能をより活かしたプログラムも徐々に登場します。

そしてJavaScriptが「復権」したのが、Ajaxでした。これはAsynchronous Javascript and XMLの略ですが、今までと決定的に違うのは、JavaScriptから通信が出来ることでした。ちなみにそれを可能にしたXMLHttpRequest()が最初に搭載されたのは Internet Explorer でした。これにより、JavaScriptはやっと「外の世界」を手に入れたのです。

Firefox、Safari、Operaといった他のブラウザーがInternet Explorerに続いてこのXMLHttpRequest() を搭載し出すのと平行して、これを積極的に使ったWebサイトが登場し始めます。特に衝撃的だったのはGoogle Mapsだったでしょう。単に地図がブラウザー上でスクロールするのも画期的でしたが、それ以上に画期的だったのは、そのコンテンツを他のWeb Pageの中から直接使えるようになったことです。私のblogにも「404 Blog Not Found:javascript + perl - 住所でGoogle MapにアクセスするHack」のような実例があるので是非ご自身の目で確認してみて下さい。こうして、JavaScriptも今では多くのハッカーの支持を得るに至りました。

一つ気づいたでしょうか。JavaScriptがいつからよくなり出したか。そう。「外の世界」へアクセスできるようになってからなのです。「傲慢」で最も重要な点は、「外の世界」を意識することにあります。外の人は、自分たちが想定したのとは違う方法でプログラムを使うかもしれない。思えばブラウザー戦争の最中、両陣営の勝手なJavaScript拡張をユーザーがどう見ていたのかを両陣営が気にしていた様子はほとんどありませんでした。そして残念ながら、JavaScriptがここまでの地位を確立した今でも、JavaScriptは「統一」されないまま今に至っています。

怠惰と短気は自分一人でも成り立つ概念ですが、傲慢は他者がいないと成立しない概念です。そのため三大美徳の三番目ではありますが、最も得難い美徳と言えるかも知れません。

また、改めて三大美徳を振り返ると、これはプログラマーに限らず、どんな職業にも通じる美徳であることが伺えます。人は怠慢故にプログラムを書きはじめ、短気故にプログラムを書き続け、そして傲慢故にプログラムを直し続けるといったところでしょうか。その意味で、人は誰でも人生という名のプログラマーであるのかも知れません。

ところで、プログラミングの世界で傲慢を手に入れる最も簡単な方法は何でしょうか?次回はその方法を取り上げます。

  1. 悪い方は「クラッカー(cracker)
  2. Internet Explorer搭載のものは、正確名称はJScript
本連載に関するコメントおよびTrackbackは、こちらでも受け付けております。