Pixel Pedals of Tomakomai

北海道苫小牧市出身の初老の日常

今日はYAPC::Asia Tokyo 2010の最終日です

今日はYAPCの2日目です。昨日と同様に、gihyo.jpさんの特集にもレポートを掲載しますので、完成をお楽しみに!

Chia-liang Kaoさん「AnyMQ, Hippie and the real-time web」

電車遅延のため、開始が10分遅れるそうです。

  • Plack/PSGI → アロンアルファ
    • Streaming Interface がある
    • CGI.pm は使うべきでない
  • AnyEvent
    • 様々なイベントループのサポート
    • POEは面倒
  • AnyMQ - Tatsumaki::MessageQueueをインスパイア
    • Mooseを利用
    • topicを作り、 new_listener でリスナを作り、pollで監視。publishで発火。
    • キューバインディングを増やしてくれる人募集
  • Comet
    • 色々なとこで使われている
    • 色んなハックで成り立っている → MXHR, iframe, スピナー, 接続数制限
  • WebSocket
    • ws://とかwss://とか
    • Upgrade: WebSocket などのヘッダを追加して実現
    • \x{00} \x{ff} で囲む
    • Origin と Sec-WebSocket-Origin ヘッダ
  • Web::Hippie
    • Commetはロンゲの彗星、Hippieもロンゲ
    • 永続接続を抽象化 → $env の hippie.args, hippie.handle
    • ミドルウェア enable "+Web::Hippie"
    • psgi.nonblocking インタフェースサポートがあるサーバを使わなければならない
  • Web::Hippie::Pipe
    • 双方向通信の抽象化 (MXHR, poll, Websocket, AnyMQ)
    • これもミドルウェア(bus として AnyMQを指定)
    • $env に hippie.listener, hippie.bus hippie.message のサポート
    • JS側でもnew Hippie.Pipeをして、メッセージを受け取る
  • デモ → 株価とチャット

Yappoさん「Ajax Application Testing」

  • FICIA → Flash を使っていない写真共有サービス
  • 既存のツール → JSUnit, Selenium, QUnit, Test::QUnit
    • Test::QUnit はやりたいことに近い → MozReplだとIEで動く?
    • QUnit-TAP : @t_wada さんの実装
  • JSTAPd
    • JavaScriptエンジンを通す、Ajaxコードのテスト、CLI(make test)
    • Ajaxアプリテストツール、Tap対応、JSDeferred-ish
    • モックアップを*.tに書ける
    • テストサーバup、ブラウザ立ち上げ、テスト実行、ブラウザ終了(Fxは無理)
    • ユーザが利用する可能性のある
    • インストールはcpanmかgithubから
  • 使い方
    • jstapd -n プロジェクト名 で作成、--jstapd -d プロジェクト名 でサーバ起動
  • 自動作成されるファイル。
    • index はブラウザ用。触らなくてよい
    • conf.pl JSTAPdが使うURLの変更、JSのディレクトリのマッピングCLIの設定
    • CLIの設定 → conf.pl 内の auto_open_command または JSTAP_AUTO_OPEN_COMMAND 環境変数
    • 01_base.t
      • includeがテスト対象、include_exはライブラリ
      • 01_base.js テストコード
      • 01_base.html テスト用html
  • テストコードの記法
    • Test::More-ish
    • tap$ で jQueryのようにDOMがとれる
    • jQueryプラグイン → is_likeやis_text、is_visible。
      • include_ex に \'jquery-jstapd.js' (リファレンス)を渡す
  • テストケースを増やす
    • .tを増やし、 JSTAPd::Suiteをuse, tests {...} を指定
    • .jsと.htmlも追加するとよい
  • Ajaxのテスト
    • JSDeferred 的な記法 → jstapDeferred
    • wait, next は JSDeferred と同様
    • 非同期となるため、jstapDeferredを使わないとすぐテストが終了してしまう
    • pop_request で$.ajax 時のwaitが可能
    • .tファイルには、server_api関数。戻り値はJSONとしてブラウザに戻る
  • Makefile.PL → prove -vr で代用できる
  • JSTAPdの実装
    • Twiggy → テストが終わるまでlong polling
  • 今後 → 他言語でのサーバ実装、開発者募集
  • おまけ(時間がないのでまとめだけ) → 必要なデータだけを処理、ユーザ操作の邪魔にならないように
  • 質疑応答
    • Q. Ajaxじゃない部分のテストは?
    • A. 普通に書けばいい。Ajax以外の部分も書きやすくなっている
    • Q. ブラウザを複数試したければ?
    • A. 環境変数を切り替える

