今回は、面白法人カヤックの技術陣を引っ張る村瀬大輔さんにお話をお聞きしました。村瀬さんは、若い頃からPerlのコミュニティに積極的に参加し、Shibuya.pm、YAPC、Catalystなどのコミュニティでも大変有名なプログラマです。取材は、鎌倉のカヤックさんのオフィスで行い、テクニカルアドバイザーとして、株式会社ウェブキャリアの前田道昂氏に同席いただきました。※取材日は、2008年1月です。所属や役職などは当時のまま掲載しております。PCとの出合いは?川井:まずは、パソコンとの出合いをお聞きしたいと思います。松野徳大さんはすでに小学校高学年の頃にWindows95があったみたいな感じだったんですが、村瀬さんはどういう状況だったんでしょうか?村瀬:彼は若いですからね。僕はDOSからでしたね。川井:いつくらいの時ですか?村瀬:中学1年か2年くらいのときにプレイステーションが出でて、親にプレイステーション買ってくれって頼んだんですけど、なぜかパソコンを買ってきたんです。親戚に大手のパソコンを作っている会社に勤めているおじさんがいて、そのおじさんがゲームなんてやらせるよりはパソコンを買ってあげた方がいいって入れ知恵したらしいいんです。当時は、NECのPC98系の全盛の時代だったんですけど、AT互換機だったので、DOSの中でゲームをやっていました。川井:ええ!そうなんですね。それで、どんなゲームをやっていたんですか?村瀬:あまりはっきりとは覚えてないんですけど、コマンドアンドコンカ―っていう戦争のシミュレーションゲームを一番やった記憶がありますね。DOSって普通に動かしていると制約が多くて、ゲームをやるためには、コマンドを打ってメモリを増やしてあげたりしないといけないんです。いうことがあって、パソコンに詳しくなってきたっていう感じですね。川井:ゲーム環境を整えるために、パソコンの勉強が必然的に必要だったということですね。早く動かしたりとか、リアルな動きをというのが出てきますもんね。「Webエンジニア武勇伝」の第6回に登場している大場夫妻の記事を見て頂くと、もっと古い時代にゲームを作っていた人たちがいて面白いですよ。村瀬:その前の時代はまったく知らないですから、それは面白そうですね。川井:それがきっかけでパソコンに触れたわけですね。川井:その後はゲームにはまっていくって感じですか?村瀬:いや、そうでもないですね。DOSでゲームをするよりは、プレステとかの方がゲームは面白いですからね。DOSの時代はそんなに長くなかったんです。一応、最初に買ったパソコンにもWindows3.1が入っていたんですけど、DOS上から立ち上がるっていう感じですし、ゲームとかも動かないじゃないですか。ゲームとかは買わなかったんですよね。そのあと高校に入ったときに、JDK1.0.1とかいうJavaの無料の開発環境が出て、PC系の雑誌に紹介されていたので、これはちょっと面白そうだと思ったんです。無料の開発環境って、今はいっぱいありますけど、その当時はあまりなかったんですよ。それでやってみたんですね。Javaを始めたんですが、雑誌で紹介されているものって、Javaのアプレットでブラウザ上で動くものばっかりだったんです。それだとブラウザが重くなるし、ブラウザでアプリケーション動かしてもあまり面白くないので、当時は嫌いだったんです。それで普通にJavaでWindowsで動くアプリケーションが作りたいと思って、雑誌とかの内容は参考にせずに、Javaの本を買ってきて、アプリケーションを作っていましたね。川井:それは高校時代ですか?村瀬:はい。高校のときは、ほとんど思うようなものは作れませんでしたけどね。大学に入って2年くらいの時にやっと思うようなものが作れるようになってきて、Javaのアプリとかはネットで公開していました。Javaっぽくない感じで普通のWindowsアプリとして雑誌に載ったりもしていました。川井:どんな雑誌ですか?村瀬:フリーソフト集めているなんかちょっと良く分からないMOOKみたいな雑誌でした。川井:なるほど、その時期からネットで公開とかされていたんですね。高校あたりからはパソコンづけで運動はあまりやってない感じですか?村瀬:いえ、高校時代はラグビー部にも入っていました。川井:ラグビー部なんですか。このシリーズでは始めてですね。スポーツをやりながら、家に帰ってパソコンをしていたということですね。一応、進学校だったので、部活の時間が短かったんです。5時になったら帰らないといけなかったので、部活は趣味的な感じですね。1時間くらいしかできないんです。川井:時間があって、勉強はしないでパソコンしていたということですね。きました(笑)村瀬:そうなんですよ(笑)大学に入ってからは?川井:大学入ると、さすがにそんなこともないんですよね?村瀬:いえ、そんなこともありますね(笑)大学に行かずに家でパソコンを触ると。それで結局、大学は中退しているんです。川井:大学はつまらなかったんですか?村瀬:なんなんですかね。実はあまり記憶がないんです。パソコンにはまっていたってことですかね。大学の途中でJavaを止めて、C言語でをやり始めたんです。目的はまたゲームだったんですけどね。Windowsのネットワークゲームを改造していたんです。今だと改造出来ないようなソフトが入っているんですけど、当時のはパケットとかも暗号化されていなくて、オープンというかいい時代だったので、アプリケーション通信を乗っ取ることが出来れば、ゲームの通信の中身が全部取れたりして面白かったので、通信のパケットを解析して情報を表示したりして、それでWindowsの仕組みとかC言語を覚えたんです。川井:それで知識も増えて、さらにはまっちゃったということですよね。村瀬:言語を覚えようとかっていうことではなくて、やりたい事があるから、やりたい事を調べていくうちに知識がつくっていうことだと思います。やっている内容は悪いことのように見えますが、情報を書き換えて、書き換えた情報をサーバーに送るとか、そういうことはしていなくて、なくてもいいけどあると便利だねっていうようなツールを作っていたんです。川井:ツールを作っていたんですか?村瀬:そうです。外部ツールみたいなものです。チャットするときに、ゲームの中から直接IRCでメッセージを投げられるようなものを作ったりしていました。ゲームの中で技を使うときに、ショートカットキーで使えるように設定できるんですけど、それがF1からF12まで12個しか登録できないんです。使いたい技っていうのは、もっといっぱいあって、何種類かアプリ側で定義しておくと、もっと切り替えて使えたりするんですが、そういうツールとかを作っていました。川井:このあたりで得た技術はまだ役にたっているんですか?村瀬:そうですね。今でも役に立っています。Windowsアプリで通信を乗っ取ったりとか、デバッグする際にも使えます。要するにデバッグの技術なんですよね。村瀬:相手の同じプロセスにないとメモリとか読むことが出来ないんですけど、目的のプロセスに自分のプログラムを注入するんですけど、それってデバッガーがやっていることなんです。インターネットエクスプローラーの通信を見たりだとか、未だに生きている使える技術ですね。私もネットゲームは今でもやっているんですけど、色んな外部ツールを送ってくる人がいたり、チームのサイトとかがあって、そこでダウンロード出来るとかいう仕組みもつくられていたりとか、本当に色んな技術のある人がいるなって思ってたんですけど、村瀬さんみたいな人がやっていたんですね。今は、Webプログラムを書いているんですけど、当時は格好悪いなと思っていてそういうのがあまり好きじゃなかったんです。CGIとか、Perlとかも嫌いだったんですよ。今はPerlを書いていますけど、当時はPerlはださいっていうイメージを持っていましたね。川井:やっぱりC言語だったわけですか?村瀬:そうですね。C言語の方が早いですしね。川井:そんなこんなしながら、アルバイトかなにかでクーピーとご縁があったんですか?村瀬:いえ、大学を辞める気だったので、いきなり社員希望で受けたんです。川井:どうしてクーピーだったんですか?村瀬:最初にクーピーに興味を持ったというよりは、まずはWebに興味を持ったんです。そのあたりを教えてください。村瀬:2003年とか4年あたりからブログブームで、僕もブログを始めていて、技術者の書いているブログをRSSリーダーで購読するようになったんです。Web系の技術者の人の書いている記事が、ネットの最新情報だったり、切り口が格好良かったりして、色々真似したりしているうちにWebも面白いなって思うようになったんです。そのブロッサムっていうブログツールがPerlで、5KBとかしかなくて、blossom.cgiっていう単体のファイルで配布されていて、プラグインを追加してやらないと全く使えないので、それをいじっていてPerlも面白くなってきて、Webへの興味が強くなっていきました。川井:そういう流れなんですね。川井:それで、就職した先がクーピーだったのは?村瀬:たまたま求人サイト見たときに、一番面白そうな会社だったんです。川井:なるほど(笑)その時はどこに住んでいたんですか?村瀬:そのときは埼玉ですね。受かったら引っ越すみたいな感じでしたけど。川井:これは大学何年のときですか?村瀬:大学3年ですね。年的にはもっといっていましたけど(笑)川井:実際にクーピー入ってみてどうでしたか?村瀬:まず、僕はそれまでずっとWindowsのエディタを使っていたんですけど、そのときは貝畑と庄司っていう2人のプログラマがいて、2人とも黒い画面で、Emacsを使って作業しているのを見て衝撃を受けたんです。これは本当に早いし、格好いいって思いましたね。当時は何をやっているのか分からなかったんですけど、とにかくどんどんコードが書き換わって行くのに驚きました。それでEmacsを使うようになったんです。今もまだ使っていますね。川井:エディタ以外での印象とか、それによって受けた刺激ってありましたか?村瀬:みんなPHPを使って開発していたので、僕もPHPをやってもいいかなって思って入社していたんですけど、やっぱり、それまではMySQLとかは触ったこともなかったし、入ってから覚えなくちゃいけないなっていうプレッシャーがあって、結構1人でやっていた時よりも成長スピードが上がりましたね。川井:でも、楽しかったんですよね?村瀬:そうですね。川井:当時何人くらいいたんですか?村瀬:開発は僕を入れて4人くらいですかね。川井:まだ会社自体が苦しい時代ですよね?村瀬:そうですね、多分。今よりは全然苦しかったんじゃないんですかね。サーバー周りとかは貝畑が1人で24間対応をしていたんですが、お客さんは、1人でやっているはずはないと思ったらしく、「貝畑さんって人が何人かいるんですか?」って聞かれたことがあります(笑)川井:それくらいハードだったんですね。その中での変化とか、成長していく中で新しくやり始めたこととかってありますか?村瀬:プログラムを作る考え方が変わったというのがありますね。僕は、それまでは、すごい完璧主義だったんですよ。動くものを作るっていう感じではなくて、動くものになってないのに、ここは気に入らないから書き直すとか、本を途中まで読んでしばらく放置していたときに、また最初から読むような感じだったんですよ。貝畑とかは、とりあえず動くものをすごいスピードで作っていく感じなんです。僕らの中の用語で「不必要な最適化」っていう「必要になったら最適化すればいい」っていう考え方があるんですけど、そういう開発におけるスピードの大切さを貝畑から学んでいますね。川井:バランスと言えばバランスですよね。本当にどうしようもないコードを作って早くてもしょうがないですからね。川井:当時は、どんなサイト作られていたんですか?村瀬:クーピーのときは、PHPで1つサイトを作ったことぐらいしか覚えてないですね。PHPで仕事をしたのが1つだけなんですよ。それは本当に大変でしたね。あとはアクセス解析ですね。それはPerlとC言語で書いていたんですけど、皆がPHPでやっている中で、1人だけちょっとPHPはやりたくないみたいな人がいるということで、Webの受託ではない仕事をもらっていましたね。コミュニティ活動について川井:会社以外でのコミュニティ活動ってどのような感じでし始めたんでしょうか?村瀬:日本のPerlのコミュニティがすごくいいんですよ。Shibuya.pmっていうコミュニティがあって、そのテクニカルトークが年1回くらい不定期で開催されるんですが、3年くらい前から出るようになって、すごい人たちと知り合ってチャットとかも出来るようになって、毎日新しい技術の情報だとか、今このモジュールが熱いとか、いう会話をしたりしています。付き合っているだけで、どんどん勝手にレベルが上がるようなすごいメンバーなんです。川井:本当に参加しているだけで、レベルが上がるんでしょうね。瀬瀬:流行っているネタがあると聞くと、それについて自分が一緒になってやってみたりしますからね。川井:それは技術自体が楽しいっていうのがベースにあるんでしょうけど、コミュニティ活動自体ってみんなでやることが楽しいんですか?村瀬:そうですね。最初のときに、周りは全員知らない人だし、発表している人はすごいなって結構、圧倒されたんですけど、とっても刺激も受けて、来年は、向こう側に立とうと思って帰ってきたんです。向こう側で話す方に回りたいなって思いました。川井:スピーチする方ですね。村瀬:スピーカー同士、すごく仲良さそうでしたし、楽しそうだったんです。川井:その世界に入って行きたいって思ったんですね。川井:メジャーデビューしたいみたいな感じですね?村瀬:そんな感じですよね。川井:そういう大志を抱くのって大事ですよね。若い技術者のすごい方と話をしていると、楽しいっていうのがすごいキーワードになっていますよね。苦労の匂いがしないって言うんですかね。私なんかの年代では、「エンジニアって大変」みたいな印象だったんですよ。徹夜はするわ、お客さんは我侭だわ、仕様は変わるわ、大変っていうイメージが強かったんですけど、皆さんの年代の方と話していると、そういうのを全く感じないんですよね。それって、すごいパラダイムが変わっているみたいな気がするんです。村瀬:年上の人でも楽しそうな人はいますけどね。松野さんがすごく尊敬している海外の40代のプログラマで、インギー.netっていうすごい人がいるんですけど、その人とかは40代とは思えない変なコードとか書いたり、面白い考え方をするんです。Perlで毎回selfを第一引数でとって、myself=shiftとかって書くのは面倒くさいから、ソースフィルターっていう機能を使って、関数のブロックの中に入ったら、selfっていうのが定義されていて、いきなりselfが使えるっていうような変なモジュールとかインギーウェアと呼ばれるプログラムをいっぱい書いている人なんです。川井:おお、そうなんですね。村瀬:あとは弾子飼さんとかですね。楽しそうにしているプログラマっていうと、なんかその2人になっちゃうんですよね。分からないですけど、年が上でも楽しそうな方って結構いましたね。川井:今は、すっかりその辺のお仲間っていう感じですよね?村瀬:そうですね。川井:翌年はスピーカーとしてきちんと発言できたんですか?村瀬:はい、ちゃんと喋りました。川井:何かそのときは何かを作ったりしたんですか?村瀬:基本的に業務でやっていることを話すようにしているんです。前に全然業務と関係ないお題について話そうとしたんですけど、やっぱり何かデモを作ったりとかっていうのは大変だし、業務でやっていることは聞く人にとっても新鮮だなって思うんです。最初のときはCatalystっていうフレームワークについて話したんですけど、当時、Catalystを仕事で使っている人はまだほとんどいないような時代だったので、業務でのことをそのまま話したりしました。川井:毎年、発表されているんですか?村瀬:そうですね。ネタがあるときは発表するようにしています。前田:一番最初のときは、話したいって立候補すると簡単に話せるものなんですか?川井:Shibuya.pmのメーリングリストっていうのがあって、そこでスピーカーを募集しているんですけど、そこに返信するんです。ブログを書いていて、多分、僕の顔は知らないけど名前は知っているみたいな、そういう感じだったので、言いやすかったことは言いやすかったですね。すごくドキドキしてメールを出しましたけどね(笑)前田:そうなんですね。村瀬:普段はメーリングリストは、ほとんど流れてないですけど、カンファレンスの直前にいきなり、日程が流れてくるんです。宮川さんと竹迫さんの中でいついつやろうってことになったら、それが流れて、話したい人いますかっていう問いかけに、ぽつぽつ話したい人が返信して終了みたいな感じですね。みんなIRCとかブログでの記事でのやり取りだとか、そっちでやり取りしちゃっているから、あまりメールは使わないんですよね。川井:特に開発は、IRCが多いみたいですね。Catalystのメーリングリストもユーザから「これおかしくない」みたいなときとか、リリースのアナウンスくらいしか使われていなくて、開発はIRCですね。川井:松野さんともこちらでお知り合いになったんですか?村瀬:そうですね。Shibuya.pmだと思います。川井:村野さんにとってコミュニティ活動っていうのは面白いから、それから自分が参加することが楽しいというようなことからきっかけでスタートしたと思うんですけど、その後に大きな変化とかはありましたか?村瀬:世界レベルの人たちと出会って、衝撃を受けましたね。Shibuya.pmに関しては、たまに誰かすごいことをしたりってことはありますけど、中心のメンバーがみんな知り合いだから、想像を超えるようなことはあまりなくて、みんなでレベルアップしていく感じだったんです。Conference)っていうイベントがあるんですけど、宮川さんが頑張ってくれて、日本で毎年開くことが出来るようになってきているんです。最初に日本で開催できたのが、2006年の4月か5月くらいで、ラリー・ウォールが来てくれて、世界のトップPerlプログラマが集まるカンファレンスになったんですけど、本当にそれは衝撃でしたね。オードリー・タン(AudreyTang)っていう台湾のプログラマがいて、僕と同い年なんです。彼はYAPCのちょっと前にHaskellを始めて1ヶ月でHaskellマスターして、その次の1ヶ月でHaskell上にPerl6を実装しちゃったんですよ。それがPugsって言って、唯一のPerl6の実装になっているんです。Shibuya.pmの領域をはるかに超えた世界で、全然レベルが違うなと感じて、もうちょっと頑張らないといけないなって思いましたね。川井:かなりの刺激を受けたわけですね。そのとき会社のメーリングリストとかに、「すごいプログラマがいる」みたいなことを流した記憶がありますね。川井:カヤックさんの中で、同じようなコミュニティとかやっている人っているんですか?村瀬:出てみたいっていう人はいますね。そんなに喋りたいという人はいないですね。これからって感じだと思います。カヤックでの取り組み川井:技術的にはもうリーダーとしてやってらっしゃるとは思うんですけど、カヤックの中での取り組みはどんなものがあるんですか?村瀬:そうですね。勉強してきたことをみんなと共有できたらいいなと思います。みんなの力も底上げするみたいなことしたいですね。去年から少しずつ始めたのですが、今年も社内での勉強会とか、小規模なカンファレンスとかも行えればいいなと思っています。Shibuya.pmとかは世界が違うので、カヤックとIT業界のすごい人との違いっていうのが刺激になるじゃないですか。いうところで、普段カンファレンスとか行かないカヤックの人も刺激を受けてもらえたらなと思いますね。今度、「Emacs自慢大会」っていうのをやろうと思っているんです。カヤックでもEmacsが一番多いんですよ。みんな色んな使い方しているだろうから、自分はこういう使い方しているっていう自慢をしあえたら面白いなって思いますね。川井:なるほど、面白そうですね。村瀬:今年はいっぱいやろうかなと思っています。川井:世界とか日本というレベルでのコミュニティがあって、会社の中でもそういう底上げをするようなコミュニティ活動をするみたいなことですね。前田:今までの発想を取り入れてって感じですよね。インプットしたらアウトプットって言いますけど、それを実践されているなって感じます。技術者って覚えたことなんかをブログに書くと思うんですけど、ちゃんと理解してないと記事にできないので、記事にしようと思うと、もうちょっと調べるんですよね。あいまいなこと書けないですからね。前田:叩かれますもんね。村瀬:まあ、叩かれるのも結構プラスなんですけどね。指摘してもらえたりとか、反対にいい記事を書くと「はてなスター」とかですごい星が付いたりとかするのは楽しいですね。川井:確かに、反応してもらえるって楽しみがありますよね。今後の方向性は?川井:今、26歳だと思うんですけど、これから30歳に向けて目指す方向性って決まってらっしゃるんですか?村瀬:今はPerlが面白いんですよね。Perlのコミュニティで言うと、Shibuya.pmとかだったら普通に知られていますけど、世界行ったら、一部のYAPCに来てくれた人にしか知られていないんですよ。Catalystでもほんの一部の人にしか認知されていないですしね。いう意味では、全然世界に出て行っていないので、もっとメジャーになりたいですね。川井:技術が好きで楽しいっていうよりも、多少野望みたいなものもあるんですか?村瀬:野望というよりは、楽しみたいというのが強いですね。さっき言ったオードリーとかともっと近い関係になれたら、絶対もっと楽しいと思うんですよね。川井:話が出来たりとか、友達になったりとかっていうことですね。前田:それは、何か習得してやりたいっていう向上心から来るものなんですか?それとも純粋にその人たちと一緒にやることが楽しいんですか?村瀬:宮川さんとか、今のオードリーとか、自分よりすごい人をみると、尊敬するっていうのと自分もそうなりたいっていうのもあって、やっぱり目標とする人たちなんですよ。いう自分の将来に直結するような人たちと触れ合いたいという気持ちがありますね。ロールモデルに近いのかもしれませんね。ちなみにPerlの世界以外にも興味のある世界ってあるんですか?村瀬:ありますよ。世間的に盛り上がったのもありますけど、去年はActionScriptを始めて、JavaScriptも面白いなっていう風に思いました。あと、最近はLispを作るっていうのも流行っているんですよ。Lispって基本的な限られた関数さえ実装すると、自分の処理した言語内で記述を増やして言語として成り立つような面白い特性があったりもするんです。川井:新しいものとかに興味があるんでしょうか?村瀬:そうですね。川井:Railsとかはどうですか?村瀬:Railsは、以前やっていたんですよ。JavaをやってCをやって、そのあとにWebプログラムを始めたときに、最初はRubyから入って、そこからPerlに行ったんですよね。Railsは規約とかが決まっていて効率的に開発できるコンセプトのフレームワークだと思うんですけど、Catalystって決まり事がないフレームワークで、自分でルールを決めて出来るんです。いう敷かれたレールの上じゃないっていう方に興味を覚えて、RubyからPerlに移行したっていう感じでした。川井:対称的なもののうち、自由度の高いものを選んだってことですね。それにCatalystって触媒って意味なんですけど、Perlのモジュールがいっぱいあって、それを組み合わせてフレームワークにして使うコンセプトなので、そっちのほうが合っていたんだと思います。Rubyも好きな言語なんですけどね。PerlはCPAN(シーパン)があるのがすごくいいんですよね。川井:CPANみたいなものがあるのって他にはないんですか?村瀬:RubyでもGemsとか、PHPでもPEARっていうのがあるんですけど、CPANのように気軽に上げられて、しかも膨大な量のオブジェクトが揃っているのはないですよね。自分が作ろうと思ったときに、最初に始めるのはCPANを検索することなんですよ。CPANって世界中のプログラマがアップしているので、CPANのモジュールを読むとすごく勉強になるんですよ。松野さんとかとも、この書き方ここであったよねとか、この人、こんな書き方してるよって、CPANのプログラム見て話したりとかしていますね。若いエンジニアに前田:1年目の駆け出しプログラマなんですけど、プログラムの上達のコツみたいなのがあればお聞きしたいんですが。村瀬:すごい人たちのコミュニティに入るのがレベルアップのコツだと思いますね。いうコミュニティに入ってないと、非効率なことを知らずにしているというか、使わないことが推奨されているようなものを使っていたりとかっていうことになってしまう可能性があると思います。Catalystでも、前まではあったけど、今は使わないよねってものを知らずに一生懸命使っていたりだとかってことがあるんですよ。前田:そういう場に参加していないと気付けないってことですよね。村瀬:そうなんですよ。前田:中に入って刺激を受けたり、情報を共有したりとかも必要なんでしょうね。村瀬:そうなんですよね。CPANモジュールには、CPANにアップするためのツールとかもあって、それって使うと本当に楽で、SVNでリリースってやると勝手にタグ付けをしてくれて、CPANにリリースして、更にTwitterでリリースの告知とかまで一気にやってくれるんです。今は、みんなの中ではそれを使ってないと、「それを使ってなくて許されるのって小学生までだよね」とか、そういう煽り方をされちゃいますね。前田:それが自然に標準になっているわけですもんね。本当に便利ですからね。すごい人に出会って揉まれて、コミュニティで共有されている最新の情報や技術を自分の中でスタンダードにしてしまうのがいいってことですね。川井:なるほど、参考になるお話でした。しているうちにお時間になってしまいました。今夜は本当にありがとうございました。村瀬:こちらこそ、ありがとうございました。氏(前編)今回は、日本Rubyの会会長であり、ツインスパークでシニアエンジニアを務める高橋征義氏にお話をお聞きいたしました。