新しいblogに移行しました

新ブログ "All Yout Bugs Are Belong To Ass" に移行しました!

2012-03-26

[Perl]Hachioji.pm #15 でペアプロしてきた

毎度おなじみHachioji.pmに参加してきました。
通産16回目の開催となる今回は、前回(実は参加してたけど疲れ気ってレポート書けるほど物事を記憶していなかった;;)から@hirobanexさん主導ではじまった「pre-Hachioji.pm」というハッカソンからの参加です。

ハッカソン、9:00 AM 開始だったけど

のろのろと11:00 AM くらいに会場にIN。この時点で自分以外に既に4名がコード書いたり書いてなかったりしてました。
ペアプロ自体には「お題」が設定されており、今回は「Kossyを使って掲示板をつくる」というものでした。
なんでKossyなのかとか、その辺のいきさつについては、こちらに色々書いてあります。

最初の1時間くらいはだらだらと。

最初はペアプロの相手が居なかったと言うこともあって、主宰の@uzullaさんと、中国のスマホ向け開発事情やPHPのWAFなどについてだらだらと情報交換と言う名の雑談をしておりましたが、しばらくして、初参加の@magicdriveさんとペアを組むことに。
彼はそれまでJava(主にAndroid-app)メインだったにも拘らず、YAPC::Asia参加をきっかけにPerlで出来る業務へと転身したというツワモノ。Perl自体には大体1年くらい触っているとのことでした。

ペアプロやった!

今回は僕のほうがPerl使用暦が長いということから、主にmagicdriveさんに手を動かしていただくことにし、僕はコーディングのサポートに回りました。
まずkossy-setupに始まり、機能要件の明確化、APIの策定、基本的なハンドラの書き方の説明、データストアとORMの選定、依存モジュールの導入、model実装、handler実装、view実装の順に手を動かしていただき、ORMにはTeng、データストアにSQLiteをそれぞれ採用し、JSONを出力するAPIをviewからjavascriptを使って叩く方向で作っていきました。
結果的には、view以外のほとんどの部分について、機能実装を網羅するところまで行きましたが、ひとえにmagicdriveさんの理解力の高さに拠るものと思っています。
また、@umeyukiさん / @hirobanexさんペアは別のアプローチ(おそらくviewはほぼてきていた?)で実装を行っていたようです。
ちなみに、実装時間が短時間だったことと、TengおよびKossyの構造/使い方をメインで説明していたため、TDDを実践できなかったので、次回以降の課題としたいです。

Hachioji.pm 本会

いつものことではありますが、@hide_o_55さんが猛スピードでまとめを書いてくださってます。

今回LTのお題は「スマートフォン」だったのですが、毎度の通り、@maka2_donzokoさんの現物(「すあま」と「本」)を使ったネタが強烈に記憶に残っております。というか、この時点で僕はだいぶ憔悴してたこともあって、記憶が途切れ途切れだったりします。。。
あと、PICKで写真取ったはずなのになぜか読み込めないので、読み込めるようになったら写真はるかも。

次回以降のハッカソン、何を作る?

本会の後半頃に、次回以降のハッカソンで何を作るかと言う話になったのですが、「IRCのようでIRCでないちょっとIRCなアプリ」とでも言うべきものを作ろう、みたいな話になっていたかと思います。たしかhide_o_55さんが「これ議事録取らなくていいの?」見たいなこといってたかと思いますが、これを書いている今、議事録が欲しい!と思っているところです。。。

2012-03-16

[Perl,メモ]ある無名関数の中でだけ使える関数を定義したい

sub hoge {  
    my $cb = shift; 
    my $caller = caller();
    local *{$caller.'::foo'} = sub { .... };   
    $cb->(); 
}

こうすると、

hoge(sub{ foo() })

が使える。