「天才」。世の中にはそう呼ばれている人たちがいる。本連載では、これまで数々の偉業を成し遂げてきた天才プログラマに、スキルやキャリアに関する10の質問をする。彼/彼女らのプログラマとしての考え方・生き方とは。天才の言動から見えることとは何か。
第1回の天才プログラマは、いわずと知れたLispの大御所ハッカー、竹内郁雄氏。
竹内氏の業績をひと言で語るのは難しい。1971〜1973年、日本電信電話公社(現NTT) 武蔵野電気通信研究所 基礎研究部において、Lispを使った自然言語処理システムの研究を行い、1974〜1979年、同研究所で人工知能研究を支援するための記号処理システムを次々に開発。1980〜1986年、同研究所などで同社比約1000倍の規模の記号処理システムTAO/ELISを、ハードウェアからOS、応用ソフトまで一貫して設計・実装した。ELISについては竹内氏の功績を含めコンピュータ博物館にも記されている。また、竹内氏の考案した「tak関数」と「Takeuchi関数」は、Lispを発明したジョン・マッカーシー(John McCarthy)を通じて全世界のLispコミュニティで知られるようになった。
30歳代後半からは、異分野交流に関心を持ち『現代思想』や『月刊ASCII』で、異分野の専門家と対談・執筆も手掛けてきた。こうした異分野への探究心は、現在の東京大学情報理工学系研究科で行っているIT防災の研究開発や、情報処理推進機構(IPA)の若き天才プログラマの発掘・育成をする「未踏IT人材発掘・育成事業」、日本のITベンチャー育成を考える「Vivid Software Vision」にもつながっている。
インターネット上では「あまりにもスケールが大きい人なので従来の教育からはみ出してしまう」「Lispの神さま」「あのバイタリティにはかなわない」と、ただならぬ存在と評されているようだ。小学生のころ、「8÷8」の答えが「0」だといい張り先生を困らせたという逸話もある(講演資料「異分野交流と異分野漫遊」竹内郁雄著)。いったい、どんなプログラマなのか。
1.――平日と休日ごとに、1日のスケジュールを教えてください
竹内氏 現在は特に決まったスケジュールはないです。寝るのは毎日遅く、最近は土日が激しくつぶれています。2〜3年前までは毎週日曜日サッカーをしていました。
私が人生をかけて本気でプログラムを書いたのは45歳前後。「プログラマ35歳定年説」からはるかに後でした(表1)。
時間 | 行動 |
---|---|
10〜11時 | 起床。研究所にてトースターでパンを焼いて朝食を取る |
11時45分 | グラウンドに出る |
12〜13時 | 昼休みのサッカーをする |
13〜14時 | シャワーを浴びて昼食(カキ氷)を取る |
14時〜深夜 | プログラミング |
表1 竹内氏が人生をかけて本気でプログラムを書いていたという45歳前後の1日のスケジュール |
(表1は)完全な夜型生活です。ところが、開発で一番重要な時期、鬼のように開発をしていたある3カ月間は朝型になりました。理由は朝の方が仕事が進むからです。しかし1日の始まりは夜から(表2)。
時間 | 行動 |
---|---|
20〜0時 | ビールを飲みながら一気呵成(かせい)にコードを書く |
翌朝 8時 | 前日のコードにドキュメントを付けながらプログラムを修正していく |
11時45分 | グラウンドに出る |
12〜13時 | サッカーをする |
13〜14時 | シャワーを浴びて昼食(カキ氷)を取る |
14〜20時 | 16進ダンプでデバッグをする |
表2 人生で最も鬼のように開発をしていたというある3カ月間の1日のスケジュール |
当時はアセンブラより低レベルなマイクロプログラムを毎日書いていました。酔っ払っているから書くコードはいいかげん。だから次の朝コメントを付けながら修正をして仕上げていきます。私は、「x=x+1」というコードに「xに1増やす」といったアホなコメントは書きません。コメントに心を込めます。コメントはプログラム自体よりもたくさん書きます。それを頭の冴えた午前中にやるのです。その後はいつもどおりサッカーをしますが、そこは何が何でも変えない。
2.――プログラミングで行き詰ったときはどうしますか?
竹内氏 あまりそんな経験はないけれど、50歳までは、デバッグで行き詰ったときは運動(つまりサッカー)が一番。また、運動後のシャワーでバグが取れたこともしばしば。つまり、悩んだ後は気分転換すると解が自然にわいてきます。
3.――プログラマとしてスキルアップのために行っていること、身に付けたい技術は何ですか?
竹内氏 「必要は発明の母」。人と違うこと、原点に立ち戻ることをいつも気にしながら、最近は若い人たちの才能が発するオーラをできるだけ吸い込んで生活するようにしています。行き詰ったときにそこの背景にある理論に立ち戻る。仕事が忙しいとなかなかできないですが「原点に立ち戻ること」は大学の講義でも必ずいっていることです。
4.――最近作って面白かったプログラムを教えてください
竹内氏 去年の「夏のプログラミング・シンポジウム」で、火星を始めとする惑星のカレンダーを作るプログラムを作りました(より正確には、いろんな惑星のカレンダーを作るプログラムを作るプログラムを作りました)。若い人たちの才能に刺激を受けようとシンポジウムに参加したのですが、一般発表をしない人は、好きな言語でカレンダーのプログラムを作るという課題がありました。人と同じことをしてもつまらないので、原点に立ち戻り考えました。「地球のカレンダーは12カ月あるけど、なぜ12カ月あるのか?」「なぜ7曜日なんだ?」「火星に人が住んでいたら、カレンダーはどうなる?」「惑星は自転軸が適当な角度傾いて太陽の周りを公転しているから四季がある。つまり月は4の倍数になるのが必然……」。惑星の仕組みが分かって初めてプログラムに取り掛かれるのです。原点に立ち戻れば何でもできると思うのです。いろんな惑星のカレンダーを作るプログラム(を作るプログラム)は本当に面白かった(半日かかってしまいましたが……)。
Copyright © ITmedia, Inc. All Rights Reserved.