Jesse Vincentさん「Perl5 is Alive!」

  • @obra にtweetしましょう
  • パンプキンとは? → 後で
  • Perl5は16歳
    • Perlは死んだっていうひとは、時代についていけてない
    • CPANは今でも活発 → Moose, Plack, cpanm, AnyEvent, Devel::NYTProf
  • 5.12.0をリリースするのは恐かった → 今ではPerlの安定板は 5.12.0
  • Perl6は? → 別の言語。7/29にrakudo.orgがリリース済
  • これからは Perl6 の時代でも Perl5 の時代でもある
    • 5、6はバージョンではない。別の言語。6は妹。
    • 作者はどちらもLarry Wall氏だが、Larry氏の脳のバージョンが違う
  • 5.12系のいいことは?
    • 5.10系の昨日を安心して使える
    • use 5.12.0 で自動でuse strict
    • package Foo::Bar 1.0;
    • 2038年問題対応
    • Unicode 5.2
    • Pluggable Keywords
    • Overridable Function Lookup
    • Dtraceサポート
    • コアからのモジュールの削除 → Class::ISA, Pod::Plainer, Shell, Switch (CPANにはすべてある)
    • やだやだオペレータ
  • pumpking → Pumpkin King, Patch pumpking
    • 変なパッチを当てない、リリースをきちんとする
    • 5.10系には5年がかかり、二人のpumpkingが変わっている
    • 5.10.1はメンテナンスリリースだが、大量の修正があった(2,800 commits)
    • →とてもメンテナンスじゃない
    • pumpking を燃え尽きさせてはいけない
  • 現在は @obra さん
    • 今までのpumpkingはPerlを愛する、強烈な責任感を持つCハッカー
    • Larry以降、2つ以上のメジャーバージョンのpumkingをやっている人はいない
    • 「このシステムには問題がある」 → スクラッチから作り直す (Perl6)
  • リファクタリングをする
    • @obraさんは、Cハッカーではない → 誰かにお願いする
    • Patch の適用 → 誰かにお願いする
    • Release → 誰かにお願いする
    • Language Designer → 一部をやる
    • 好みの調停、論争の解決、人事、PM → @obraさんがやる
  • 5.10に比べて、5.12以降の開発は非常にスムーズ。毎月20日前後にマイナーバージョンを出す
    • 手順の明文化 → 今では、開発版は数時間でリリースできる
    • pumpkingがリリースする必要はない
  • メンテナンス版のポリシー
    • 昔はなるべく多くの機能を入れていた → なるべく機能を入れない(不具合修正のみ)
    • 5.12.1, 5.12.2 ではbugfixしかしていない。3ヶ月置きに出している。
  • 2011-04-20 には、5.14系 が出る。
    • ASTラウンドとリップの改善をしたい
    • CPANモジュールインストールを簡単にしたい
    • 他、HTTP Client, IPv6, SSL なども欲しい → パッチを送って
  • perl5.12の試し方 → perlbrew
  • 質問
    • Q. unicode6はサポートするか?
    • A. サポートしたいが、今のPerl実装と互換性に問題がある
    • Q. 早いリリースはいいが、パッケージングされているバージョンの対応は?
    • A. 10月のUbuntuには新しいバージョンは載るのでは。最新が載らなくても新しめなものを載せたい。大きいサイトではいきなりバージョンアップするのは進めない
    • Q. JSON::PP がコアに入る。JSON::XS がなぜコアモジュールではないのか
    • A. コアには最低限なものだけが入るべき。PPが安定しているので十分。

