東京・津田ホールで4月4日~5日に開催されたYAPC::Asia 2007 Tokyoに引き続いて、小飼弾邸にてHackhathonが開催されました(Hackathonは日本でいう開発合宿のようなもの)。国内外から多くのハッカーが集結しましたが、今回は参加者のうち4名の海外エンジニアに登場いただきました。なお、文中の話者表記は、CPAN[1]ディレクトリの表記に合わせています。
CPAN Autors
DANKOGAI:それでは各自、自己紹介を。
INGY:Ingy döt Netです。企業で使うWikiなどを作っているSocialtextという会社に勤めてる。Perlプログラマで、CPANのモジュールを山ほど書いてるよ。有名どころでは、InlineというPerlの中で別の言語を使うためのモジュール。あと、YAML[2]も俺が仕様を書いた。ほかには、Kwiki、JemplateとWikiwyg。
DROLSKY:Dave Rolskyです。勤めてるのはLiveTextという会社で、Socialtextとは関係なし:-)。自分の関わっている有名なプロジェクトとしてはまずMason[3]。もう1つがDateTimeで、日付関係のものすごい細かいところまでいじるモジュール。最近はPerl 5の標準の代わりにも使われている模様。あと、JSAN。
JESSE:Jesse Vincentです。Best Practical Solutionsという会社を作って運営してます。Perl 6のプロジェクトマネージャでもあります。Best Practicalというのは、要するに「人が仕事を片付けるのに必要な道具」を提供する会社。RTというIssue Trackingのシステムを作っています。これはCPANのバグトラッキングでも使われています。実際にどれだけ導入されているのかはオープンソースなので予測するしかないんですけど、数万社で使われていると思われます。
CLKAO:C.L. Kao(高嘉良)です。JesseのBest Practicalのパートナーでもあります。作っているプロジェクトとしてはSVKがあります。Perlで書かれた、Subversionをもっとまともに使えるようにするためのツールです。
一番のお気に入り
DANKOGAI:これまで開発したソフトウェアで一番のお気に入りは?
DROLSKY:今、開発してるのが一番のお気に入り。だから新しいプロジェクトをどんどん始めるんだ。
JESSE:もっかのお気に入りはJifty。YAPCのプレゼンテーションにも出たんだけど、次世代のWebフレームワークシステムです。午後いっぱいの時間で、かなり大きめのプロジェクトをポンと1つ作ることができます。
INGY:YAMLが一番かな。ソフトウェアじゃなくて仕様なんだけど、それを作ったっていうのは本当に誇りに思ってるよ。YAMLで一番重要なのは仕様なんだけど、最初のモジュールも書いた。最初のモジュールはちょっと低速だったり陳腐化してたりするのだけど、今回のHackathonで手を入れようと思ってる。
DROLSKY:DateTimeに関しては自分でソフトウェアを書くだけじゃなくて、いろんな人のプラグインのモジュールを持ってきたり、彼らのサポートをするのも楽しんでるよ。
CLKAO:SVKはとてもよく使われてるんですけど、(Best Practicalでいうところの)「人が仕事を片付けるのに必要な道具」の典型的な例とも言えます。
ハックへの愛
DANKOGAI:「優れたエンジニア」として重要なのはどんなことだと思いますか?
JESSE:一言でまとめちゃうと「ハックへの愛」かな。もう少し要素を還元していくと、新しいことを学んでいきたいっていう姿勢とか、実際に自分が今やっていることに没頭する姿勢とか、逆に、人の意見を聞いて、自分のコードを高めていくような姿勢とか。
DANKOGAI:では、エンジニアとハッカーの定義の違いは?
CLKAO:単にエンジニアというのであれば、「情熱」というのは必ずしも必要ではないと思います。言われた仕事をちゃんとやっていれば立派にエンジニアだと思うんですけど、ハッカーっていう場合は情熱は欠かせないと思います。そうそう、まともなものを食べるというのも重要![4]
DROLSKY:Jesseとほぼ同意見だけど、付け加えると、すごい大きな視点とすごい細かい視点を同時に持っている必要がある。
INGY:プログラマ以外の視点を持つっていうのもものすごい重要。たとえばCLKAOにとっての料理とか、Daveにとっての音楽とか。そうやって外からの視点を持ってると、ちゃんと使う人の意見に耳を傾けられる。
DROLSKY:コミュニケーションの能力はすごく大事で、ハッカーって聞くと部屋に閉じこもって引きこもってっていう印象があるんだけど、普通の人、プログラマでない人に通じる話を持っているかどうかが、そのプログラマのクオリティを決める上で重要だと思う。
INGY:いいプログラマになるにはどうしたらいいかって考えると、たとえば前に、かなり下の階層まで見ないとわからないことがあって、ちゃんとNANDゲート[5]を組み合わせて4bitの演算をするための回路っていうのを書いたりしてみたのだけど、実際にそういうことをしないと、上の階層に行くにしたがって、そういうものがあるということすら忘れてしまう。