本を読む

読書やコンピュータなどに関するメモ

YAPC::Asia Tokyo 2011に行ってきた(10月に)

 すでに1か月半前の話ですが、Perlのお祭「YAPC::Asia TOKYO 2011」に行ってきました。

 モノを実際に作って動かしている話しとか、そのための運用とか、現場の人が自分のやっていることを紹介するセッションが多かったと思います。

 こんな時期にブログに書いても、もはや自分しか得しない気がしますが、とりあえず自分メモとして。

1日目

オープニング(941)

 今回はいろいろな面で最大規模だったという話で、伸びてるなあと。あと、交流をテーマにしているとの話もありました。

Perl 5.16 and beyond(Jesee Vincent)

 Perlのリリースサイクルを作って10月31日にPumpkingを引退したobra氏のセッション。「ようやくビジョンを語れるようになった」ということで、「Perlは変わり続ける」「Perlのコアをコンパクトにする。どんどん外部のモジュールにする」「“use v5.14”はPerl 5.14以降という指定だったが、それでは5.30とかで動くとは限らない。“use v5.16”は、Perl 5.16そのもので動くという意味にして、後方互換性をできるだけ保つ」という話が印象的でした。

Carton(miyagawa)

 YAPC::Asiaといえばのmiyagawaさんのセッション。アプリをほかの環境にデプロイしたときにモジュールのバージョン違いで困らないように、使っている全モジュールのバージョンを固定する「Carton」というしくみを開発したという紹介でした。RubyのBundlerを参考にしたとのことです。

 「carton install」でMakefile.PLからモジュール情報を抜き出してlocalにインストールしつつ依存モジュールも含めてcarton.lockファイルにJSONで記録、「carton exec」でその環境でアプリを動かすというのをデモしていました。Twitterでも、「使いたい」という声が多数並んでいました。

Perlプログラマのためのスマートフォン開発ガイド(naoya)

 Webアプリの技術でスマートフォンアプリを作るプラットフォームとして、PhoneGap(HTMLでネイティブアプリ)、Titanium Mobile(ネイティブアプリ)、ScriptingLayer for Android(まだおもちゃ)、Nodeなどを紹介していました。

AnyEvent, Coro, IO::AIO - a good team(Mark Lehmann)

 Nodeのベースになっているlibev&libeioや、AnyEvent、Coroなどの作者のmlehmann氏のセッション。勝手に大学の先生っぽい人を想像してましたが、どちらかというとオタクっぽい感じで、そのへん親近感を覚えました。

 そんな感じで、たくさんのアニメのファイル(大容量+多数)をダウンロードさせるサーバーを立てようとして既存のサーバーを試したけど使えるものはなかった、じゃあ自分でいうことで、CoroとかAnyEventとかIO::AIOとかイベント駆動で作ったとかなんとか。ときどき10秒止まるのでおかしいなーと調べたら、ノンブロッキングのはずがOSがファイルを先読みしててブロックしたという話なんかもありました。

 あと、イベント駆動はコールバックスタイル(継続渡しスタイル)で制御の反転になるけどCoroなら普通に書けるぜとか、PerlのiThreadはプロセスみたいなものでスレッドじゃないからCoroこそがスレッドだとか、IO::AIOはもとはPOSIXのラッパーだけどいろいろesotericなものをラップしてるぜとか、Coro::AIOならIO::AIOを普通のI/Oの書き方で書いて自動変換してくれるぜとか、いろいろ語ってました。

Perlで構築されたサイトの移転(fujiwara)

 カヤックの音声投稿共有サイト「こえ部」を、止めずに、レンタルサーバーから自社インフラに移転した話。一度に動かすとトラブルが起きたときに発生箇所がわからないので一つずつ動かしたとか、DC間をOpenVPNでつないだとか、移行先にDBの子レプリケーションと孫レプリケーションを作ってDC間を切ったら元の子レプリケーションがマスターにしたとか、投稿と参照のFQDNが違ってDNS切り替えのタイミングが違うので404になったときに違うほうのサーバーにフォワードするとか、さすがいろいろ工夫してるなあと思いました。

Mobageオープンプラットフォームの事件簿(zigorou)

 Mobageオープンプラットフォームの障害事例を紹介してました。updateが遅くてデッドロックが多発とか、DELETEが遅くて遅延とか、有名人が何かするたびに負荷がすごいことになるとかの話で、大変だなあと思いながら聞きました。

LT:Perl同人活動(makmaka)

 毎年名物のPerl同人誌「Acme大全2011」の紹介でした。「3rd edition」→「さあどうでしょう」は、言われなければわからなかったw

(tokuhirom)

 WebアプリケーションフレームワークのAmon2 3.0の解説でした。

LT:(hakobe932)

 WebService::SyoboiCalendarで関西のアニメ放送予定をチェック、という話でした。

LT:スポンサーセッション - カヤック

 同日発表された「Perl道場」を紹介していました。

LT:(Yappo)

 IRCボットフレームワークApp::Ikachanの紹介でした。翌日のLTに続く。