Kenichi Ishigakiさん「ある連載の舞台裏 - History tells us ...」

  • 次の原稿はまだできていない(!)
  • 「なぜ連載スタイルを変えないのか」
  • 連載が始まった経緯 → Mojoliciousの連載
    • ダンPerl連載の誘い → 条件: 隔週連載、数ヶ月
    • 「モダン」の定義では? → 21世紀に産まれたもの。
    • 古いPerlを打ち切るためのbuzz word → our, use warnings, Unicode
    • 先進的な人は、5.6.xや5.8.x も捨てたい → 5.10も選択肢
    • いいPerlを使って欲しい。更新をして欲しい
  • コミュニティに注目している → Larry氏の言葉「Perl6はコミュニティに作って欲しい」
  • modernism(ギークのため?機能美)とpostmodernism(スーツのため?)
  • ダンPerlは、流行って意味だけではない
  • strawbery perlPerlを普及させるならWindowsは大事
  • 取り上げたかったもの → Moose, Rakudo, Sub::*, Devel::*, Catalyst
    • 動向が早過ぎるので、落ち着いてから
  • 隔週 → 最新の情報を配布するには遅い(早いメディアの例: tokuhirom氏のブログ)
    • 陳腐化しない内容
  • 読者層 → ギークは飽きっぽい
    • No Moose, no Catalyst, no DBIC
    • YAPC::NA では、上の三つを扱っている。日本はいい意味で飽きっぽい
    • ギーク向けにすると寿命が短くなる
  • How Toをやるには人的リソースに限りがある
  • ダンPerlは「ビジネスツール」
    • Perlは赤ちゃん言葉から大人の言葉まで話せる
    • 仕事を終わらせる、仕事を得るツール
  • やるべきこと → 偏見を無くす「遅い、醜い」
  • perlには4つの時代がある
    • Perl/CGIWindowsPHP」の時代の人々は、今ある程度のポストにある
    • →彼らに好かれないとPerlは使われない
    • メインターゲットは、これらの人々。
  • 「10年前」がテーマ
    • いいことも悪いことも書く
  • どのようにネタを仕入れているのか
    • 20年の歴史。インタネットが始まったばかりの時代から。
    • Googleはあまり使いたくない(正しい情報かが疑問)
    • CPANから探すのがよい
  • CPANのインデックスファイル → authors/00shois.xmlなど
    • 検索サイトは、 search.cpan.org が有名
    • search.cpan.org/dist/Foo-Bar, search.cpan.org/perldoc?Foo::Bar
    • 「CHANGES」を初めに見る → 登場した日がわかる。最新更新日が古ければ使われてない。開きが大きい時期はメンテナが変わってるかも
    • モジュールができた年代に、モジュールができた理由がある
  • CHANGESにない場合 → MANIFESTを見る
    • MANIFESTからテストの中身をそのまま見られる
    • その他、AUTHORSやSYNONIPS
  • CPANになければ・・・BackPANも利用
    • さらに、ソース, DIFF, CPANTSも情報
  • モジュールの情報が集まったら → ソース, Wikipedia, 過去のYAPC
    • perlfoundation でお金の流れから注視しているとこがわかる
    • ほか、youtubeやスライド、各プロジェクトのサイト(noc.perl.orgにも情報有り)
    • www.perl.org/community.html
    • lists.perl.org MLの一覧 → ただし、GMANE, MarkMailの方が見やすい
    • IRCのログ irc.perl.org にチャネルがある → ただし、secretのチャネルもある。ブログに張り付けたりするのはマナー違反
    • www.perl.comの記事 → 編集者さんのついている記事
    • 雑誌類 → Perl Review, $foo(de)
    • Advent calendar や use.perl.org(→ blogs.perl.org)
  • これらは一部で、他にもたくさん読んでいる。1つの記事に1〜2日、1週間以上かかる
  • 歴史を調べてると、色々なことがわかる → the futureやa future。
    • 記事を読んで、今のPerlの姿を見て欲しい。

