プログラマ35歳定年説というのがあるそうです。
実際に僕は35歳でめでたく定年となりました。
僕のプログラマ人生はこんな感じで始まって、ついひと月前に終わりました。
21歳、大学4年になるときにはじめてMacを買いました。
最初のマシンはLCIII。しばらくしてTHINK Cっていう環境でC言語を勉強し始めました。最初の教科書は“Macintosh C Programming Primer”。Dave Mark のノリノリの解説が素晴らしく、日本のプログラミング入門書とは一線を画す素晴らしい本でした。でもPointer とHandle の概念がいまひとつ理解できませんでした。
22歳、大学院に入ってC++を覚えました。THINK Class Libraryっていうフレームワークを使って簡単な周波数解析ツールを書きました。その頃使っていたのはQuadra700。僕にとっては最高にかっこいいMacです。
23歳、大学院にいる間、寝る間も惜しんでプログラムを書きました。みなとみらいでデートする度にランドマークタワーの有隣堂で洋書を買い漁ってました。Inside Mac が全部揃っている珍しい本屋さんでした。
24歳、今の会社に入ってすぐにCodeWarriorとPowerMac 7600を買いました。買いましたといってもここまで全部学校で必要とか出世払いとか適当なことを言って親や祖母に買ってもらってました。そこからしばらくプライベートではPowerPlantというフレームワークとおつきあい。仕事ではMPWでした。
MPWはコンパイルもリンクも遅くて、makeファイルを自分でメンテしなきゃいけないという、今では考えられないというか、Appleの製品とは思えないほど使いこなすのが大変な環境でした。当時の製品をクリーンビルドするには8時間必要でした。会社帰りにビルドを開始して翌朝ビルドエラーになっていたりすると朝からチームの雰囲気は最低でした。
会社に入って最初に書いたのがCDEFでした。今でいうリトルアローのコードを書きました。ハンドルをロックするのになんとなく気を利かせたつもりでHLockHiを使っていたら、部長からHLockで十分と言われました。「そうか、そんなに気を使う必要はないのか」と思ったのが印象に残っています。
25歳、会社が渋谷から日吉に引っ越しました。まだまだMPWのままですが、CPUが早くなったおかげでビルドもずっと早くなりました。
26歳、Power Mac G3 (Blue&White)を買いました。生まれて初めてカードで買い物をしたのがこのマシンです。横浜のソフマップで買おうとカードを出したらカード会社と電話で話をさせられました。作ってから何年も使っていないカードでいきなり高額なものを買ったから怪しいと思ったみたいです。このマシンは素晴らしかったのですが、ADB をサポートしていなかったのでADB→USB変換アダプタを使って、Apple Extended Keyboard II(もちろんカナなし)をつないでいました。Quadraを手に入れたときから誰が何と言おうとこのキーボードのタッチしか許せませんでした。今では最初からついているJISキーボードを何の文句も言わずに使ってますが、当時はなんであんなにこだわっていたのかわかりません。
27歳、Mac OS Xの暗黒の時代がやってきました。恐怖のDeveloper Preview の時代です。この年に結婚もしました。僕はワープロチームからインプットメソッドチームに移りました。隣にいた後輩はこっそりとProject Builder でObjective-Cのコードを書いていました。僕はCodeWarrior を貫きました。彼と衝突したこともありましたが、今では彼のやり方が正しかったと思います。
28歳、CodeWarrior を使ってなんとかMac OS X Public Beta に間に合わせることができました。昇進もしたような気がします。当時のコードはほとんど残っていませんが、いまでもインプットメソッドのコンポーネントだけはC++で書いてあります。この歳に長女が生まれました。
29歳、Mac OS X v10.0 (Cheetah)が出ました。その頃からProject Builder を使ってMach-O でビルドするようになりました。Objective-C もその頃から使い始めました。Mac OS X v10.1(Puma)が出て少し使えるOSになりました。
30歳、ヒラギノの文字を全部使える画期的な製品をリリースしました。なんでそんなものを作ることにしたのか良く覚えていません。社内のアイディアを書き込む掲示板のようなところになんとなく、OpenType対応しよう!と書き込んだのがきっかけのような気がします。そのアイディアがいつの間にか20,000グリフ(最初は15,000グリフ)全部をインプットメソッドから入力できるっていう画期的なものに成長していきました。プライベートでフォントのラスタライザを書いたりしていたので実装は比較的スムーズにできました。ワープロもインプットメソッドも書いたことがあるおかげで、両者の間でやりとりする独自の方法も簡単に書けました。ただし、CFMベースのワープロからQuartzのレンダリングを呼び出したり、独自に行っていたPDFへエンベッドするのは大変だったと思います。当時その辺を担当していた人はよくやったなぁと感心します。
そんなこんなでMacworld Tokyo 2002 のKeynote でデモをするチャンスがやってきました。これはやってきたというよりもつかみ取ったというのが正解かもしれません。Apple から誘いがあったのですが、コンペのような感じで、会社からはどうせだめだからやめとけと言われました。僕はあきらめずに毎日のようにデモのコンテンツを直してはApple に送り、最終的にデモする機会を得ました。ここで得られた教訓は「絶対にあきらめない」こと。画期的なフィーチャーとKeynote でのデモのおかげで自分の作った製品は本当に良く売れました。Mac OS X v10.2(Jaguar)も出ました。
31歳、このあたりからワープロとインプットメソッドの両方を統括する役になりました。2度目の昇進もこの歳だったような気がします。長男も生まれました。インプットメソッドのコードはほとんどObjective-C になりました。僕はプロデューサとして全体を統括しながら、あいかわらずインプットメソッドのコードのほとんどを書いていました(もちろんエンジンは別ですが)。チームのメンバーは全員先輩でリーダーとしてチームを引っ張るのがしんどかったです。Mac OS X v10.3(Panther)が出ました。開発環境もXcode になりました。
32歳、この頃は会社でインプットメソッドのコードを書きながら、プライベートではワープロのコアの部分を書いていました。独立してワープロを作ろうと思ってました。新しいワープロを作るのは大変なリスクがあります。こんなことを初めて周りを巻き込んでやり遂げるのは無理だと思ってました。もうダメだと思い退職願を書きました。でも当時の社長からみんなに話してみろと言われて話しました。みんな盛り上がりました。退職届は引っ込めましたが、それでも新しいプロジェクトは始まりませんでした。
33歳、レガシーを引きずったワープロの最後のバージョンをリリースしました。最後だからということで細かい部分も丁寧に仕上げました。これでプログラマ人生8回目のマスターとなりました。マスターはスムーズにこなせるようになりました。必ず信じられないようなバグが出ます。出ることがわかっているから出たら終わりです。みんなでいじめていい感じにバグが出たらマスターです。さあ、ここからようやく新しいプロジェクトがスタートです。メンバーも増えて、一からワープロを書き始めました。
34歳、一年足らずで一応ワープロと呼べるものができ上がりました。ずいぶんコードを書きました。プライベートで書いたコードは惜しみなく提供しました。おかげで足りない機能はたくさんあるけどベースはしっかりとしたものになりました。それまでバージョンとは比較にならないパフォーマンスと精度を手に入れました。インプットメソッドも面白いインターフェースを備えたものになりました。こんな風に仕事ができるのはこの会社しかないなぁと思います。プロデューサとしてチームを引っ張ることもわかってきました。
諸般の事情で短期間のうちにバージョンアップすることにしました。ここでもたくさんコードを書きました。プロデューサとプログラマの二足のわらじはきついけどコードを書いてバグをとるのは最高に楽しい仕事だと思います。
35歳、バージョンアップの最後の仕上げの中、35歳になりました。マスターと平行して昇進試験を受けました。昇進試験の面接で会社(親会社)のトップからこの先どうするのか聞かれました。しばらく前から自分の役割をずっと考えていて、もうコードは書かないと宣言しました。次の世代を育てることが大切だというのもあるけれど、自分の可能性の残り半分がずっと気になっていたので、そっちの可能性を試してみたくなりました。
というわけでめでたく定年となりました。会社では「コード書きてぇ」なんて言ってますが、不思議なことに全然書きたくなりません、というか全部忘れました。誰かが書いてくれるほうが楽でいいです 8-)
I was impressed to your wonderful life.
Posted by: kouki | 09/25/2010 at 20:23