読者です 読者をやめる 読者になる 読者になる

黒縁眼鏡は海を飛ぶ

IT中心にそこはかとなく

Mojoliciousの勉強がてらWebサービスもどき作ってみた

Perl Mojolicious

折角だしなんか作ろう

折角Perlのお勉強してるし、Mojolicious使って自前のブログ作ったりできたし、ひとつアイデア出して作ってみようということで作ってみました。

tweet emotions - twemo -

「お、どれどれ見てやろう」と思ってくださった方の期待を9割ほど裏切っていると思いますが、ただのtwitterまとめサイトですすいませんごめんなさい。

なんで作ったん?とかどれくらい時間かかったん?とかどうなってんの?とか、備忘録がてら書きます。

環境

  • 言語:Perl
  • WAF:Mojolicious
  • DB:PostgreSQL
  • O/R Mapper:Teng
  • フロントエンドWebサーバ:Nginx
  • バックエンドWebサーバ:Starman

自前のブログを作った時はDBを使わなかったことと、DBホントに触ったことがないから触りたいなーって思ってたこともあってPostgreSQLを使ってます。 素人が思いつきで使っているのでテーブル設計とかなく、ただただデータを突っ込むだけの器になってますが、基本操作覚えられたし良しとしたい。

作るにいたった経緯

  • おもしろいtweetってたくさんあるよなー
  • 2chまとめサイトみたいに手軽に見られたらいいね
  • ただまとめるだけだと既にありそうだ
  • どうせなら「喜怒哀楽」でカテゴリ分けできたらよさそう
  • 完全自動化目指せるなら目指そう!

完全自動化どころかほぼ手動更新になってしまったのですが、それは今後の課題ということで…

実装

どう実装しようか考えた時にまず思いついたのは、TwitterアカウントでおもしろいtweetをRTしたら自動で取りこむようにできないかな?というものでした。
当初はAnyEvent使えばすぐできそう!と思ったりしてたんですが、AnyEventホントに使えないんですよ…AnyEventがダメっていってるんじゃなくて私の実装力のなさの話です。
現状はcronで定期的にタイムラインを監視して、更新があれば取りこむというようになっています。

で、喜怒哀楽でカテゴリ分けしようと決意したので、RTしたtweet解析して自動的にタグ付与してDBに格納して…と考えはしたもののできてません。
tweet解析をどうやるかってところで詰まってしまって、にっちもさっちもいかなかったので、ただのRTじゃなく引用RTにしました。
一言コメントつけて、それを元にカテゴリ分けしてDBに格納しています。

時間

始める前は、「まあただのまとめサイトだし2週間くらいで実装できるんじゃね?」と見積もっていましたが、レイアウト整えるだけで2週間かかってます、はい。
ヘッダ画像とかfaviconやら作るのに3日、Router,Controller,Viewやらをごにょごにょするのに2週間、tweet取りこむ処理部に1か月(笑)等々、余裕で2か月はかかってますはい。

そこからNginx側で静的ファイルキャッシュさせてーとか、JSの読み込み順とかの最適化(最適化できてるとはいってない)して今に至ります。

感想

特に目新しさもないモノですが、作ってるときは本当に楽しかったです!
ちょこちょこ勉強してたものが形になった感じがして、「おー自分でもとりあえず作れるんじゃん!」という気持ちになりました。

メンテナンスしつつ、次も何か作りたいなぁなんて思ったりしているので、次はセッション管理とかPlack::Middlewareとか他の要素も使えたらいいなって思ってます。