xaicronさん「let's database testing!!」

  • DBのテスト → insert, update, trigger などの事故を未然に防げる
  • 今日の話は、MySQL(ORMの話はなし。自社ではDBIをそのまま使うことが多いため)
  • 鉄則 → ローカルでテストできること
    • ステージング環境や自分PCで立ち上げっぱなしのDB → 毎回結果が変わるのでNG
    • SQLiteはNG → 環境が違って意味がない
  • Test::mysqld (@kazuhoさん作)
    • mysqldの自動起動、終了。$mysqld->dsn で接続情報がもらえるのでそこにつなぐ
    • デモ
  • Text::Fixture::DBI を使ってデータ投入
    • テーブル作成、triger や procedure、既存のDBからschema定義の取得など。YAML出力も。
    • デモ
  • これらを直接使うのは面倒。テスト用モジュールを作るのがオススメ。
  • DBIと親和性が高いモジュール
    • SQL::Abstract (SALの抽象化)
    • DBIx::DBHResolver (複数のDBの切り替え)
    • DBIx::Connector (DBハンドルの局所化、fixupによる再接続、トランザクション)
  • テストの流れ
    • mysqldを立ち上げ、 fixtureでデータを入れ、値を取得してそれが正しいかをチェック
    • fixtureには接続情報を渡し、yamlで初期化
  • Test::mysqldの問題点 → make test が遅い
    • Maketestの変更にて対応可能 → Module::Install::ExtendsMakeTest を使うと簡単
    • → replace_default_make_test がMakefile.PLから使えるようになる
    • 高速化!

Dan Kogaiさん「use LLEval;」

  • x86を話す予定だったが、カジュアルな内容に変更
  • LLEvalは23言語のサポート(実際は26言語)
    • 実は適当につけた名前だが、確定してしまった
  • iPadは便利だが、Perlがない。なぜ? → Jobs「stay foolish!」
  • LLEval経由なら動く → RMSの例
  • デモ → LWP::Simpleを使う例
    • 「1 while 1」 → 1秒後に終了する
    • perl6のデモ -> 約3秒。Perl6だけ4秒ルールとなっている
    • Haskell, JS, POST SCRIPT, Python, BF, iota, のデモ
    • JS はspider monkeyを使っているが、 ary.reduce はデフォルトでは入ってない
    • Mathmatica はLLEvalでは非対応。
    • 「fork while 1」 システムコールは禁止
  • LLEvalはライブドアの研究用のサーバで動いている
  • LLEvalはMASHUP AWARDS 6の対象となっている
  • 質疑応答
    • Q. x86は?
    • A. コメントアウトすればすぐ。セキュリティ的にちょっと恐かっただけ
    • Q. 出力はSTDOUTのみ?
    • A. 今はSTDOUTとSTDERR。他の出力方法もサポートしたい。

