続・YAPC::Asia::Tokyo 2009行ってきた
ニ日目(9/11)
Kazuho Oku - スケールするウェブアプリケーションを20分で作る方法
コード的なのかと思ったら違って、ツールを使ってデプロイしたりデーモン動かしたり設定ファイルをsyncしたりなどだった。
こういうの色んな会社が色んな方法取ってるんだろうなあ。
Kenichi Ishigaki (charsbar) - Practical Bug Reporting / もしもバグを見つけたら
perlモジュールにバグを見つけたらどうするかという話。
CPANモジュールはCPAN Testersによって質が保証されているとか、8割方のモジュールはテストが通っているけど残りがアレだよねとか。
*Hoge::huga = sub {}; みたいな一時的対処じゃなく、CPANでチケット発行したりその際のtodoとか手順とか礼儀とか。色々有りすぎて大変そうだったけど、毎回こんなやり取りをしてるのだろうか。
モジュールの最新版もチェックするとか、外部リポジトリで管理しててそっちでは既に直ってるとか、既に同じ内容のチケットあるとか、再現手順を正確に伝えるとか、自分の環境を伝えるとか、ほんと色々大変そうだった。
で、バグ修正してもらうのにこんな面倒な手順を踏みたくなければ、「究極の方法はコミッターになることです」
質疑タイム。質問が出ないのでdankogaiさんに振られる。
確か、「いくら仕様だと説明してチケットをcloseしても何度でもopenしてくるような人はどう対処したらいいですか」と訊いていた。そういう人には、「そこまで言うならテストかパッチを送ってくれって言うと黙るらしい。
Encodeのメンテナともなると、ほんと世界中から色々言われるんだろうなあと思った。
Dan Kogai - Perl? Which Perl?
perl使ってるよねって言ってもどのバージョン?な話。
- 5.6はエンコーディング周りがJcodeくらいしか使えないので移行したほうが
- 5.8はモダンだしMooseも動くし一番使われてる
- 5.10は最もモダン
- snow leopardには /usr/bin/perl が5.10なのに驚いてた
で、perl6の話。pugsとdanさん作のAPIで、perl5ではこう書いてたのがperl6ではこうなる、っていうのを見せながらすすめてた。
perl5でOOPするにはこうするけど、Moose使うとこうなるよーとか、perl6だとclassを使うんだよーとか。
途中、予期せぬ事態に。newするときに、存在しないアクセサに値を持たせようとしたとき。danさんの中ではperl6ではエラーになるはずだったが、エラーにならなかった。Mooseもそうなのだけど、どなたか曰くMooseはperl6の真似をしてるだけ、だそうだ。で、この件はdanさんが誰かperlの偉い人に即効で直してもらうように依頼すると言っていた。いや、すげー。
Naoya Ito - はてなブックマークのシステムについて
はてなおやさん。最近ダイエットに成功して15kg痩せたとのこと。
はてなのユーザ数やデータ数、サーバ数、データサイズ、インフラとか中の人の数とかなどを紹介されてた。とあるテーブルにselect count(*)したら何か3億とか返ってきてた。
はてなの中で提供している機能を裏でどうやって実現しているかとかの具体例も見れた。公開してるモジュール・してないモジュールを使った方法の説明とか。
途中、ある機能の実装した人の名前が赤文字で出ていて、
これ何で赤文字かっていうと、この人にこないだ面談して、「将来何になりたい?」って訊いたら「有名になりたいです!」って…。
これがゆとり教育の弊害かと。
と。その人の名前出して、「とのことなので、○○をよろしくお願いします!」と。会場爆笑。
WAFを自作した理由は「特に無いんですけど…」とのこと。その後に何か続いたかもしれない。
質疑タイム。「時間が無いので一人だけ」とのこと。誰も挙手しなかったので、挙手した。前から気になってたことがあった。
「はてブのお気に入りって、ユーザhogeのお気に入りページを表示しようとしたら、hogeのお気に入り全員のデータ引っ張ってきて、更にそいつら全員のブックマークを取ってきて時間でorder byして表示するっていうめっちゃ重そうでかつキャッシュしづらそうなデータ取得してそうなのに、hogeが新たに誰かをお気に入りに追加した直後にhogeのお気に入りを見てもデータの遅延とか無いけどどんなデータ構造してどんなデータの取得の仕方してるんだろう」
っていうのがそれなんだけど、
「はてなが毎日のように重いんですが軽くなりませんか?」
って訊いてみた。Qに対するAは返ってこなかったが、「頑張ります」と返ってきた。そして質問したら会場に爆笑されるなどした。
エンジニアとして訊きたいのは前者だけど、利用者として訊きたいのは後者。ただそれだけだったのだけど。そして切実かつ真面目な質問のつもりだったのだけどどうもネタ扱いされてた。
いつか機会があれば前者も訊いてみよう。
Yoshinori TAKESAKO (takesako) - all your base32 are belong to us
タイトルの元ネタはAYB。これってマイナーなのかそうでないのか。ところでparent.pmのケツにもこのネタが書いてある。
内容は http://developer.cybozu.co.jp/takesako/2009/07/polyglotrejectk.html とほぼ同じ。ただ、MSなんとかでも実行できるようにパワーアップしてた。
改めて聞いても脱帽するしかない。実行できていいのかこれは。
最後のスライドに載っていたのは、AYBを発した男の顔がラリー・ウォールになってて紫色のアレを持っていて何だこりゃな画像だった。ネタに懲りすぎである。
散々記号プログラミングを堪能した後は質疑タイム。このときにかける声は普通は
質問ある人いますか〜?
とかなのだけど、今回は
…質問したい人いますか?
それだけで爆笑である。で、はてなおやさんが質問してた。
…何がtakesakoさんを突き動かしたんですか?」
爆笑。
で、対する答えは意外にも(?)ちゃんとしてて、要は自分の発したい語がFWとかでスパム判定されそうなときに、こういうことをしてすり抜けよう、と。
予想外の方向からのアプローチ。
この時間帯に別の会場でやってた「Good Evils in Perl」が気になってしょうがない。資料ないかな。
以前見つけたスライド、self.pmとか載ってたあれとタイトルが似てるからあれかな?
Lightning Talks (2)
インパクトあったのだけ。
miyagawa - CPAN realtime feed
CPANモジュールがCPANにアップされてから、それが一般人に行き渡るまで長くて2日かかるので、長すぎて待ってらんないので即効で知らせてくれるbot作りましたという。
botはこれ。http://friendfeed.com/cpan
で、デモ実演中。会場のネットワークが遅いのか、予想より反応が遅かった。
「ドラ鳴る前にくるかな〜」とか言ってて、その時点で残り1分ちょい。ハラハラしながら見てたが、見事間に合って更新された。
やっぱり拍手喝采。
以上。
感想
勉強会に出た事もほとんどなく、YAPC初参加なので、前回のshibuya.pm(バイナリアンの集い)みたいにギークが難しい事言うのかなと思ってたら、全然そんな事はなかった。
確かに難しい話も多かったけど、概念や仕様の説明は分かったし、ちゃんと全部分かるトークもあった。ということを色んな人に言ったら、「前回のshibuya.pmが異常なだけ」とのこと。よかった。
LLTVのときもyokohama.pmのときも今回も毎回、「話す側に参加すればよかった!!」と思った。俺でも全然立てるって分かったら尚更そう思った。HTTP::EngineとData::Modelを使ったwebアプリの作り方の例、とかそんなの。今後はちゃんと調べて積極的に話す側に行こう。…が、しばらくこういうのは無いそうで。残念。
勉強会に参加するのは実に楽しい。話も面白いし、ネットでしか知らない人に会えて話せるし、勉強になる。やっぱり外の世界に触れるのは大事だ。
毎回こういうイベントの企画、開催をしてくれる人に感謝。こういう場が提供されるのはかなり素敵です。
それではお疲れ様でした。
YAPC::Asia::Tokyo 2009行ってきた
YAPC初参加。メモ書き。
一日目(9/10)
Tokuhiro Matsuno (tokuhirom) - PSGI - Perl Server Gateway Interface
pythonのWSGIみたいなことをしよう、ということでtokuhiromさんとmiyagawaさんがWSGIのperl版を作ろうとしてる話。tokuhiromさんのブログでも以前から触れている。
PSGIは仕様、PLACKは実装ということで、PSGIが何を目指すかの説明とPLACKの紹介など。
アプリを動かすのにmodperl fastcgi apache1/2とか沢山あって、WAFごとにそれに対応するコードを書くのが無駄だから、その辺の規約を統一しようぜ、というのがPSGI。それを実装したのがPLACK。railsのRackみたいなもの。
既にHTTP:Engineというものがあるが、これはreponse/request/interfaseとかを全部自分で持ってしまってるのがよろしくないとのこと。
PLACKのデモをするとき、miyagawaさんがコードを見せて「これは動くはずなんだけど、動かない。多分どっかにバグがある」と言っていたけど、その場で「あれ、これ改行入れたら動くんじゃね?」と言って改行入れたら動いて拍手喝采。実際は動かないのではなく、ただ結果がコンソールに出なかっただけで、動いてるけど出力結果がバッファリングされてただけだった。(このとき、curlを使ってリクエストを投げていた。curlは改行がセパレータになるので、改行を含まないレスポンスを延々と受け取っていたけど表示していなかった)
質問タイム。HTTP::Engineでwebアプリ作ってる身として気になる事があったので一番乗りで質問してみた。
俺「HTTP::EngineがPSGIに影響されて変更され、現状のHTTP::Engineで作られているwebアプリが動かなくなる、という事は今後ありますか?」
miyagawaさん「無いです。仕事で使ってる人もいるし、そういう事があったら困る人が出ちゃう。僕もRemedieとかで使ってるし」
tokuhiromさん「あーあと、HTTP::EngineのメンテナがHTTP::Engineに飽きてるのでバグ修正くらいしかされないと思います」
前の方の席に苦笑してるyappoさんが見えました。
ランチタイム
あんな人やそんな人と挨拶したりしつつ昼飯。すぎゃーんさんがAcme大全買ってたのを見て、皆揃って購入するなど。
で、dankogaiさんに会った。挨拶して名刺交換お願いした。いい機会だったので、前から訊いてみたかったことを訊いてみた。
俺「WAFは使われないんですか?」
danさん「WAFは若い者に任せて、もっと低いレイヤーをやってる方が好きだなあ」
と。ブログを読んでて、WAFのネタが全然出ないのでずっと気になってた。なるほど。
Makoto Kaga - Perlハッカーのための遊べるPostgreSQL
mysqlしか使わないので、興味があった。
最後に発表者も言われていたが、perlは関係なかった。ポスグレが4.8から4.9になって暗黙の型変換が無くなったとか、内部のデータの持ち方とかの話だった。
Hideo Kimura (hidek) - modern Catalyst
catalystの話。5.8になって廃止された、ModelをM、ViewをVと略すショートオプションとかNEXTとか、Mooseベースになって、catalystアプリの書き方before/afterとか、注意点とか。
「プラグインはほんとやめてくれとメンテナが散々言ってる。プラグインをCPANに上げると、超怖い人が色々文句言ってくる。え〜と…(会場を見渡して)居ないよな、えーまーそのー、エムエスなんとかさんが…」
Tatsuhiko Miyagawa (miyagawa) - Event programming fun with AnyEvent and Coro
AEとは何か、リアルタイムイベントとは何か、perlで実現するにはどうするか、Coroとは、とか。
うろ覚え。
サンプルソース見せながら、AE使う上で$wの宣言がbkくさいけどこれが一般的で、こうしないと参照カウンタが切れないとかどうとかってのは覚えてる。
今回のYAPCではリアルタイムのネタがhotだったように見える。
dann - 優しいモダンなWAFの作り方 (How to develop modern web application framework)
Angelosなる作成中のWAFの話。WAFとはどんなものか、WAFを作るのに必要なもの、仕組み、拡張の仕方などについてAngelosのソースを見せながらの話。
PSGIをどうしようかなーと思っていたら、数日前にPLACKを作られてしまい、焦ってAngelosにも取り込んだとか。
dann - CPAN::PackagerによるRPM/Debの自動生成 (Build packages with CPAN::Packager)
CPANモジュールがめんどくさいけどrpmとか作るのも面倒だから、これを使って簡単にパッケージ作れるよ!な話。
既存ツールがあるけど、問題点があるので、それをこうして解決しました、と。
質疑。
CPAN::Packagerで依存関係を気にせずモジュールをインストール出来るとの事ですが…CPAN::Packager自体が依存が多いのでは?
笑いが起こる。対する答えはうろ覚え。何だっけな。
テストはどうなってますか?
俺も訊こうと思ってた。説明の中ではテストが出てこなかった。で、答えは、今後の課題だそうだ。
Kazuhiro Osawa (Yappo) - Key Value Store with O/R Mapper
Data::Modelの作者の方。
開始前に多少時間が空いた。画面に映されるニコニコ動画トップ画面。「miyagawa」で検索。ノーヒット。「takesako」で検索。数件ヒット。
「(開始時間まで)あと2分らしいですが、どれがいいですか」
適当なの選んで再生して少しして、進行役のzigorouさんが「すいません、このままだとそれに見入っちゃって終わりそうなんで始めちゃってください」
始まり始まり。
Data::Modelについて。DSLライクで軽くてData::ObjectDriverを超参考にした。RDBMSのRっていらねんじゃね?とのことでRは実装してない。
既存ORMの不満点、各ORMを触ってみて満足出来なかった点、など。既存のORMについてのコメントはこんな感じ。一部うろ覚えの可能性あり。違ってたらごめんなさい。
- Class::DBI
- まぁ古いですよね。今までお疲れ様でした。
- DBIx::Class
- 重い。って言ったらtypestarさんが怒りそうだけど。使っていい思いをした事が無い。
- Rose::DB
- miyagawaさんがお気に入りだけど、見る時間取れなかった。
- Jifty::DBI
- Jifty以外で使っても嬉しくないよね。
- Fey::ORM
- (Fey::ORMのソースの先頭に use Moose って書いてあるのを指して)…というわけで、これは無い、と。
- DBIx::Moco
- Data::ObjectDriver
- かなり良かったんだけど、日本語・英語ともにドキュメントがほとんど無い上、ググっても遅いってdisってるエントリしか見つからない。
- DBIx::Skinny
- SQLパースするの大変だよね。あと作者のnekokakさん曰く、Data::Modelの方が軽いって。ただベンチは取ってないです。
この後は紹介、解説。カラム定義を共有出来るとか、スキーマ情報まとめて一箇所に書けるとか。キャッシュしやすいとか、標準でMaster/Slave構成に対応してるとか、Memcachedにも使えるとか。あとDMと離れて、データのシリアライズの話とか。
俺もこれは使ってるのだけど、ずっと質問したい事があったので訊こうと思っていたのだけど、質疑の時間自体が取られなかった。時間が押していたそうで。残念。
Atsushi Kobayashi (nekokak) - simple or mapper DBIx::Skinny
2連続でORMの話。以前もORMについて発表してる方で、yappoさん曰くORMの専門家。俺もDBIC使い始めはこの人のwikiに超助けられた。
自作ORMについての話。
やっぱりDBICが重いのと色々不満があったので自分で作ったという。特にパフォーマンス面で不満が強かった。パフォーマンスを気にするならDBIのハンドル取ってSQLベタ書きするが、それORMの意味無いよねとか、DBICで設定した色々、inflateとかが使えなくなるじゃん、とか。軽く薄く、でも自分が欲しい機能は持たせて作った。
あとは使い方の例をあげつつ部分的に詳細な説明。Data::Modelと似てるところもあったが、互いに互いのいいところを取り合ったとか。
Toru Yamaguchi - Perl database test using MySQL::Sandbox
遅れて参加。
sandbox作ってその中でmysqlでテストしよう、と。ブログに書いてることのおさらいみたいな。
cliからdb色々操作して、crudとかdrop/createとかしてたけど、これも便利そう。
Lightning Talks (1)
うろ覚えですよ。
args.pm (tokuhirom)- a brand new argument validator
メソッドの引数をバリデーションするとき、$argsって書くのがめんどくさいから、書かなくても済むようにしてた。
「全然黒魔術とかしてないですよ」→観客席あたりから突っ込まれる→「PadWalkerに比べたら全然黒魔術じゃないですよ」
miyagawanize (yusukebe)
「偉大なるハッカー、miyagawa。私たちは彼のようにはなれない。何故か?それは…紫色のアレを持っていないからだ!」
というわけで、画像の顔を認識し、自動で顔の部分に紫色のアレを付加するスクリプトを紹介。実際に数人の画像を用意し、スクリプトにかけ、結果を見せて会場を笑わせてた。使った画像は、ラリー・ウォールとかモーニング娘とかオバマとか色々。
で、用意した画像を次々とmiyagawanizeしていって、最後に二人分の画像が残った。が、「さーて最後の一人!」あれ。何故かotsuneさんが飛ばされた。これわざと飛ばしたのか間違えたのか気になります。
nginxやlighttpdでMogileFSしてみた (kamipo)
各webサーバで分散ファイルシステムMogileFSを使って画像をgetしてキャッシュ効かせて表示させてた。確かlighttpdだけ失敗して、他のどれかでキャッシュが効いてなかった。
この人だけ準備に超手間取ってた。で、テンパったらしくマイクの持ち方がかっこよくなってtwitterやircでネタにされてた。
どんな感じかというと → http://twitter.com/nipotan/status/3884430738
懇親会
dmakiさん「参加費は2千円ですが3千円の飲み食いが出来ますのでお得です!」
色んな人と話してきた。やっぱり 挨拶>自己紹介>名刺交換 でネタが尽きて気まずい雰囲気になってしまった事もあったけど、楽しかった。人生で一番名刺交換した。
既に転職した前職の知り合いを伝って、他の会社の人と話すパターンが多かった。全然関係ない人だとやっぱり話すきっかけが作りづらい。そんなの気にするなよって言われても、人付き合いが苦手とかコミュ力が云々。俺の今後の課題。
大抵の人が言うのは「この業界狭いね」と。どこ行っても見覚えのある顔があるのだそうだ。俺はまだ顔も狭いし、1回転職したばっかでまだ体感は出来てないけど、確かにそうだろうなと思った。
ところでLTの存在を当日になって知った。正直阿呆すぎる。dmakiさんに今から明日参加できませんかって訊いてみたけど駄目でした。泣くな俺。
二日目へ続く。