力武健次――在野の孔明、問題解決の彼岸にみたプログラムの本質New Generation Chronicle(2/8 ページ)

» 2008年02月06日 04時00分 公開
[西尾泰三,ITmedia]

雑誌を読むならKY(コード読め)

Q11 一番最初に作成したプログラムはどんなものでしたか?

米国に住んだときに、親父に頼まれて、華氏と摂氏の変換表を印刷するコードをFORTRANで書いた。FORMAT文で1H[space](空行を開けずに行送り)とするところを1H0(空行を1行開けて行送り)としちゃったから、ずいぶん間延びした表になったけど。親父が勤務していた研究所のコンピュータで実行してくれて、ラインプリンタ用紙数センチ分にはなったっけ。滞在中はずいぶん役に立ったらしい。

Q12 最近メインで使っている言語は? なぜその言語に引かれたのですか?

Perl。それまではawkやCを使っていて、今でもたくさん使っているけれど、PerlはCでやりたいことをプロトタイピングするのに実は便利。システムコールとかよく似た名前で扱えるしね。後、よいライブラリがそろっている。DNS関連では、オラフ・コルクマン(Olaf Kolkman)のNet::DNSなんか結構素敵

 Cは知っておくと困らない。おかげで今もなんとかメシが食えてます。別に簡単な統計計算をCでやったっていい。32ビット同士のかけ算で、結果が64ビットであってほしい、というのをアセンブリ言語以外で書くのって結構面倒だからね。

 オブジェクト指向的なものにはイマイチ慣れなくて、使わずにいるんだけど、データや実行しているコードの流れさえつかめば、どういう言語でも対応はできると思う。Concurrency(同時に複数のコードが走っていること)を考えると、順番が書かれている通りに実行されるわけじゃないから、難しいけど。

 言語オタクにはなれなかったというか、劣等感があります。Prologとか、全然分かっていない。LISPのS式は、素晴らしいと思うし、教養の1つとして知っておくべきだと思うけど。JavaとCommon Lispが近縁なんだよな、そういえば。

 ツールというか、ゴチャマンとした処理系としては、Rは面白いと思ってます。プログラミング言語というよりは、統計処理関連アプリだけど :-)

Q13 自分が世に送り出したコードで、自信作があれば教えてください。

中学2年生のころ、GAME-APPLEコンパイラってのをリリースしました。これは力技で作っただけで、今ならyaccなりlex(bisonとflexかもしれないけど)があればできちゃうかもしれない。でも、手探りで努力した割にはよくできたと思う。アセンブリ言語でよくゲームもどきを作って遊んでました。

 その後、自分でやった作業というのは、ほとんどがパッチ当て。UUPC/extendedというソフトウェアの日本語パッチコードは、ずいぶんと好評だったらしいです。最後のフリーソフトはdbskkd-cdbかなあ。あれはダニエル・バーンスタインのcdbがあってはじめてできたものだから、パッチ程度の作品だよね。

 小飼さん同様、仕事としてやってきたのはライブラリの設計改良やシステム管理、後は論文のアイデアを検証するためのコードだから、全部裏方に属するものですね。だから「これが俺のコードだぜ」といえる単独の作品を持ってる人たちは偉いと思う。

Q14 自分のコーディングにクセやこだわりはありますか?

あまり変な省略はしないようにしてます。Cでそれをやると読めなくなっちゃうから。ほかの人と一緒に作業する場合は、コーディングの仕方も決まるからそれに合わせる。他人のクセからは学ぶことも多いし。

 自分一人で作業する場合、英語以外の言語は、そのプログラムのデータの例、あるいは処理対象(string literalなど)として表記する場合以外には、コメントは使いません。ASCIIを処理できないコンピュータはさすがにあまりないけれど、ほかの言語だと文字列処理だけでいろいろと面倒なことが起こる。

Q15 理解するのに苦労したコンピュータ関連のトピックは?

関数型言語って、いまだによく分かりません。抽象化は必要だろうけど、実際にアセンブリ言語に落ちたとき、あるいは最近のプロセッサならどうやって実行されるのか(投機的実行なんてのもあるわけだし)まで落ちるところまで簡単に見えないものは、あまり信じる気になれないんです。そういう意味では、LISPはセル構造が見えるから、まだ分かりやすい。今ではRISCなどで当たり前の、命令の非同期実行という考え方を理解するのにも、苦労した記憶があります

Q16 これを読んでおくと幸せになれるという開発者必携の一冊を教えてください(複数も可)

小飼さんに倣って、Programming Perlも挙げておきますが、個人的に好きなのはTCP/IP Illustrated(Volume 1、2、3)Advanced Programming in the UNIX Environment(2nd edition)、後はやはりThe C Programming Language(2nd edition)(C言語のバイブルK&Rね)かなあ。リチャード・スティーブン(W.Richard Stevens)は、たくさんいい仕事を残しましたね。故人なのが残念でなりません。伝記ものなら、スティーブン・レビィ(Steven Levy)『Hackers』がダントツでお勧め

 ところで、原著が英語だったら、英語で読みましょうね。日本語になったものは、別の代物だと思った方がいい。逆も同じで、原著が日本語の技術書は、日本語で読みます。読めるから。

Q17 ここは毎日ウオッチしている、というサイトはありますか?

Schneier on Securityかな。これを書いているブルース・シュナイアー(Bruce Schneier)は、昔彼の本の監訳をしたことがありますが、今も冴えてます。

Q18 開発系の雑誌で購読してるものはありますか?

ありません。コンピュータ関連の学会誌は、Communications ACMComputer Communication Reviewは紙で購読してますが、コードの話はあまり出てこない。雑誌を読むならKY(コード読め)

Q19 あなたが考える理想のソフトウェア開発プロセスは?

アジャイルとかウォーターフォールとかAjaxとかrailsとか言わなくても実際になすべき仕事ができるような人たちと共同作業が達成されるようなもの。つまり、なすべき仕事によって変わるわけだから、1つには決められないよ。

人の問題を中心に据えるトム・デマルコの著書はいずれもお薦め

 ヒトの問題を小飼さんは指摘していますが、トム・デマルコ(Tom DeMarco)がかかわっているPeopleware(邦訳:ピープルウェア)Slack(邦訳:ゆとりの法則)Walzing with Bears(邦訳:熊とワルツを)の3書はどれもお勧めです。わたしはどちらかといえば自由放任主義で働いてくれる人が好きだから。

Q20 Web2.0という言葉をどう定義していますか?

某所で議論になったんですが、その時の名言の1つを記しておきます。オリジナルはわたしではありません。

「Web 2.0ってのは、要するにユーザーが中身作る奴、コード書く奴が主役だってことだよ」

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