LT:(charbar)

 CPANに「倉庫番」の盤面パーサーはあっても実際のゲームはなかったので、URLを指定してパースして遊べるゲームを作ったという話でした。デモもありました。

LT:(egopro)

 去年のYAPCに参加した影響で作ったというSendai.pmの活動紹介でした。

LT:スポンサーセッション - スカイアーク

 北海道のIT勉強会の紹介でした。

LT:(issn)

 Nagoya.pmの活動紹介でした。

LT:(Mayumi Tayumi)

 6Aの広報さん。Perlプログラム「iSteve」が会場で大ウケでした。

LT:(karupanerura)

 Class::Accessor*でアクセサを作ると呼び出しコストがかかるので、普通のアクセスを制約する「Class::VirtualAccessor」というのを作ったという話でした。Variable::Magicでhookしているとか。

LT:日常業務にPerlを使う(turugina)

 Webベースの勤怠管理システムをPerlで攻略するという話でしたw

LT:スポンサーセッション - リクルートメディアテクノロジーラボ

 プログラミングコンテスト「Mashup Award 7」の紹介でした。

LT:(岡部恵一)

 Perl商標問題と、それに対するJPAの戦いの報告でした。

LT:Perlで次世代ゲーム開発(keroyonn)

 ssh端末のフォントを極小にしてドットに見立てて8bitゲームふうのアクションゲームを作ったということで、実演もしてました。すげー。

LT:ぼくたちのPrl Module管理(Kosuke Arisawa)

 perlbrew+darkpanの紹介でした。

LT:(nekokak)

 DBIx::Handlerなどの“薄い”ORMの紹介と考察でした。

LT:ISUCONやった話(tagomoris)

 集まってその場でWebアプリケーションをチューニングする「ISUCON」を開催した報告でした。

2日目

続 Unix Programming with Perl(Kazuho Oku)

 去年に引き続き、Unix系OSのシステムコールがらみのトラブル例と、トラブルにはまらない心得の解説でした。今回は、子プロセスからのデータをパイプで受け取る場合の問題と、シグナルをチェックするタイミングの問題について。

 パイプについては、子プロセスが入力待ちになる問題や、読まないでいるとパイプのバッファサイズ制限に引っかかる場合がある問題、標準エラー出力の問題を指摘し、「テンポラリファイルを使うほうが楽」とまとめていました。シグナルについては、トラップルーチンで立てたフラグをチェックするタイミングによっては大きな処理(sleep)の後に回されてしまう問題、POSIX::pselectもあるが、OS XやAndroidではpselectの実装がおかしい問題などを指摘し、sleepのかわりにselect()を使う回避策などを紹介していました。

マニアックなキャッシュ利用術(Yujji Shimada)

 Mobageオープンプラットフォームの数十億PV規模で起きたmemcachedの問題とその対策の紹介でした。コネクションタイムアウトなどでキャッシュが更新されていないことがあるのでsetやdeleteの戻り値を見る、いろいろなアプリがキャッシュするのでworkerにまとめる、keyの分散が偏るのでkeyにsuffixを付ける、内部向けDNSでDBの負荷分散をしているのだけどPVごとにDNSルックアップが発生するので結果をmemcachedにキャッシュする、外部ドメインにアクセスするときDNSルックアップをキャッシュするのにクライアントとしてFurlを使う、などの話でした。

ぼくのかいがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく(cho45)

 後にリリースされた「はてなブログ」のためのWebアプリケーションフレームワークの話でした。大規模で長期的にメンテナンスするシステムのためには、「限りなく薄いフレームワーク」が求められる、と。で、PSGIを出して「最小のフレームワークは書かないフレームワーク」「共同開発に必要なのは共通の実装ではなく共通の設計指針」と。そのほか、「ドメイン特化にならざるをえない」「危険なことをするのにコストがかかるように」「3回コピペしたら抽象化」などの言葉も面白いと思いました。

画像Hacks (yusukebe)

 画像を操作するライブラリのImagerで、「幕末写真フィルタ」「Instagram風」「Facebookカードを作る」といった応用例を見せていました。また、画像認識と組み合わせて「キャプチャ破り」や「miyagawanaize」、さらにOpenCVと組み合わせたOppai-Detect(笑)までやってみせていました。

Perlで無理ゲーム攻略 (TAKESAKO)

 WindowsアプリケーションをWin32::GuiTestで操作する話でした。キーストロークを送ったり、ウィンドウタイトルをあいまい検索したり、マウスを動かしたりといったのをやってみせた後、マインスイーパーを自動で解く「Acme::MineChan」を解説してデモして、会場を爆笑と驚愕の渦に巻き込んでました。苦労した点として、画像マッチの素材として「8」を出すのに苦労したとか、暴走するとキーボードやマウスが奪われていて止められないのでUSBメモリのautorunでtaskkillを実行とかいうエピソードも。

闇のEメール伝説(Ricardo Signes)

 CPANの数々のEmail処理モジュールの作者による、「本当は怖いEメールのフォーマット」の話。ヘッダの折り返し方法とか、空白の扱いとか、コメントの扱いとか、日時の表記とか、よくこんなのパースできるなあという感じで、モジュールに感謝。あと、MIMEの恐怖の話については、日本人は英語圏ほど意外性を感じにくいのかもと思った。

