YAPC::Asia Tokyo 2010スペシャルレポート

2日目レポート[随時更新]

この記事を読むのに必要な時間:およそ 13.5 分

Tatsuhiko Miyagawaさん ⁠Keynote - The Tale of Plack⁠

YAPC::Asia Tokyo 2010のセッションの締めくくりは日本が世界に誇るPerl Hacker、Tatsuhiko Miyagawaさんによるキーノートです。⁠The Tale of Plack」と題して、Plackがわずか1年でここまで成功した要因を箇条書きで分析された内容でした。

  • 1) Good artists borrow, Great artists steal.
  • 2) We were coming in late.
  • 3) JFDI
  • 4) Shut the fuck up and write some code.
  • 5) TIMTOWTDI、BSCINABTE
  • 6) Keep It Simple and Stupid
  • 7) Perl a glue language
  • 8) Cache invalidation and name things

1) Good artists borrow, Great artists steal.

過去の取り組みとしてHTTP::Engineを題材にあげ、これもPlackと同様、WSGI/Rackにインスパイアされて開発を進めていたが、既存のものに引きずられていた部分があった。アイデアはborrowしたけど、stealまではいっていなかった。PSGI/Plackでは名前空間も含めてほとんどがRackとWebOb.pyのコピーで、完全にstealした。そこが良かったのではないかという分析でした。

2) We were coming in late.

WSGIは2003年から取り組まれているのに、PSGI/Plackは2009年の後半に始まりました。タイミング的は遅すぎると行ってもいいくらいですが、逆にそれにより何がうまく行って何が駄目だったか、どうしてそういう結論に至ったのかということを歴史から学ぶことが できたとのがよかったとのことでした。

3) JFDI

"Just Fucking Do It"の略で、コードを書くのに誰の許可もいらないということだそうです。実際Plackを開始したときはIRCで2時間ぐらいしゃべった後、最初にリポジトリをつくったのはtokuhiromさんだったそうです。そのように出来る人がやればいいといった開放的な体制は全てのプロジェクトに適用出来るわけではないが、Plackの場合にはよい方向に作用したのではないかということでした。

4) Shut the fuck up and write some code.

「うだうだ言っていないでとにかくコードを書こう」という、Perl界隈ではしばしば使われる口語です。Plack発足時のコミットログでは、miyagawaさん、tokuhiromさんを中心に最初の1週間で27,000行程度のコードがコミットされるなど、とにかく皆でコードを書いていたそうで、それが成功につながったと分析されていました。

画像

5) TIMTOWTDI、BSCINABTE

TIMTOWTDIはPerlの美徳とされる用語で、"There's more than one way to do it"、やり方は一つじゃないという意味です。Tim Toadyのように読むそうで、Perlの父Larry Wall氏のニックネームともなっているぐらい、Perl界隈では重要な標語です。一方でBSCINABTEという言葉もあります。これは"But sometimes Consistency Is No A Bad Thing Either"の略で、ある程度の制約があることも悪くないということです。Perlのオブジェクトシステムは人により色々な書き方が出来ますが、それを統一したMooseを語る際によく使われる言葉だそうです。Plack/PSGIでも、ひとつの統一したインタフェースを用意することで、サーバとフレームワークの組み合わせに自由が生まれることになり、制約によってTIMTOWTDIが促進された点が成功要因になったと分析されていました。

6) Keep It Simple and Stupid

KISSの原則ともいわれる言葉で、設計は可能な限り単純に保ち続けるのがよいという指針です。PSGIの仕様は馬鹿みたい(Stupid)な仕様で、アプリケーションはハッシュリファレンスを受け取って配列リファレンスを返すだけのコードリファレンスという、Perlのプリミティブ要素だけを使った非常に素朴な仕様となっています。しかしこのシンプルな仕様だったからこそ、各フレームワークは容易にこの仕様に対応することができ、成功につながったと分析されていました。

7) Perl a glue language

