本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回は創刊11周年記念号ということで特別編です。「小飼弾のAlpha Geekに逢いたい♥」(WEB+DB PRESS Vol.32~55)の1号限りの復活版として、「小飼弾のPerlハッカーに逢いたい♥」をお送りします。
2011年10月13日~15日、東京・東京工業大学にてYAPC(Yet Another Perl Conferences)::Asia 2011 Tokyoが開催されました。国内外から多くのPerlハッカーが参加しましたが、今回はその中から海外エンジニア5人、日本人エンジニア2人にお越しいただき、それにホストの小飼弾さん、連載監修として立ち会った牧大輔さんを加えた9人で座談会を行いました。
なお、文中の話者表記は、CPAN[1]ディレクトリの表記に合わせています。
自己紹介
DANKOGAI:DANKOGAIこと小飼弾です。今回は参加していただいてありがとうございます。さっそく自己紹介からはじめましょうか。RJBS、よろしく。
RJBS:RJBSことRicardo Signesです。CPANオーサーでPerlでいろいろとフリーなソフトウェアを書いています。だいたいはE-mail関係だね。
JESSE:JESSEことJesse Vincentです。現在、Perl 5のPumpking[2]をやっています。つまり現在のPerl 5は良くも悪くもすべて僕のせい、ということだね。
全員:(笑)
JESSE:基本的にはプロジェクトリーダーとコーディネーターとして、ほかの人たちがすばらしい働きをできるようにいろいろとやってるよ。
MLEHMANN:MLEHMANNことMarcLehmannです。僕もCPANにたくさんモジュールを書いているけど、だいたいは自分が使いたいものを作っている感じかな。
DANKOGAI:PerlよりCをよく書いているよね?(笑)
MLEHMANN:えぇっ?(笑)ここ10年間は必要にかられてイベント駆動関係やスレッド関係のPerlのモジュールを書いているよ。
SARTAK:SARTAKことShawn M Mooreです。高校のときにPerlを書き始めたので、まだそこまで長くはないかな。最近はだいたいMoose関係の仕事をしているから、オブジェクト指向プログラミングに興味があるね。
GUGOD:劉康民です。ニックネームはGUGOD。私はperlbrew[3]というツールを書いています。どういうわけか最近人気が出てきたみたいだね。私はもともとはPerl、Ruby、JavaScriptのプログラマですけど、Perlが一番大好きな趣味です。
XAICRON:xaicronこと嶋田裕二です。Mobage APIやら、App::pmuninstallやら、WWW::Youtube::Downloadやらを書いています。
TOKUHIROM:tokuhiromこと松野徳大です。CPANでいくつかのモジュールを書いています。Test::RequiresとかTest::TCPとかDaikuとかShikaとか。だからMooseのコミュニティには嫌われているんだよね(笑)。
全員:(笑)
SARTAK:そんなことないよ!
DMAKI:この連載の監修をやっている一般社団法人Japan Perl Association(JPA)代表理事の牧大輔です。YAPCの裏方とかやってます。CPANではDMAKIです。
左から、牧大輔(DMAKI)さん、小飼弾(DANKOGAI)さん、Jesse Vincent(JESSE)さん
Perl 5のマネージャー的存在のこと。
注3)
複数のバージョンのPerlを共存、管理するツール。
なぜPerlなの?
DANKOGAI:よし、全員自己紹介し終わったね。じゃあまずは、この挑発的な質問から始めようか。なぜPerlなの? なぜたとえばCじゃないの?
MLEHMANN:僕はCも好きでC++もいっぱい書いているよ。
DANKOGAI:おお、そうだった。PerlよりもCのほうで君の名前をよく見かけるよ!
MLEHMANN:大事なのは仕事ごとに適切な言語を選ぶことだね。Cのほうが良い部分が少しあってPerlのほうが良い部分がたくさんある。だから仕事を分け合っているようなものだね。
DANKOGAI:RJBSは?
RJBS:僕がPerlを知っている一番の理由はね……。
DANKOGAI:PerlよりSMTP[4]を一番よく知ってるんじゃないの?(笑)
RJBS:くそっ(笑)。今まで興味を持った言語はいっぱいあったし、それらで仕事もしたけど、Perlのコミュニティはとても親しみすい。簡単に人に出会えて、友達もすぐできるし、一緒に仕事をしたり
する。だからPerlで仕事をすることは個人的にも満足だよ。
DANKOGAI:xaicronはどう?
XAICRON:最初に使ったのがPerlで、ずっと使っているっていうのが一番の理由なんですけど……。あとはPerlで職にありつけたので、Perlは大好き(笑)。
DANKOGAI:GUGODは?
GUGOD:僕の場合は、Perlを勉強する前はPHPをやっていたんだ。PHPの前はBASICとCだったよ。Perlを始めた理由はAudrey[5]とclkao[6]の2人に会ったことなんだ。知っていると思うけど彼らはとてもクレイジーで、なぜかわからないけど僕にクレイジーな世界に入るべきだと思わせてくれたんだ(笑)。Perlを使い続けている理由はRJBSと一緒で、Perlの人はとても親切だし優秀だね。いつもPerlの人に会うのを楽しみにしているよ。
DANKOGAI:SARTAKは?
SARTAK:コミュニティというのは僕にとっても居心地が良いね。あとPerlはプログラミング言語でできることの境界を押し広げてくれるという点も好きだね。たとえばAnyEvent[7]はとてもクールだし、Coro[8]とかもそうだね。
DANKOGAI:tokuhiromは?
TOKUHIROM:僕はPerlのコミュニティが好きだし、Perl 5はどのアップデートでも僕が書くアプリケーションを壊さないから(笑)。
左から、Marc Lehmann(MLEHMANN)さん、松野徳大(TOKUHIROM)さん、劉康民(GUGOD)さん
他にはどんな言語を使える?
DANKOGAI:なぜPerlかについて話してきたわけだけど、君たちはほかにはどんな言語を話せるの? もちろんプログラミング言語の話だけど。
JESSE:んーっと、最近はPerlをたくさんとJavaScriptを少しかな。あとはAndroidのためにJavaはたくさん使っているよ。昔は少しCもかじったけど、僕のCは本当にイケてなくて……。君たちも自分のソフトの中で僕のCのライブラリなんて使いたくないだろ?(笑)
DANKOGAI:誰かC++が上手な人っていたっけ? Cはシンプルな言語だけど、C++はそうじゃないよね。僕は20年間C++を使っているけど、ちっともC++をマスターできた気がしないんだよ。
JESSE:僕は多分これまで100行もC++を書いていないし、そんなに好きでもないよ。
RJBS:僕はPerlでも同じことを感じるけどな。Perl 5を12年だか13年だか使っているけど、いまだに毎日どうやったら正しくPerlが書けるかを学んでる。僕はできる限り多くの言語を学ぼうとしていて、これは好むと好まざるにかかわらずだけど、でもそれらの言語は、Perlにも使えそうなものを十分に得た時点で学ぶのをやめてしまうんだ。これはPerlの本質で、Perlはほかの偉大な言語からいろんなものを盗んでいるんだ。
DANKOGAI:ほかの言語はどんなのを知ってる?
XAICRON:僕はJava、JavaScript、最近だとDart[9](笑)。
DANKOGAI:ビジネス用に?
XAICRON:いやいや(笑)。あとはPHPをちょっとやったことあるけどあまりマッチしなかった。
プログラミング言語と自然言語
DANKOGAI:プログラミング言語と自然言語についてちょっと考えてみようよ。僕たちは自然言語、つまり話し言葉を新しく作ったりはしないよね。Ludoviko Zamenhofみたいに野望を持って人工の自然言語であるエスペラントを作ろうとした人もいたりしたんだけど、日の目は見なかった。それはとても難しくてタフなことだったんだね。でもコンピュータ言語の場合は次から次に新しい言語が開発されてくる。なんでだろうね。
JESSE:コンピュータ言語を作る場合、それで何かできることがあって、話しかける何かがある。でも人間の言語を作る場合は、話しかけられることを考えなきゃいけない。コンピュータは選ぶことができないんだ。
SARTAK:コンピュータ言語は自然言語よりもよりどりみどりだよ。
RJBS:PHP以外ね(笑)。
全員:(笑)
RJBS:今ある言語よりも簡単なものを開発しようとした人もいたと思うんだよね。
MLEHMANN:新しいものを作って育ててから、今ある大きなものを学ぶほうが楽なことも多いからね。たとえばTemplate Toolkit[10]の中でどうやって変数を使うか、とかね。
DANKOGAI:テンプレートとか正規表現みたいに言語の中の言語みたいなものがあるよね。Perlの中にさらに正規表現やらSQLやらを埋め込むことができる。JSON[11]なんかもね。これが「言語」ってものが何なのかをわかりにくくしているのかもしれない。たとえば正規表現は言語なのか、SQLは言語なのか、それらの言語がチューリング完全[12]なのかとかね。なんで僕らはBrainfuck[13]で満足しないんだろうか(笑)。
JESSE:多分僕らは時間を大事にするからだと思うよ(笑)。
DANKOGAI:でもBrainfuckもコンピュータから見たらほかの言語と一緒だよ。
JESSE:コンピュータから見たら同じだけど、別の言語を使ったほうが僕らは楽な人生を送れるよ(笑)。
RJBS:自然言語つまり話し言葉でも、言葉を外国語から借りてきたりして僕らは言語を発明するよね。英語の中にもほかの言語がもとになっている単語がある。それは新しい単語を作ったり、新しい言い方を作ったりするためだね。だからPerlの構造が十分に良いものだとしても、内部で別な言語を一緒に使う必要があるんだ。これをやればやるほど新しい言語はやらなきゃいけないことがなくなるんだよね。だからPerlといろいろ組み合わせて使えばいいのかなと思うよ。
左から、Shawn M Moore(SARTAK)さん、嶋田裕二(XAICRON)さん、Ricardo Signes(RJBS)さん
Perl coreを小さくしたい
DANKOGAI:JESSE、君はYAPCでの発表でできる限りPerlのcoreを小さくしたいと言っていたけど、なんでそうしたいのかを説明してもらってもいいかな?
JESSE:そうだね、Perlは大きな言語の部類に入ると思うんだ。Perlでは同じことをやるのに本当にいろいろなやり方があって、それはとても良いことだと思う。でも一方でPerlが長い間かけて育ってきた弊害もあって、少しクレイジーなところがある。それらには整合性がない。歴史的にみんな「PerlはPerlでしかパースできない」って言うよね。ということはやることは1つしかなくて、それはPerlのcoreを小さくすることなんだ。でもここ数年あまりうまくいっていない。Rubyの手法やらPythonの手法やら第二のPHPみたいなものやらいろいろとやり方はあるんだけど……。
DANKOGAI:第二のPHP?
JESSE:多分Facebookだと思うんだけど、彼らはPHPの一部を書きなおして高速にしたんだ。でもこれはPerlでは難しい。与えられたPerlのコードが何をするものか知ることはとても難しいし、Perlはとても大きくてクレイジーだから変えるのが難しいからね。だから、僕らが今とても慎重にやろうとしているのは、一部の悪い部分を解き放ち、Perlが成長しやすく、将来良いものになるようにしているんだ。
DANKOGAI:で、ブラウザで動くようになる……と。
JESSE:Perlがネイティブにブラウザで動くところは見てみたいけどね。PerlがJVM[14]やらPerl.NET[15]やらSmalltalkやらPythonやらで動くところも見てみたいよ。
DANKOGAI:正気か狂っているかで言ったら、PerlでSMTPを動かすのとどっちが正気なんだろうね?(笑)
RJBS:その質問に答えられる気はしないな(笑)。
DANKOGAI:君はその両方をやってるよ!
RJBS:それはおもしろい質問だね。なぜならSMTPはすべてのルールを理解することができる、という点においては正気だからね。そしてSMTPの部分部分も理解できるし、それを動かすこともできる。ただそれらが「悪い」ルール、「狂っている」ルールなだけなんだ。Perlについては、一度にすべてのルールを理解することはできないけれど、それらはだいたいは良いルールだね。たいていの場合作業を楽にしてくれる。SMTPのルールは邪魔してくるけどね。これは一般的なPerlの考え方だけど、もし狂気が正気よりも僕の作業を楽にしてくれるんなら僕はいつでも狂気を選ぶね。
YAPC::Asiaの印象
DMAKI:ぼちぼち収束に入ってもらえると……。
DANKOGAI:収束するのこれ!?
全員:(笑)
DMAKI:よし、言語について語ってもらったんだけど、ここはYAPC::Asiaの会場だからYAPCについて少し聞かせてもらってもいいかな? ドイツやらアメリカやら台湾やらからわざわざ来てもらったわけだけど、まず一言で言ってどうだった?
JESSE:YAPCは最高!
MLEHMANN:YAPCは最高!
DMAKI:どんなところが好き?
JESSE:来ている人も好きだしトークも好きだし、YAPC::Asiaは僕が行ったほかのYAPC全部合わせたより楽しいよ。
DMAKI:ん? ごめんよく聞こえなかった、もう1回言ってくれる?(ニヤニヤ)
JESSE:YAPC::Asiaは僕が行ったほかのYAPC全部合わせたよりも楽しいよ!!
DMAKI:おぉ、ほんとに!?
JESSE:ほんとさ!
全員:(笑)
JESSE:会場に入ったら、地図がフルカラーのポスターだ! これはすばらしい!
DMAKI:RJBSはこれが初めてのYAPC::Asiaだよね?
RJBS:みんなが「君が行ったことのあるほかのYAPCとはぜんぜん違うし、ぜんぜん違う経験ができるよ」って言っていたんだけど、そのとおりだった。とても良かったよ。東京は美しい街で来れて良かったし、カンファレンス自体もすばらしく組み立てられていた。これまで来なかったのは時間的にも距離的にも来るのが難しかったからなんだ。それにここにいる日本の人たちはアメリカのYAPCに来てくれないしね。でもここに来たのは、これまで話したことも会ったこともないたくさんの人や、オンラインで仕事をしたことがある人、コードをシェアしている人と実際に会って、オンラインと同じように話したり、ビールを片手に集まったりするためだよ。そしてこういうことがコミュニティの結び付きを強くするんだ。
DMAKI:MLEHMANNもこれが初めてのYAPC::Asiaだよね。
MLEHMANN:あー……、遠いんだよね(笑)。いろんな人に会うのは大事で、遠くアジアのPerlの人たちに会おうと思ったら、YAPC::Asiaだけが行く価値のある場所だね。僕にとってはこれまで行ったほかのカンファレンスと同じようにとても役に立ったし、良かったよ。たとえば、みんな何らかの集まりを開いてくれる。昨日のディナーのようにね。日本人はシャイだから、あのディナーが僕が本当に日本人と話した最初の場所になったよ(笑)。すばらしかった。僕が良いカンファレンスに期待しているのはこういうことだね。
DMAKI:SARTAKとGUGODは毎回ここにいるから何を聞けばいいのかわからないな(笑)。もう君らはベテランだ。
SARTAK:僕がここに来るのはみんながやっていることが好きだからなんだ。たとえば言語の壁を越えたり、アメリカの多くの人は知らなかったり使ったりもしていないクールなものを書いていたりね。たとえば牧さんがYAPC::NA(NorthAmerica)2010で見るべき日本のPerlモジュールについてライトニングトークをしてくれて、ここに来て丸2日間それらについて話を聞くことができた。本当に良かったよ。
GUGOD:私はもともと日本が好きだから毎回ここにいるんだ(笑)。ほかのYAPCに行ったことはないんだけど、RubyKaigiに一度、台湾のほかのオープンソースのカンファレンスなんかにはたくさん行っています。そんな中でYAPC::Asiaが最も言語そのものについてのカンファレンスだと思います。ほかのカンファレンスはコマーシャルであったり、自社製品の紹介であったりすることが多かったりするんだけど……。台湾では年に2つ3つのオープンソースカンファレンスがあるんだけど、だいたいはスポンサードセッションが多くて物足りない。YAPC::Asiaはいつも言語についてのカンファレンスだから好きだね。
DANKOGAI:もうちょっと商業化したほうがいいかな?(笑)
MLEHMANN:No!
全員:(笑)
DMAKI:僕はもう少し商業化したいんだけどねぇ……。
GUGOD:もうお金いっぱい持ってるでしょ!
DANKOGAI:日本でPerlの商標を取ろうとした面倒な輩がいてね、法的に阻止しなければならなかったんだ。で、当時はまだJPAも発足まもなくて、法務費用は当初、僕がポケットマネーから出した。結局法的決着を待たずしてJPAの財務も潤沢になって、うれしいことに僕が出した分はそっくり戻ってきたけどね。
DMAKI:そういうことも含めて法人としてはそれなりにお金が必要だからね[16]。
MLEHMANN:でも僕らが望んでいるのは「Perl-ish」なカンファレンスであって広告付きのスポンサーのカンファレンスじゃないからね。トーク以外でだったら広告もけっこうだと思うよ。そう考えると、YAPC::Asiaがすばらしいのはテクノロジについてのカンファレンスであって商業主義のカンファレンスじゃないからだね。来て良かったよ。
DMAKI:次回はこのシャイな日本人たちにもっと話させるような新しい仕掛けやらもっとおもしろい企画やらを考えるとしますか。
外野:Morebeer!
次回はSARTAK!
DMAKI:最後にもう一つだけ。これはWEB+DBPRESSという雑誌のリレー連載なんだ。そしてSARTAKが次のバトンを受け取りたそうなんだけど、準備はいい?
SARTAK:OK!
DMAKI:日本語だよ?
SARTAK:日本語で!
全員:(笑)