Evlution of API with blogging(Takatsugu Shiegeta)

 Six Apartのcomewalkさんによる、ブログの歴史のふり返り。HTMLから、1つの枠で中身を変えるブログになり、双方向性、メタ情報(フィード)、自動検出、投稿、外部へ(pingやOpenSEarch、OpenID、PUSH)などと進化してきて、2004年ぐらいから進化が止まっているのではないかということでした。また、手をつけなくてはいけないこととして、インポートとエクスポートが挙げられていました。

少人数のWebアプリ開発(aloeight)

 会社の小規模なCGIシステムが、毎年のYAPCに影響されてmod_perlやPlackなどに変わっていった過程の報告でした。それだけでなく、「ファイル名による人力バージョニング」「Excelでタスク管理」から、SubversionやTracの導入の変化が、会場の興味を惹いていたようです。テストを書くのをチームに習慣づけさせるために「今日はテスト書いたわー」とミサワ風にアピールする話もw

OtoPerl(Haruka Kataoka)

 異色のセッションで、プログラムで波形などをいじって音を合成し、音楽を演奏するシステムの話でした。それ系のライブでは、ステージでコンピュータを操作しているとメールでも見ているようにしか見えないという「メールチェックライブ問題」があるんだとかw。ではその場でコードを書いて即興演奏しようという話でした。音を合成するロジックもPerlを内部DSLとして書いて、それをクライアントからHTTPで音声合成サーバーに送ってオンザフライで演奏を変えられるそうです。実際に、その場でコードのパラメータやプログラムを変更してデモというかライブをやってみせてました。

ターミナルで8ビッット風ゲーム (keroyonn)

 1日目のLTでもやっていた、ssh端末のフォントを極小にしてドットに見立てて8bitゲームふうのアクションゲームを動かすGames::BeLike::EightBITの解説とデモでした。30fpsぐらい出るんだとか。やっぱりすごい。

LT:Emacs, Perl Async(kiwanami)

 EmacsでGoogleカレンダーふうのカッコいいカレンダーを作ったり、3Dマルチプレイヤーゲームを作ったりしてEmacsユーザーを驚かせているkiwanamiさん。会場でも、あれがEmacsか、という声が。Perlネタは、EmacsからDBにアクセスするのにPerlを使う話。

LT:Perl→CL→Perl(nitro_idiot)

 はてなで働くCommon Lisp使いのnitro_idiotさん。PerlとCommon Lispの遍歴と、そこから思ったことを発表していました。「“Modern Perl”は毎年変わるので、ついていくのが大変」という言葉が印象的でした。

LT:スポンサーセッション - ガイアックス

 福岡はいいところだよ、都会だけど東京ほど混んでないし、ちょっと行くと自然もあるし、美人が多い(と嫁写真を披露w)、とアピールして、福岡支社を作るので募集中、という話でした。

LT:bouneHammer(azumakuniyuki)

 バウンスメールの解析ツール「bouneHammer」の紹介でした。

LT:スポンサーセッション - ライブドア

 woremacxさんによる、ロケタッチの紹介でした。

LT:(Yappo)

 前日のIRCボットフレームワークの話に続いて、社内でのサーバーの通知情報などをIRCに集約して仕事効率化、という話でした。

LT:(Naoki Tomita)

 Perlモジュール本を書いた富田さん。Acme以外の面白モジュールをいろいろ紹介していました。「Moose」を簡略化して「Moo」→「Mo」→「M」とかw。

LT:File:::Zgob(tokuhirom)

 zshのように「**」が使えるzglobと、その他最近開発した多数のライブラリの紹介でした。すごい数。

LT:スポンサーセッション - mixi

 雑誌でも記事を書いていた「静的解析」への取り組みを紹介していました。社内で開発したプログラムの「負債」度を測る指標だそうです。

LT:(charsbar)

 毎年恒例、CPAN authorトップ10の発表でした。

LT:MySQLでMessagePack(kamipo)

 MySQLのレコードにMessagePack形式でデータを入れたのを検索する、MySQLプラグインを書いた紹介でした。

LT:エロサイトの裏側(yusukebe)

 個人によるエロサイトの開発と運営で学んだ技術的経験の話でした。

LT:(takesako)

 通常のセッションでやった「Acme::MineChan」を、2分で紹介しデモして、みごと解いてみせ、喝采を浴びてました。

Managing A Band Of Hackers(hidek)

 基調講演としてDeNAでハッカー集団を束ねるマネージャーとしての心得を語っていました。チームは必要であり指揮者のようにマネージャーも必要、という存在意義の話から、エンジニアの現場をマネージするにはエンジニア経験のある人間でないといけないという話、丸投げではなく任せるという話、クセのあるハッカーたちをまとめる心得、などについての話でした。

閉会式 (Daisuke Maki)

 ベストスピーカー賞を発表。あと、「来年(良いほういも悪いほうにも)どうなるかわからない」と話していました。

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://emasaka.blog65.fc2.com/tb.php/957-616cac5c

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad