1960 年生まれ,独身フリー・プログラマの生態とは? 日経ソフトウエアの人気連載「フリー・プログラマの華麗な生活」からより抜きの記事をお送りします。2001年上旬の連載開始当初から,2007年に至るまでの生活を振り返って,週2回のペースで公開していく予定です。プログラミングに興味がある人もない人も,フリー・プログラマを目指している人もそうでない人も,“華麗”とはほど遠い,フリー・プログラマの生活をちょっと覗いてみませんか。

 今回は私の「遊び」について紹介しよう。ここで,華麗なナイト・ ライフや行動的なアウトドア・ライフの話になるのかな,と思った人 はまさかいないと思うが,その通りである。ここで言う遊びは,コン ピュータにひたすら向かうコンピュータ・ライフの一環である。

 と言っても,ゲームでもチャットでも掲示板でもない。目新しいラ イブラリのソースコードを入手して読んだり,サンプル・プログラム を書いてみたり,気になる標準規格を読んだり,サーバー・ソフトの 設定をいろいろと変更して実験したり,システムのインストール・デ ィスクを解析したり,ネットワークを流れるパケットをキャプチャして 解析したり,といった具合だ。ちなみに,こういう遊びを「ハッキン グ」と呼ぶ。ハッキングは破壊行為を伴う「クラッキング」とはまっ たく異なる。クラッキングは絶対にやってはいけないが,プログラマた るもの,ハッキングはやらなければならない。

 ハッキングの第一歩はリファレンス・マニュアル(技術仕様書)に 目を通すことだ(拍子抜けした人も多いかもしれないが)。あと,優秀 なソフトウエアのソースコードに目を通すこと。GNU Emacs,X Window,Perl といった有名なソフトウエアのソースコードはプログラ ミング・テクニックの宝庫である。何かわからないこと(でも,こう いったソフトウエアでは実現できていること)があると,ソースコード を見て内容を理解し,それを自分のプログラミングに活用する。これ が私の言うところの「遊び」である。

 私のコンピュータにはテーマごとに,こうした遊び専用のディレク トリが並んでいる。数えてみたら,なんと56 個もあった。こんなにた くさんのオモチャがいつも目の前に並んでいるなんて,私はなんて幸 せな人間なのだろう。これらのディレクトリの大部分は遊びのまま終 わるだろうが,いくつかは必ず花開き,実を結んでくれるに違いない。 最近光って見えるのはXML 関連のディレクトリだ。これまで仕事に使 ったことはないが,そろそろ出番かもしれない。

生き残るための嗅覚は遊びで培われる

 今さら何を,と言われそうだが,コンピュータ業界やソフトウエア 業界にはたくさんの新技術が現れ,そして消えていく。使える技術, 長続きする技術に乗っかることができれば仕事がうまくいくし,消え 去る技術のスキルを磨いても仕事にならない。「次はこれが来るぞ」と か「これは見通しが暗い」とか,そういう嗅覚を持っている人と,そ うでない人では,だいぶ苦労が異なってくるはずだ。

 「次に何が来るかわかれば苦労しないよ」という声が聞こえてきそう だが,それは違う。ハッキングをしていれば,大体のところはわかる。 技術には「流れ」がある。新しいものは何か,そのうち他から流用し たのはどこか,どう応用できてどう展開していくのか,開発元の姿勢 はどうなのか。ハッキングでこういうことが見えてくるのだ。

 技術は単に優秀だという理由だけで普及したり,長生きするわけで はない。かと言って,業界の“政治的背景”を熟知していればわかる というものでもない。たとえばOS/2。米IBM が本腰なんだから,と いうことでOS/2 のアプリケーション開発に資金をつぎ込んだ企業は 少なくないだろう。一方で,DOS 時代に独自のユーザー・インタフェ ースを誇ったばかりに,Windows への移行に失敗した企業もある。彼 らは「次はWindows だ」と見極めるのが遅れたのだ。

 インターネット関連技術は大当たりのクチである。私はWindows 3.1 のころにNCSA Mosaic でWeb を眺めたり,自分でWeb サーバー を立てて遊んでいたのだが,その遊びのおかげである大きなプロジェ クトに参加できた。そして実を言うと,独立した後は,もっぱらこの 仕事を通して出会った人たちとの縁で仕事をいただいてきたのである。 今や「フィーバー」って感じのJava もそうだ。Java のVM(仮想 マシン)アーキテクチャは,数十年来のコンピュータ科学者たちの, そしてコンピュータ使いたちの夢だった。こういうプロジェクトは過去 にもたくさんあったが,ことごとく討ち死にしてきた。私は最初にJava のドキュメントを読んだとき,オリジナルEmacs を作ったJames Gosling がやるというならいけるかもしれない,という気はしていた (ちなみに私はEmacs 使い)。ただ,Gosling だとリソース食い過ぎる かも,と思っていたら案の定,ってなところもある。

 最後に昔話を一つ。1980 年代後半,まだIETF(Internet Engineering Taskforce)のRFC(Request for Comments)が1000 に達していなかったころのお話だ。とあるソフト・ベンダーで私は,大 学生のアルバイトと一緒に仕事をしていた。彼は技術的な面でとても ハングリーだった。私と彼は使えそうなソフトウエアをダウンロードし てきてはビルドし,開発用マシンにインストールしていた。

 頼りになるのはソースコードに付いてくるドキュメントだけ。試行 錯誤を繰り返しながらの作業で,コンパイルが通らなければ自分でソ ースコードの手直しをするぐらいは当たり前だった。そうして習得し たシェル・スクリプトのトリックなどを使って見せると,彼は「すげ ーすげー」と言いながら,またたく間に吸収していった。

 ある日彼はこう言った。「コンピュータで遊べない人って,使えない やつが多いですよね」。そういうことだ。プログラミングのセンス,そ して技術に対する嗅覚は,遊びの中で培われるものなのだ。