Toru Yamaguchiさん「Inside Mobage Platform」

  • Open Social Container
  • 用語
    • Container(SNS本体)
    • Gadget Server(Sindig担当)
    • JS API(Social DataにアクセスするAPI)
    • Core, Social API (JSON-RPCはバックエンド。RESTful APIはモバイル用)
    • View: canvas, home, profile, mobile(ガラケー向け。Extension)
  • ZOOKEEPERでのcanvasの例
  • Apache Shindig とは
    • オープンソース実装
    • MySpaceは使っていないらしい
    • DeNA, mixiJavaGREEPHP
    • 認証部は自前で結合する必要がある
    • JS APIは手直しが必要。RESTful + JSON-RPCのデータ取得部はJavaPHPで実装が必要
    • よくSpec違反がある → Shindigを真とする
    • Gadget Parsing, Rendering は仕様が煩雑なので自分で実装しない方がいい
  • Applicationは直接外に出れない(XHRの制約)ので、Gadgetサーバに代理してもらう
  • 認証 - Security Token or OAuth
    • Security Token をJSで使えるコードとして埋め込む
    • Shindig::Authen::Java::XXXX のようなクラスを自作 → Javaとも互換性有。そのうち公開
    • /social/* のリクエストだけ、リバースプロクシでShindigではなく自前のアプリに送る
    • 他、config/container.js の更新、lockedDomain、features以下のJSの修正(Specに忠実になるよう直す)
  • SocialAPIの作り方
    • Spec準拠、テスト作成、シンプルかつ速く、可読性を高く
    • 既存のWAFは不要
    • lighttpd → 今ならApacheを使うが、最初のチョイスを利用
    • Plack + FastCGI → 今ならStarman/Starletかも?(未検証)
    • rpmCPANモジュールを管理している → 今ならlocal::lib
  • Dispatcher → 設定はすべて *.pl 。Router::Simpleの利用。
    • Intercepting Filterパターンを利用
  • モデル
    • APIで必要なロジックの記載。戻り値はFormatterにてArrayRefやHashRefなどに整形
    • オブジェクトは利用しない
    • Object::Container にすべて突っ込む。fork前にやる(Copy on Write)。Configで制御
  • DB, Memcachedへのアクセス
    • DBIx::DBHResolver, DBIx::Connector
    • SQL::Abstract, DBIx::AbstractSequence(社内)
    • 接続情報はマスタとなるmemcachedに集中。Cache::Fileにキャッシュ。
  • DBIx::DBHResolver
    • オブジェクトとしてもクラスとしても動作
    • 各種設定ファイルでの記述(Config::Any)
    • DBIサブクラス、DBIx::Connectorでも接続可能
    • ShardingしたDBの管理機能(予め分割方法は決めておく。JOINは適材適所)
    • resolve_node_keys()
  • DBIx::Connector → レキシカルなハンドル、txn + commit
  • SQL::Abstract
    • JOINやGROUP BY が複雑だと、ヒアドキュメント
    • 表現力が足りない部分もある。新しいSQL作成モジュールがあってもいいかも
    • Plugin::InsertMulti バルクインサート。ただし、1000件くらいを上限にすべき
  • MySQLのパーティショニング → 日時の Range Partitioning が主
  • MySQLのTRIGGER
    • アプリケーションを変更しなくても特定の処理が可能 (逆にそれが気持ち悪いかも)
    • スキーマ変更時に、トリガーを使って自動で親子関係の日付を入れたりできる
    • TRIGGER + Q4M (検証中。古いテーブルにinsertがあった場合に必要なジョブをあげる)
  • Worker
    • Q4M, Gearman。原則すべてのサーバに同じコンテンツ。
    • ラウンドロビンでは負荷分散しきれないことがある
  • 最近の事例: Cache::Memcached::Fast に no_wait がなかった
  • Q4Mは実績があり、十分信用できる。ただし、初めて経験するような動作も起きるので覚悟は必要
  • 質疑応答

Lightning Talks

charsbarさん「Top tens of 2009-2010」
  • (今年も)輝け全日本最強CPAN選手権
    • HIROSEさんがTOP、MORIYAさんが2位。4名新しい人が!
  • 他、台湾、ノルウェイ、オーストリア、イスラエル等のトップ10を集計
  • 日本は264人(多い。ただし人口比の問題)。オランダ人は0。
  • 面積比で考えるとIcelandic
ふしはらかんさん「opts.pm」
  • 後夜祭来てね! 以上!!
  • えーー(ブーイング)
  • opts.pm → コマンドラインオプション
    • Getopt::Long はまだまだ使いにくい
    • 型、デフォルト値の指定、usage、オブジェクトへの変換
Cornelius (c9s)さん「vim & perl
  • PerlOmni -> Vim の保管
    • Perl文法は複雑
    • 動的言語。補完が遅い
    • VimLは汚い
    • クラス名、オブジェクトメソッド等の補完
  • AutoComplPopとの組み合わせのデモ
    • Moose のAtribute にもスマートに対応
  • git から持って来てインストール。Windowsなら @mattn_jp さんのパッチを利用
  • CPANモジュールの検索、インストール
  • ゴーーン!(時間切れ)
上田智さん「もっとMySQL
  • WAFの目的「小規模」「大規模」
    • リソース制限が厳しくなると、3層でやる必要はない
  • MySQLだけでいいじゃないか! → HTTP Plugin
  • 今後の目標
    • ストアドプロシージャによるO/Rマッパ、キャッシュ機構、UDF-ng (MySQLPerl(Catalyst)まで動かす)
Koichi Taniguchi (a.k.a. nipotan)さん「There are so many ways to shuffle it」
  • 他の人が他の人のコミット履歴を見て説明する
  • シャッフルが必要
    • rand関数の利用を監視
    • MD5を利用
    • 可能な組み合わせを対象人数より多く
      • Perl6では Z オペレータが可能
    • TIME TRIAL → 6題目王者まで紹介
    • 毎週使用する文字が禁止されて行く
  • Livedoor では shuffleの名人を募集しています!
hakobeさん「ページャ実装マニアックス」
  • ページャとは? → Googleとかで検索すればわかる
  • 108のページャ実装を紹介
    • Hatena::Bookmark::Pager (Data::Pageベース)
    • Hatena::Diary::PagerMaker (HTMLを直接生成)
    • Hatena::UgoMemo::Pager (データ生成までページャにやらせる)
  • app->pager があったりする
  • ページャとは → SQL結果、件数、日付、キャッシュ等の要素
  • 残り105個
    • Hatena::UgoMemo::Pager::Merged (SQLから)
    • Hatena::UgoMemo::Pager::ArrayRef (ArrayRefから)
    • CachedqueryOffset, Binary, Lite・・・
    • ゴーーン!(時間切れ)
Tokuhiro Matsunoさん「液晶が割れたためスライドなしでトーク(仮名)」
  • 速いHTTPクライアントが欲しい
    • LWPは遅い。特にRPCで欲しい。Curlも遅い。
    • WWW::Curlより25%以上速い → もっと速くなるはず
    • 日本に色々な能力を持った人がいる → ブラウザが作れる人、ネットワークが強いkazuhoさん、XSのgfxさん、win32担当のmattn_jp, charsbar, xaicronさん
  • 日本には素晴らしい能力を持った人が居るので、作りたいものがあったらどんどんハッカー達に伝えよう
Canada, Masakatzさん「岡山.pm。都会.pm。」
  • 岡山.pmを主催した
  • 岡山とは? → 中国地方、政令指定都市
  • 参加者の推移 → 8倍以上に!(1名から8名)
  • 問題点 → 人が集まらない。問題点すら集まらない
    • mixiや知らない人の掲示板等にかいて怒られた
    • 7/50人。本人+知人Yさん+その知人7名+牧さん
  • 今後の展開 → 人を増やす。増やす方法をtwitterで募集する(した)
  • ・・・TLには特に反応無し
まかまかさん「Perl同人誌の宣伝」
  • (飛び込みのLT)
  • Acmeモジュール
    • 全部空でいうのは難しい → Acme大全2010
    • Acme::CPANAuthors::Douchも
  • バージョンアップ
    • ダラク(キャラクター)が大きくなった
    • 用語集
    • デコシール付き → 貼って剥がせる
dameninngennさん「草とPerl
  • 草"植"系 「wの多用www」
  • キーボードまで全部「w」
  • Glassでは物足りない
  • Werlの実装
    • 予約語が草 → print は WWwwWW
    • 誰得? 俺得
  • TAKESAKOさんの予約語プログラミングとの合体
    • wwencode のデモ
大西康裕さん「Test::Apache::RewriteRules で mod_rewrite のテストを書こう」
  • はてなページャーをたくさん作った
  • mod_rewrite → スイス製アーミーナイフ
    • はてなではreverse proxy として活用
    • Squidから同一URLで異なるコンテンツを返す時に変換しておく
    • Rewrite定義が、179行も
  • RewriteRule → テストツール。
    • HTTPリクエストを投げ、どのURLにマップされるかをテスト
    • Apacheが実際に起動される
    • 本番のconfをテスト用に置換をしてテストできる
    • is_redirect, with_request_method, with_docomo_browser, with_http_cookie など
  • 自信を持ってhttpd.confに1行追加できるようになります
Yusuke Wadaさん「Facebookを流行らせたのはボクです」
  • Facebookがすごい? → ブームを起こせるBlogがすごい
  • HNS(ハイパーニッキシステム)でブログを始めた。BLOG HACKS。
    • Perlを書き始めるきっかけに
    • dankogaiさんの勝手に添削 → 一瞬腹が立つ → けど、納得
    • 晒すのは大事
  • YACP Asia 2009 → casual なPerlのエントリ
    • miyagawaさん「On module writers and users」
    • PerlCasualを興すきっかけになった
    • ブログを書いているkoba04さんに声をかけたらやってくれた
  • TwitterSNSmixiFacebook ではそういうことはできない
    • ブログは情報発信の場。まず、YAPC Asia 2010の感想を書いて下さい!

miyagawaさん「The Tale of Plack

  • 2本しか飲んでないそうです
  • しばらくはSan Franciscoに住むが、日本には定期的に帰ってきたい
  • six apartはSAY: (SAYMEDIA.COM)
    • six apartの名前の由来 → 創業者2人の誕生日が6日離れていたから
    • SAY: は ビルトイン関数だから、まあいい名前
  • PSGI/Plack
    • PSGIが仕様、Plackが実装。Wikipediaにも載ってる。
    • コードの見本。(今日のコードはここまで。)
  • Plackは受け入れられている
    • 今回のPlackに関係するトーク → 10以上。
    • 利用している企業も増えている → 11社の例
  • なんでPlackが成功したのか?
  • 1) 借りるより、盗む → HTTP::Engineは借りるだけで既存の部分は残っていた
    • Plackは、RackとWebOb.py からほとんどを盗んだ。
  • 2) 後発の利点
    • WSGIは2003年、Rackは2009年
    • 遅れていくと、いいものができている(鍋の例)
    • RackやWSGIの成功、失敗がわかる
  • 3) JFDI → Just F*cking Do IT
    • やるしかない。やりたい人が勝手にやってよい「Don't ask us do it.」
  • 4). stfuawsc "Shut the fuck up and write some code."
    • 喋っている暇があればとにかくコードを書く
  • 5). TIMTOWTDI (TimTowdy)
    • BSCINABTE (But sometimes consistency is not a bad thing either) = bicarbonate?
    • →流行っている。Moose などのコンテキストで使うことが多い。
  • PSGI → サーバとクライアントで共通のインタフェースができた
  • 6). KISS(keep it sinmple*1 and stupid) (UNIXの標語)
    • なぜOOにしないのか? → シンプルにしたほうがよい
  • 7)Perl: a glue language
  • 8). 名前の付け方を変えている
    • 今までの名前空間は長過ぎる(::が多い)
    • タイプが面倒。会話もめんどくさい。省略形で書く。
    • Rubyのやり方を真似る → トップレベルを積極的に使う
    • Starman(Net::Server::HTTP::Prefork::PSGI、にはしない)
    • トップレベルの名前を付けるのは、大変。しかし、愛着も沸く。
  • 9). People
    • たくさんの参加者との交流 → 世界各地で撮ったPerl Mongersの写真を次々と公開(何十枚?)
    • 色んな人とチャット、プレゼン、ビールで交流
  • 今日はなぜ集まっているのか?
    • 仕事も出身もやってることも違う
    • みんなPerlを使っている。Perlが人々を糊付けしている
  • YAPC::Asia → 毎年大きくなって来ている
    • 2回目以降の開催は大変
    • 開催が大変であれば、Jesse氏のように適切な仕組みを整備し、みんなで続けて欲しい
  • 次回以降も(日本か、どこかで)話ができることを楽しみにしている

941さん「クロージング」

  • YAPCでのダメージ → 足と愛機(S90)が壊れた
  • 開発チームだが開発はしない → ブログ、イベント担当
  • YAPCが成功するより先に @941++ と言われて脅されて頑張ってるw
  • YAPC 2010の某日
    • 今夜開いてるか上司に呼ばれた。ただ酒を飲みにいくとJPA理事会だった
    • 「今年のYAPCは厳しい」 → 誰もお酒を飲まない状態
    • 「俺やりますよ」 → そのまま丸投げ
  • Twitterで要望を聞いた → 0件
    • Tシャツ変更タイム(何枚来てるの?)
  • たくさんのスポンサー、東工大さんに感謝 → 東工大Tシャツ
  • メインスピーカー、スピーカー、会場の人々、に感謝
  • ボランティアスタッフは壇上に
  • エンターテイナー賞の発表(SQL文で集計)
  • ベストトーク賞 次点
    • nekokakさん「省サーバ運用」 (Mac mini メモリ8GB)
  • 抽選タイム
    • LUFB9GXEの人 → iPod nano (use strict; の刻印入り)
  • ベストトーク賞
    • tokuhiromさん「モダンな Perl5 開発環境について」 → MacBook Pro 8GB
    • 「頑張ってこれでみなさんの役にたつモジュールを書きます」
  • 「来年のスピーカーはあなたです」 (c) yusukebe
  • 最後に @941 さんに拍手 → 来年もお願いします

合わせて読みたい

*1:Thanks to @techno_neko