こんにちは!近頃mihimaru GTの曲がすごく好きな、月曜日の悪魔ことYappoです。
さて、僕の大好きなWassrには「飲みに行けるよ!」という素敵なボタンがあります。
とある楽天の偉い人も
すげえ、お前作ったの?と言ってしまう程画期的なボタンで、一時期は毎日のようにこのボタンがきっかけで飲み会が開催されていました。
最近はビッグウェーブにのるっきゃないし、九州の方にとんでってるっぽいTKSKっぽい人が「これtwitterのOAuth使って移植したり、ボタンの内容変えればよくね?」 みたいな事もいってたので、ちょっとこのボタンをTwitterに移植してみました。
Surutter - するったー名前の由来的には、お酒を飲む事を"する"、何何を"する"のような「する」から来ています。
早速一つ目のボタンとして本来の目的の飲みに行ける!ボタンを再現してみました。
ランダムに出てくる言葉のリストは、にぽたんさんのところから拝借しました。
Wassrと同じように、ボタンを押した日が過ぎたら「する人一覧」がクリアされます。
今回は、殆ど使った事の無い物を使って試してみたので作り始めてから12時間くらいたっちゃいましたね。途中遊んだりしてたけど。
まず、エディタ、親切な人が.vimrcをくれたんで、折角だから最初から最後までvim使いって書いてみた。これが結構足かせになった><vimって普段viewとかsudoな時でしか使わないから慣れなくて><
つぎ、Plackを初めてまともに使った、なんつーかbuilderとかmountでハマった(mountつかったら最後までmount使い通さないといけないとかそういうの)ぐらいで、あとはすんなりいったけど、生Plackしちゃったので書かなくても良い部分を沢山書いた気がするけど気のせい。
テンプレートエンジンとしてHTML::Zoomを使ってみた。これって
$("#foo").append("<DIV/>".text("おうっふ♡"))的な事をやる方法が判らなくって、一枚のindex.htmlに全ページ分のDOM要素書いといて、controllerによってdisplay:none;するとかいう泥臭い方法とった。
ぶっちゃけこれだったらhtmlは全部staticで吐き出して、あとajax使ってしまうFicia方式にしてしまえば楽だった気がするが、HTML::Zoom使うのが目的だったので気にしない。
次にデータベース、DBIx::Skinny使いたかったんだけど、俺にはこれを使うよりData::Modelを使ってマシにしてく作業が大事なのでスルーした。
もし負荷が増えたら、Driver::Cache使って透過的なキャッシュでも突っ込んで、やっぱりこんな無差別にmemcachedにキャッシュするなんて糞がやる事だぜheheheとか後悔しながら別の手を打とうかな。
最後にNet::Twitter::LiteでOAuthあたりの実装いれた。TwitterのOAtuhとか使うの初めてだったけど、はてなとかライブドアのとかより簡単だと思った。
長々と書いたけど、技術的に面白い要素は一切ない。
ということで、どうぞご利用下さい。