2005年05月06日
Catalyst試してみた
PerlハカーもすなるCatalystといふものを...ということで、今更感爆発ですがちょっといじくってみました。
というか、NDO::Weblogのnaoyaさんが取り上げておられたのをきっかけにしたのですが、実際のところnaoyaさんくらいに噛み砕いてくれないとさっぱり使い方が判らなかったというのでFA。
とりあえず作ってみたのは、このブログの個別エントリについている、記事関連商品のAmazonアフィリエイトを作ってくれるJavaScript貼り付けサービスを、ページへのアクセスがある度にサービスにJavaScriptを要求するのではなく、一度取得した後はしばらくここギコサーバにキャッシュさせておいてそれを表示する、というもの。
要するにjscacheや中継君JSみたいなのを自前で用意した、という事ですが、これは、これらのサービスでキャッシュすると、キャッシュしてくれるのはいいのですが、キャッシュが切れた時(=再度サービスに結果を聞きに行く時)のサイトアクセスが重くなる、というのが気に入らなかったので、JavaScriptの発行は飽くまでキャッシュされているものを表示するだけで、キャッシュの更新はcron等でアクセスとは非同期に行うものが欲しかったので、作ってみました。
(あ、ちなみに作ってみて完成してますが、以下の記事作成過程の説明やチュートリアルではないです。飽くまで使ってみた印象の記載だけなので、その辺期待しないように)
とりあえず、naoyaさんのチュートリアルに倣うかたちで、Catalystのインストールから...といきたいところだったんだけど、なぜかCPANモジュール経由でインストールできない。
どうも依存性のあるモジュールを再帰的に取得するのに失敗しているっぽい。
仕方ないので、Catalyst本体、及びBundle::Catalyst::Everythingに記載されている副モジュール群を、依存性を確認しつつ手動インストール。
これだけで半日仕事、ちょっと萎え。
インストール後、再びチュートリアルの手順に沿ってCatalystのヘルパースクリプトを走らせる。
するとプロジェクトソースのスケルトンが、Perlの標準インストーラ形式でさくさくっとできてしまう。
トリガスクリプトまで自動作成されて、FastCGIバージョンのトリガも作ってくれるので、デバグ用簡易HTTPサーバでテストしてやった後、バグがなくなればインストーラでPerlのモジュールツリーにインストールして(外部ライブラリでもいいけど)、とりがスクリプトだけApacheのドキュメントルート上で実行してやれば、後はよきにはからってくれる。
チョー楽チン。
ただ、この程度の軽い処理のものをサクッと作るのにはSledgeと比較してもとても楽なんだけど、ケータイサイトとかでっかいものを作ろうとすると、使い慣れてる事もあるし、またセッションやセッション管理先や入出力のエンコーディング変換等、脂っこいところがシステム化されているSledgeの方がまだ今のところ作り易いかな、という感じがする。
Catalystはヘルパースクリプトの充実等、開発環境を整えるというアプローチではSledgeより格段上を行ってるような気がするけど、実際のコーディング上でのデータ処理のフローはそれほどシステム化されてなくて、開発者任せにされているような気がする(逆に言えば自由度が高いわけだけど)。
一方Sledgeは、開発環境を整えること自体は割とプリミティブに手探りな感じ(俺に腕がないからそうなるだけかもしれないけど)なんだけど、一旦案件にあった枠組みができれば、セッション管理や入出力処理なんかから一切解放されて、本当にロジックだけを組むのに集中できる感じがする(処理全体のデータフローの中で、前処理・後処理をフレームワークに安心して任せきって、今のターンの処理だけに集中できる、という感じ)。
そんな印象。まだCatalystでそんなたいしたもの組んだわけではないので、今のところまででの思い込みだけだけれど。
ただ、それぞれの特徴は無視した上で、「モノ」としての完成度を比べれば、デバグモードでのログの出力機能の充実や、デバグ支援機能の充実で、Catalystの方が上かな、とは思う。
デバグ支援機能で驚いたのは、Catalystフレームワーク上に乗っかったうえで動作している際に、例外が発生すると、美麗なバグレポート画面が自動生成されて、主要なオブジェクトの中身が自動でダンプされる機能がついている事。
これはかなり便利。
という感じで、まだまだ使いでがありそうで楽しげなアレですが、今日のところのレポートはそんな感じです。
[composed and posted with ecto]
Excerpt: (時事通信)より 有線放送大手USENは16日、ライブドアの経営再建を支援することを決めたと発表した。フジテレビが保有するライブドア株12.75%をUS...
Weblog: オタク生活を晒すブログ
Tracked: 2006年03月16日 19:08
どうも旨くキャッシュが効いていない気がします。こちらのサーバキャッシュへのリクエストが結構来てますよ。
Posted by: drk at 2005年05月08日 08:37すみません、
・cron自体の設定ミスで、分単位でチェックプログラムが走っていた
・一度アクセスがあったページに関しては、Cacheが切れるたびに全ページのJavascript記述を更新していた
という、設定ミスと設計ミスのダブルでかましてました。
Cacheが切れたからといってアクセスがほとんどないページをいちいち更新するのは無意味なので、アクセスが頻繁にあるページに関してはCacheが切れる毎に、アクセスがないページについては、一度アクセスされると次のチェックタイミングで更新、と言う形に設計を変えました。
一応両方直しましたが、まだおかしいようでしたらご連絡ください...。
Posted by: ねね at 2005年05月08日 11:40旨く動作しているようです。ここギコ!のアクセス数ってスゴイですね。
たまたまアクセスログが2G超えたのを機会にログ見てたら、7日からログが2倍になってたりして...。
ところで、キャッシュプログラムの公開、楽しみにしてます。Catalyst での実装、結構、興味津々だったりしてまして。(w
Posted by: drk at 2005年05月08日 12:24いえ、すごくないです。
設計ミスで、設置後一度でもアクセスがあったページは、以後一定期間経過後定時更新されるようになってたせいです...。
それを、期限が過ぎても一度もアクセスされなかったようなあまり見られないページは、次にアクセスがあった時点まで更新されないように変更しました。
ご迷惑おかけし申し訳ありません。
![[ここギコ!]](http://kokogiko.net/logo.png)





・3Dどきゅめんと…って何?点字文書?(moscow_city4)
・MovableType 3.2、MT::App::Trackback.pmの修正(名無し)
・滝川クリステル?(Lymmerres)
・3Dどきゅめんと…って何?点字文書?(veles1234)
・PostGISとPostgreSQL幾何データ型の比較(Bad credit loan)
・滝川クリステル?(SweapeBar)
・3Dどきゅめんと…って何?点字文書?(veles1234)
・ケータイ国盗り合戦が地域振興策「国おこし」「国札」を投入(宋)
・mixiアプリモバイルプラットフォームはまだ位置ゲーには使えない(まさに)