この記事は小飼弾氏が,2008年3月24日に発売した日経ソフトウエア2008年5月号の特集「はじめてのプログラミング」向けに著したものの再掲です。記述された内容は,執筆当時の情報に基づいています。

 あなた,プログラマになりたいんですって?

 本当に? 本当に? もう一度尋ねます。本当に?

 3回も念を押したのには,理由があります。このあと,さらに念を押します。この手紙を読み進めれば,あなたにもその理由がおわかりいただけるかと思います。


 「日経ソフトウエア」を読んでいただいているからには,あなたは「プログラマ」という職業について,ある程度のイメージをお持ちだと思います。プログラマ,プログラムを作る人。では,プログラムって何でしょうか?

 その定義は,これをお読みになった人の数かそれ以上存在しますが,私にとっての定義は「コンピュータが仕事をできるようにすること」です。ご存じだとは思いますが,コンピュータは,プログラムなしには何もできません。このことはコンピュータの初心者を対象とした本には必ず書いてありますが,実感するのは昔ほど簡単ではなくなりました。

 なぜか? すでにほとんどのコンピュータは,プログラムが入った状態で売られているからです。いまどき,Webブラウザの入っていないパソコンは存在しないでしょう。メーカーに買ったパソコンをユーザー登録する時点で,すでにそのWebブラウザのお世話になっていたりします。買うパソコンによっては,オフィス・スイートもインストール済みです。ワープロも表計算もプレゼンテーションも,ソフトウエアをインストールする手間すら不要です。

 いや,それらがなくたって,今やWebアプリケーションがあります。地球の裏のだれかが書いたプログラムでも,書かれたその日に,あなたがそれを使うことすらできます。

 コンピュータは,何もしないでも,かなりの仕事ができるようになっているのです。「コンピュータが仕事をできるようにすること」がプログラマの仕事なら,すでにプログラマの仕事は,かなり「終わっている」ようにも見えます。

 そう。あなたは,普通の人でも使えるプログラムがすでに山のようにあふれているこの時代に,プログラマになろうとしているのです。その意味を,一緒に考えていきたいのです。


 「Write once, run anywhere.」これは,米Sun MicrosystemsがJavaを売り込むために,1990年代半ばに唱えたキャッチフレーズです。これは,ソフトウエアの本質でもあります。

 ハードウエアなら,こうはなりません。まだ持っていない人の手にそれを届けるためには,もう1台,だれかが作らなければいけません。創っただけではなくて,作り続けないとダメなのです。裏を返せば,創る仕事だけではなく,作り続ける仕事もあります。

 ソフトウエアは違います。だれかがそれを一回創ってしまえば,残りの人はほとんどもう何もしなくてもいいのです。もちろん,「新しいソフトウエアができた」と宣伝しなければほかの人は使ってくれないでしょうが,それはプログラマの仕事ではありませんよね。ましてやそれがWebアプリケーションだった場合は,検索エンジンやソーシャル・ブックマークが勝手に宣伝してくれたりします。

 これが何を意味するか? プログラマ,特に職業プログラマとして求められる技能が,時代を追うごとに高くなっていくということです。


 ほかの仕事とプログラマが,決定的に違うのはこの点です。鍛冶(かじ)でも漆器でも,現在の名工が,過去の名工より腕が優れているとは限りません。宮大工に言わせると,釘(くぎ)は,飛鳥時代のもののほうが江戸時代よりずっと優れているそうです。優れているに越したことはありませんが,過去より優れていることを努力目標にとどめようと思えばそれも可能です。

 しかし,ソフトウエアの世界においては,過去より優れているのは努力目標ではなく,最低条件です。昔は電卓を動かすプログラムを書ければ飯が食えました。今やそんなことは検索エンジンの検索窓でもできてしまいます。かつてはゲームセンタ ーで若者の財布をすっからかんにしたゲームだって,今やケータイでただで遊べるようになっています。

 プログラムは,書いた瞬間から陳腐化していきます。