Perl の MVC フレームワーク Catalyst のお勉強〜その1〜
時間が空いているときに Catalyst のお勉強をしていたのですが、なかなか情報をまとめる時間がとれないのです・・・。思ったより苦戦したので少しずつでもお勉強の情報をまとめていこうと思ってます。今回はその1ってことで。Catalyst をこれからお勉強してみようって方の参考にでもなれば幸いです。
実際には、アプリケーションを1つ作ってみるってところまで既に2週間前に終わっていたりするのですが、その解説に至るまでどれくらい時間かかるんだろう・・・ (。・x・)ゝ
- スポンサーリンク -
Catalyst の基礎知識
Catalyst のフレームワークの構成は上図のような構成になっています。純粋な MVC ではなく、MV C + A(Apprication) のような構成になっていますが、Application の部分は Dispatcher 機能に相当する部分で、実装時には MVC の考え方で問題ありません。
Model 機能のベースとなるのは、Class::DBI (CDBI)
View 機能のベースとなるのは、Template-Toolkit (TT)
Controller 機能のベースとなるのが Catalyst
と覚えておくと Catalyst 入門者には理解しやすいと思います。逆に、CDBI や TT を今まで触れたことがない場合には、幾分敷居が高いことがわかります。Catalyst の前に CDBI と TT の勉強を済ませておくことを推奨します。
CDBI と TT のお勉強が終わったら、Catalyst のお勉強です。マニュアル関係を順を追って熟読することから始めます。当然英語ですが比較的簡単に読めると思います。初めに「Elementary, ... use Catalyst qw(初挑戦);」を読んでおくと日本語なので理解が早まるかも。
- Catalyst::Manual::Intro → Catalyst の使い方諸々はココに記載されています
- Catalyst::Manual::Tutorial → Hello! Catalyst みたいな感じの簡単なサンプルを使ったチュートリアル
- Catalyst::Manual::Cookbook→ Cooking。fileupload や 認証機能やエラーページのカスタマイズの説明
- Catalyst::Manual::Internals→ リクエストのライフサイクルの説明。prepare → dispatch → finalize
Catalyst によるアプリケーション作成手順
Catalyst のコーディング手順は固定化してて、次のような手順を踏んでコーディングを行っていきます。
- データベース設計を行い、データベース作成やテーブルの準備を行う
- catalyst.pl アプリケーション名でサーバ内に必要なプログラムや環境を自動生成する
- 自動生成された Helper スクリプトを使って、Model, View, Controller のスケルトンを自動生成する
script/アプリケーション名_create.pl view TT TT
script/アプリケーション名_create.pl model CDBI CDBI DBI:mysql:データベース ユーザ パスワード
script/アプリケーション名_create.pl controller コントローラ名- 自動生成されたコントローラのコードにプラグインの設定等やビジネスロジックを実装したり、テンプレートを作成してコーディングを進めていきます。 Catalyst は PATH_INFO の最長一致によって Dispacher を制御しているってのを念頭におきつつアプリケーションを作成していくと良いでしょう。PATH_INFO を利用した CGI を書いたことがない場合は、そこら辺も勉強しておいた方が良いと思います。
- script/アプリケーション名_server.pl でアプリケーションのテストサーバを起動し、http://hogehoge:3000/ で動作確認しつつ Try & Error
個人的な所感ですが、Catalyst はスケルトン生成とテスト環境は標準化されていますが、Sledge のようにセッション管理や認証機能等は標準化されていませんが、Catalyst::Plugin::Authentication::CDBI 等のプラグインを用いることで同じような機能を実装することができます。ビジネスロジックに専念して実装を進めればよい Sledge に比べて、もう少しアプリケーションの基礎部分を考えて実装を進めていく必要があるのが大きな違いですね。
Catalyst をお勉強するに当たって参考になる情報のまとめ
- search.cpan.org: Marcus Ramberg / Catalyst
- Catalyst - Trac
- Elementary, ... use Catalyst qw(初挑戦);
- qootas.org/blog - Perl on Rails な Catalyst を試す
- qootas.org/blog - Catalyst入門: Actionの定義とその処理の流れ(前編)
- qootas.org/blog - Catalyst で Authentication
- Perl の MVC フレームワーク Catalyst に入門してみた : NDO::Weblog
- blog.woremacx.com: taskpad.jp みたいなのを Catalyst で作ってみる
- スポンサーリンク -
コメントやシェアをお願いします!