glueとは糊(のり)といった意味で、perlが様々なシステムのインタフェースをつなげる用途によくつかわれることが多いということを表しています。それに対してPSGIはglue interfaceとも言うべきものになりました。いろいろなフレームワークが同意するAPIを用意するのはとても大変なことですが、KISSの原則によりシンプルな実装とすることで各フレームワークの賛同を得られ、glue interfaceになれたということでした。

画像

8) Cache invalidation and name things

コンピュータサイエンスで難しいこととして、"Cache invalidation"(キャッシュを削除すること)と、"name things"(名前に関すること)の二つがあるといわれるそうです。Ruby界隈ではフレームワークの名前などは名前空間を切らずにトップレベルに置いていることが多いそうです。PSGI/Plackでは名前の面でもRackなどからsteal(盗む)していて、機能を表すために複雑なHTTP::Server::xxxといった名前は付けなかったということです。取っ付き易いに名前(StarmanやTwiggyなど)を採用したことで愛着もわき、長い機能名を表すために不可解な省略名を使う必要もなくなり、コミュニケーションコストも減らせたのがよかったとのことでした。

9) Perl glues people together

最後に"Perl glues people together"ということで、Perlによって人々がつながり、それによっていいものが生まれているということをで締めくくられました。ここでは世界各国で開催されているPerlイベントの風景写真を紹介され、miyagawaさんがコミュニティを大切にされていること、そしてPerlコミュニティが非常に素晴らしいものであることを伝える非常に感慨深い時間となりました。プレゼンテーション終了後も会場からは大きな拍手がなり続き、このプレゼンテーションが多くの人にとって感動的なものであったことが実感できる締めくくりとなりました。

画像

941さん「Closing Talk⁠

クロージングトークは,JPAの941(櫛井)さんです。何枚も重ね着したYAPC関係のTシャツをたびたび脱ぎながら話されました。

全プログラムを終えたということで「皆さんお疲れさまでした」と声掛けした後,今回941さん自身がイベント運営に携わった経緯を振り返りました。そして,スポンサー,会場提供の東工大,スピーカー,参加者のPerl Hackerの皆さん,そしてボランティアスタッフに感謝の言葉が述べれました。

続いて,発表されたトークから参加者の投票で選ばれる「YAPC::Asia Tokyo 2010 Best Talk」が発表されました。結果,エンターテナー賞はcho45さん,ベストトーク賞のRoundupにはnekokakさん,そしてベストトーク賞にはtokuhiromさんがそれぞれ受賞しました。tokuhiromさんは受賞の言葉として,⁠頑張ってこれ(賞品のMacBook Pro)でみなさんの役立つモジュールを書きます」と述べていました。

最後に,941さんは「来年のYAPCでお会いましょう?」⁠来年のスピーカーはあなたです©yusukebe」と語り,今年のYAPCを締めくくりました。

画像

サイン会

イベントの休憩時間中には,Perlの生みの親であるLarry Wallさんによるサイン会が行われていました。

画像

レポートは以上になります。最後までお読みいただきまして,ありがとうございました。

著者プロフィール

本間雅洋(ほんままさひろ)

北海道苫小牧市出身のプログラマー。好きな言語はPerlやPython,Java,Objective-C,Haskellなど。在学中には数学を専攻しており,余暇の楽しみは圏論や論理学を学ぶこと。現在はオンライン不動産株式会社にて自社システムの開発に従事している。

共訳書に「実用Git」(オライリー・ジャパン)、共著書に「FFmpegで作る動画共有サイト」(毎日コミュニケーションズ)がある。

blog:http://d.hatena.ne.jp/hiratara/


臼井洋文(うすいひろふみ)

WEBアプリケーションエンジニア。京都府京都市出身。仕事ではPerlでサーバサイドプログラムを書きつつ,Objective-CでiPhoneアプリケーションの開発を行っている。最近の興味は統計,機械学習など。

twitter:usuihiro
blog:http://d.hatena.ne.jp/usuihiro1978/