Acme::Suspender を支える技術
タイトルは釣りです。
YAPC::Asia Tokyo 2012 の二日目LT でお披露目した、Acme::Suspender というモジュール(?) が
なにゆえ産み落とされたのかという経緯と、その進化の推移について書きます。
僕がやったLT については、
http://yapcasia.org/2012/talk/show/7bfe4042-0aec-11e2-a7a5-001636ebe579
をご参照いただければと思います。
経緯(くわしい)
忘れもしない2012年8月23日。僕はまだ21歳でした。YAPC::Asia Tokyo 2012 のイベントレポーターの打ち合わせのために、
市ヶ谷の技術評論社さんに出かけた時のことです。
打ち合わせ後の懇親会で、イベントレポーターの皆さんは言いました。
「dankogai さんといえばサスペンダーだよね」どこぞの妖精さんみたいですね
「サスペンダー引っ張りたい」
「でも現実世界で引っ張るのは……」
「だったらソフトウェア的に引っ張れば良いんじゃ」
「でも、ただ引っ張るのもつまらないよね」
「それなら、github のpull-request の数が増えれば増えるほどサスペンダーが伸びれば良いんだ!」
「それだ!!! つくろう!!!」
その3日後に原型が出来上がりました。
Acme::Suspender の原型
原型なんて捨てちゃった……と思ったら、ご丁寧にも僕のgist に上がってました。gitPullSuspender_proto
改めて見ると大変簡単なプログラムですね。
WebService::Simple でクエリを投げて、その結果を使ってpull-request の数を取得していますね。
(後述しますが、この方法には問題があるのでそのうち直します)
(あと、ココに書いたように、LWP::Protocol::https を入れておく必要があります)
あと、このプロトタイプは画像関連の処理を一切していません。pull-req の数に応じてメッセージを返すだけです。
理由は簡単。まだこの時点ではあの画像はこの世に無かったからです。
なお、この数日後にあの画像が出来上がります。
Acme::Suspender の起こり
このプロトタイプを@ytnobody さんに投げたところ、カッチョイイ感じになって返ってきました。ソースコードはgithub に転がってます。
ytnobody/Acme--Suspender · GitHub
すげークール! カッチョイイ!!
Class::Accessor::Fast とか、Furl とか使ってるし!!
しかもテストスクリプトとかもあるし! すげー!
で、画像追加したり、マイナーなバグフィックス等を経てYAPC::Asia Tokyo 2012 でのお披露目と相成ったわけです。
Acme::Suspender の問題点
- pull-request の数が31個以上あっても、内部的に30個として扱われてしまう
- フロントエンドが貧弱すぎる
- Acme::Suspender って名前だけど、そもそもこれモジュールじゃないよね
1.pull-request の数が31個以上あっても、内部的に30個として扱われてしまう
なんか、クエリを投げる先を間違えているのかもしれない。30個を超えてpull-request の情報を取得できないので。2.フロントエンドが貧弱すぎる
バックエンド (Suspender.pm) は割としっかりしています。(それもそのはず、@ytnobody さん が作った部分だし)一方で、フロントエンド(sample.cgi, あとSuspender.pm の画像出力の部分)があまりに貧弱ゥ!
「2012年にもしっかりとcgi の息吹は根付いているぞぉー!」と言えば聞こえは良いですが、ハッキリ言ってショボいです。
もうちっとイケてる感じに直したい……
イラストを描いてくれた人の紹介
正式に許可が下りたので紹介します。このモジュール用にdankogai さんのイラストを描いてくれたのは、僕の友人の@armaments 君です。
大変感謝! ありがとう!!
追記
近いうちに、dankogai さんの画像がカラー化したりしなかったりするらしいです。ゆるくお待ち下さい!