catalystのサンプルアプリとソースを公開してみる

モダンPerl入門を読んで色々勉強したので、サンプルアプリを作って自宅サーバで公開してみる。
http://niget.net/
ソースはgithubで晒し中。
http://github.com/hirafoo/niget/tree/master
誰かの参考になったり、disられたり、あれこれ議論したり、何かが起こったりするのを期待中。


とりあえず、このアプリの使い方とか。

  • ニコニコ動画の任意の動画のURLを入力
  • 適当バリデートを通ったらDBに保存
  • 5分に1回cronが走る。内容は、ニコニコ動画APIを叩いて、動画本体のURLと動画の名前を取得
    • APIは2個ある。本体のURLを取得する部分は小飼 弾さんのスクリプトを使わせてもらった
  • 取得した内容をDBに保存。取得済みの動画は削除。
  • あとは動画本体を落とせばいいじゃない

以上。
まーサンプルアプリだしね!
でも、本体URLを取得できるwebサービスは沢山あるけど、それをDBに記録して、ログを公開してるとこって知らなかったので。
そもそもニコニコ動画をそんなに見ないから知らないだけかもだけど。


本題はこっち。

アプリの特徴

  • catalystからモデルを分離
    • $cに依存してるモデルなんて不要。というわけでModelディレクトリ削除。Catalyst::Model::Adaptor系も不使用。
    • webアプリ、CLIスクリプトのどれからでも統一的に扱えるモデルのインターフェースを用意
  • ActiveRecordライクなモデルの使用
    • User->find_by(id => 3) とか。
  • DBIC改造
    • 神が作ったモジュールは非常に素晴らしいのに無名。ふんだんに使ってみた。やれることは
      • 作成・更新時刻が自動で入る。しかも設定個所はSchema.pmだけ
      • Schema::Hogeからカラム定義を削除。あんな長ったらしいの要らない。書きたくも見たくも無い
      • DBICが大好きなエイリアス「me」とさようなら
      • テーブルは複数形で作って、アプリから扱うときは単数形

あとモジュールじゃないけどテクニックが詰まりまくってる。それをパクって公開する俺。


ぱっと出るのはこの程度。
さて、人の目に触れるかな。触れたらいいなー。