YAPC::Asia Tokyo 2009 スペシャルレポート
2日目レポート[随時更新]
昨日・本日と,東京工業大学大岡山キャンパス (東京都目黒区) でYAPC::Asia 2009 Tokyoが開催されています。本ページでは,2日目のレポートを随時掲載していきます!
※今回のレポートは全セッションを回れておりません。ご了承ください。
Daisuke Komatsuさん「FormValidator::LazyWay で検証ルールをまとめよう」
株式会社Plugin and Coreの小松大輔さんによる発表です。 今回はFormValidator::LazyWayというValidatorモジュールについてのお話でした。 なお小松さんによれば「lazy」の意味は「遅延」ではなく「怠けられる」ということでした。
FormValidator::LazyWayの特徴は、フォームごとに検証ルールを決めるのではなく、フィールド名ごとに検証ルールを決めて、それをサイト全体で使い回せるところにあります。便利だと思ったのは、以下の機能です。
- 同じフィールドであっても、例えば登録時には必須項目(required)だが、検索時にはあってもなくてもよい(optional)というフィールドの設定も一箇所でできる。
- 「年月日」のように、入力フィールドがそれぞれ分離しているような項目であってもマージして検証することができる。
- フィールド名を正規表現でマッチさせることができる。
- 同じフィールドに対して違う検証モジュールを指定できるように、「レベル」という仕組みが用意されている。
小松さんによれば今後の開発予定には多言語化、uploadフィールドの検証などが含まれているそうです。 FormValidato::LazyWayには日本語のPODも用意されていて、ソースコードはcodereposでも公開されています。
Kazuho Okuさん「A Clever Way to Scale out a Web Application」
サイボウズ・ラボ株式会社の奥一穂さんによる発表です。 今回は主にmysqlでのデータベース・シャーディングが中心で、現在開発中の3つのツールについて紹介がありました。
- Incline
- シャードされたDB間で一貫性を保持するツール。アプリケーションプログラマが非正規化のロジックを書かなくてもよい。
- 開発状況はearly beta
- Pacific
- Range-based shardingにおいてダイナミックスケーリングを提供するツール。
- 開発状況はearly beta
- DBIx::ShardManager
- Perlからシャーディングを扱えるようにするモジュール
- 開発状況はalpha
以上の3つのツールを使えば、Perlでもシャーディングするシステムを簡単に書けるようになるとのことです。詳しくは奥さん御自身のブログを見て欲しいとのことでした。なお、9月25日に開催されるBPStudy#25でもデータベースのスケーリングについて2時間程度の発表をされるということです。
Kenichi Ishigakiさん「Practical Bug Reporting / もしもバグを見つけたら」
このセッションでは、Perlのテストやバグレポートに関する内容でした。
まずIshigakiさんが紹介されたのが、CPANモジュールのテストレポートの数。今までに500万件以上のテストレポートが届いており、今でも月に25万〜30万程度のオーダーでテストがされているというデータを取り上げ、CPANのすごさはモジュールや作者の多さではなく、これらのモジュールのテスト体勢が非常に充実していることである、と述べました。
次に、バグを見つけたときの対処法の一例として、見ざる・言わざる・聞かざる、を一番問題のある方法だと指摘。大事なのはホウ・レン・ソウであり、不具合があることを隠さずに必ず伝えるということを促していました。
その後、まずはテストへ参加する方法として、CPAN::Reporterについて説明がありました。また、テストの参加者は多い方がよく、特にマイナーな環境を持つ方はテストに参加した方がいいと語られました。
さらに、Perlの標準のバグトラッキングであるRTについて触れられ、RTへメールで不具合を報告する方法や、不具合報告をする前に同様の不具合がないかRTやその他のバグトラッキングを追いかけること、さらにgoogleなどで検索し、リポジトリやメーリングリストを探して、自分の不具合が既知のものではないか確認するのが大切だと述べられました。また、ブログに書いた不具合報告は、不具合の解決次第エントリを修正するべきであると、ブログのエントリに過去の不具合情報が氾濫する現状を問題点として指摘しておりました。
最後に、緊急を要する場合の方法として、作者に連絡をとるという方法を紹介していました。これには、perldocを参照したり、作者のblogやtwitterを探したり、p5pで聞くのもいいだろうとのことでした。しかし、やはり一番確実なのは、コミッタになるか、それも難しいようであれば自分で新しいモジュールを作り直すのがいいだろうと、無いものは作ればいいというクリエイティブな発想で、セッションを締めくくっていました。
Kazutake Hiramatsuさん「OpenGL Programming with Perl」
Perlで3Dプログラミングはできるのかという問いに、「当然できる」と自信を持って答えたHiramatsuさん。紹介して下さるのは、POGLというPerlからOpenGLを使うことができるモジュールです。このモジュールはOpenGLのPerlバインディングであり、このモジュールからOpenGLを使うことでPerlでも3Dプログラミングが可能になるとのことです。ただし、最新のPOGLですと、OS X Leopard上でデフォルトのOpenGLではコンパイルが通らないらしく、POGLの少し古いバージョンである0.56を使った方がいいようです。
そんなイントロダクションの後、POGLの実際の使い方が紹介されました。POGLのインタフェースはOpenGLとほぼ揃っており、glXXXX系のコマンドや、GLUやGLUTを実際に使ったコードが紹介されていました。このOpenGLとAPIが揃っているという利点を生かし、iPhoneのOpenGLを使ったアプリケーションのプロトタイプを、Perlで開発したりするのも便利ではないかと、使い道を提案されていました。
また、Perlならではの利点として、OpenGL::Imageでテクスチャを簡単に作れることが紹介されていました。このモジュールはプラガブルな構造になっており、ImageMagickがインストールされているとgifやjpegもそのままテクスチャとして使えるようになるそうです。
質疑応答では、GLUTを使った入力イベントに関する質問や当たり判定の方法に関する質問がなされ、参加者の3D分野への関心の高さが伺われました。


