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

 前回の記事では、私がタイトルを決めない理由についてお話しましたが、そうは言っても「プログラマー」というのは立派な肩書(title)の一つでもあります。というわけで今回はプログラマーとしての話題を扱います。

 プログラマーには、次の美徳が絶対に必要です。この美徳の一つでも欠く人は、プログラマーとなってはいけません。また、これらの美徳を欠いているにも関わらずプログラマーという職業に就いてしまった人は、今すぐ転職を考えましょう。それくらい重要な美徳です。

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

 「そんな人はプログラマーに限らず仕事ができないはず」と思ったあなたは「怠慢」で「短気」で「傲慢」な素質があるかも知れません。まずは怠慢から解説します。

 「ラクダ本」の愛称で親しまれている"Programming Perl"において、Larry WallはLazinessをこう定義しています

LAZINESS
The quality that makes you go to great effort to reduce overall energy expenditure. It makes you write labor-saving programs that other people will find useful, and document what you wrote so you don't have to answer so many questions about it. Hence, the first great virtue of a programmer.

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

怠慢
全体の労力を減らすために手間を惜しまない気質。この気質の持ち主は、役立つプログラムを書いてみんなの苦労を減らしたり、同じ質問に何度も答えなくてもいいように文書を書いたりする。よって、プログラマーの第一の美徳である。

これならばなんとなくわかります。工夫もなしに同じことを繰り返すタイプの「勤勉」は、プログラマーでなくてもいやなものです。とはいえ、「全体の労力を減らすために手間を惜しまない気質」とはこれまた抽象的。プログラマーというのは現実的な問題を、「プログラム」という形で抽象化してから、それを「実行」してもういちど具体的に解決するのが生業ですから、やはり実際に私としても皆さんに怠慢なところをお見せする必要があるでしょう。

例えば、日付の記入な書類というのはたくさんあります。本連載でも、記事の一番上に公開された日付が記載されます。それが一つや二つならまだしも、100も10,000も1,000,0000もあったら、いくら勤勉な人でもうんざりするはずですし、記入ミスも出てくることでしょう。

怠慢なプログラマーは、同じことを三回も繰り返せば、もうそれをコンピューターに押し付けたくなります。私も怠慢なので、実際に押し付けてみましょう。

ここでは、以下の文章で始まるページを毎日作成する必要があるとします。

2007年1月1日 社長、おはようございます。小飼弾です。

毎日これを手で打たなければならないというのは、怠慢な私には苦痛です。幸い私にはコンピューターがあります。これをコンピューターに押し付けるにあたっては、何をどうすればいいかを一旦コンピューターにもわかるように教えてあげなければなりません。それがプログラムです。プログラムを書くということは、コンピューターに仕事を押し付けるのと同義なのです。

ここでは、それをJavascriptを使って押し付けます。なぜなら本記事はWebページであり、Webページであればあなたのブラウザーが私の仕事をやってくれるからです。

まず、文書の方をよく見てみましょう。

2007年1月1日 社長、おはようございます。小飼弾です。

ここの部分を、あなたのブラウザーに書かせたいわけです。これは日付なので、まずはここの部分をコンピュータにわかりやすくしておいた方がよさそうです。とりあえずこうしてみました。

%date% 社長、おはようございます。小飼弾です。

こうした、あとでコンピューターによって書き直される文書をひな形(テンプレート)といいます。覚えておきましょう。

次に、この%date%の中に実際の日付が入るようにしたい。以下のようにプログラムを書きます。

function fill_form1_0(e){
  var date = '2007年1月1日';
  e.innerHTML = e.innerHTML.replace(/%date%/g, date);
}

ここでは、プログラムが何をしているのかはわからなくても結構です。以下の文書をクリックしてみて下さい。変わりましたか?

[%date%] 社長、おはようございます。小飼弾です。

変わりましたか?変わらないとしたらあなたのブラウザーのJavascriptをオンにしてみてください。変わった方、おめでとうございます。

でもちょっと待って下さい。プログラムをもう一度見てみましょう。'2007年1月1日'ってそのままプログラム中に書いてありますよね。これでは手間はそれほど減りません。日付を変える都度プログラムも書き直しですから。もっと工夫して見ましょう。

function fill_form1_1(e){
  var yyyy = document.getElementById('yyyy1').value;
  var mm   = document.getElementById('mm1').value;
  var dd   = document.getElementById('dd1').value;
  var date = yyyy + '年' + mm + '月' + dd + '日';
  e.innerHTML = e.innerHTML.replace(/%date%/g, date);
}

今度は日付はプログラムとは別に入力するようになっています。適当な日付を入力してから文書をクリックしてみましょう。

日付:

%date% 社長、おはようございます。小飼弾です。

これで、一度書いたプログラムで、文書なら何枚でも日付を更新できます。めでたしめでたし....

でしょうか?あなたの上司がやってきて、こう言いました。「うちの部署全員で使おう」。これでは部署に所属する人の数だけひな形を用意しなければなりません。どうしたらよいでしょう。

こうした状況を乗り切るためには、怠慢だけでは充分ではありません。三大美徳のその二、短気が必要となります。それでは「短気」とは何か?それは次回のお楽しみ。

本連載に関するコメントおよびTrackbackは、こちらでも受け付けております。