[perlメモ]perlのフレームワークCatalystで遊んでみる その1
最近のWebプログラミングではフレームワークというのがはやっているようです。ちょっとWebプログラミングの求人を見てみるとフレームワークを利用しての開発とかフレームワーク経験者募集とかいうのを見かけます。Ruby on Rails(ルビー・オン・レールズ)というのを最近たまに見かけていたのでなんぞこれ?とか思っていたのですが、Ruby on RailsというのはRubyのフレームワークらしいです。で、perlのそれに当たるのがCatalyst(カタリスト)らしいです。フレームワークっていうのは要は、生産性を上げる為のライブラリというかモジュールで、色々と処理を共通化できたりして楽チンになるらしいです。実際にはまだ試してないので何ともいえませんが、たとえばデータベースなどはOracleやMySQLやpostgresqlやSQLiteなどなどいろいろあるわけですが、基本的なSQLは同じでも色々とそれぞれに癖というか独自の機能や書き方があったりするわけですが、そういうのを意識しないでいいようにSQLを直接書かないでフレームワークを使った記述を使うのでデータベースの違いを意識しないでよくなり(データベースの違いをフレームワークが吸収してくれる)移植性もあがるとか、実際にはたくさんのコードを書かなければいけないところをちょっとの記述で実現できるらしいとか色々とよさげな話を見かけるわけです。というわけで、これは実際に触って試してみたいという事になりました。まあ、でも実際に使うとなると共用のレンタルサーバーとかでも使えるのかな?専用サーバーとかローカルマシンじゃないとCatalystインストールする事さえ難しいだろうし、成果物はCatalystがインストールされていない環境でも動くのかな?まあ、そういうところはこれから実際に試したり勉強しながら覚えていこうと思います。汎用的にして生産性を上げると大抵犠牲になるのが、細かい部分の作りこみができないとか、データベースだとそれぞれのデータベースに合わせた最適化とか独自機能をつかった高速化ができないとかいう事がありそうですが、そういう場合はその部分だけフレームワークをつかわないで開発する事も出来るようなので、なかなか万能そうですね。まあ、今現在の知識だとかなり間違ったことを書いている気がするので、詳しくは下記のWikipediaや参考記事を参照して下さいw。
◎とりあえず、Catalystのインストールから
とりあえず、下記の記事を参考にして勉強する事にしました。
◇参考:第4回 Catalyst(前編)—Perl向けWebアプリ・フレームワーク – 簡単実装で学ぶWeb技術:ITpro
2006年9月の記事なのでちょっと情報は古いですが、とても参考になるのではないかと思います。
僕の環境は
Windows XP Home Edition SP3
Active perl v.5.8.8 build 824
です。
とりあえず、記事を参考に CPANからインストールしようとしてみましたが、コンパイルにかなり時間がかかった挙句にインストール失敗したのでppmからインストールしてみました。こっちだとインストールもかなり早くお奨めです。SQLiteは参考記事ではSQLite2ですが、現在はSQLite3が主流だと思うので3をダウンロードしてパスが通ったところ(たとえばC:Windows)に入れておきます。CPANからのDBD:SQLite2は行わないで必要になったらppmからDBD-SQLiteをインストールすればいいと思います。
1.コマンドプロンプトでppmと入力してppmを起動
2.ppmが起動したら
3.Task-Catalystをインストール
赤丸1.View all packagesの状態にして。
赤丸2.フィルターにtask-catalystと入力してモジュールのTask-Catalystを絞り込みます。
赤丸3.Task-Catalystを選択して、右クリックか[Mack for install]のアイコンをクリックしてインストール対象としてマークします。
赤丸4.インストール開始ボタンでCatalystとCatalystを利用するのに必要なモジュールがインストールされます。
※パッケージのリストにTask-Catalystが現れない場合は、リポジトリが登録されていないので、リポジトリの追加を行います。リポジトリの追加については「ActivePerlにGDをインストールする」の記事を参考にしてください。リポジトリのURLは「Browse and search CPAN : Task-Catalyst」のページの下の方の「Win32 PPM packages for "Task-Catalyst"」のリンク先からActiveperlのバージョンに一致したリポジトリのURLを利用して下さい。
具体的にはperl.5.8なら[http://trouchelle.com/ppm/
]
perl.5.10なら[http://trouchelle.com/ppm10/]
でいけると思います。
あとは、先に書いた参考記事の通りにやればとりあえずWelcomeページを見る事ができるようになります。
◎一応Welcomeページを見るところまでやってみる。
※詳しくは参考記事の「第4回 Catalyst(前編)—Perl向けWebアプリ・フレームワーク – 簡単実装で学ぶWeb技術:ITpro」を参照して下さい。
1.適当なワークフォルダを作成して、コマンドプロンプトから下記のコマンドを実行する。
F:\WWW\work>catalyst.pl Hello
すると下の様にぞろぞろとファイルやフォルダが生成される。
F:\WWW\work>catalyst.pl Hello
created "Hello"
created "Hello\script"
created "Hello\lib"
created "Hello\root"
created "Hello\root\static"
created "Hello\root\static\images"
created "Hello\t"
created "Hello\lib\Hello"
created "Hello\lib\Hello\Model"
created "Hello\lib\Hello\View"
created "Hello\lib\Hello\Controller"
created "Hello\hello.conf"
created "Hello\lib\Hello.pm"
created "Hello\lib\Hello\Controller\Root.pm"
created "Hello/README"
created "Hello/Changes"
created "Hello\t/01app.t"
created "Hello\t/02pod.t"
created "Hello\t/03podcoverage.t"
created "Hello\root\static\images\catalyst_logo.png"
created "Hello\root\static\images\btn_120x50_built.png"
created "Hello\root\static\images\btn_120x50_built_shadow.png"
created "Hello\root\static\images\btn_120x50_powered.png"
created "Hello\root\static\images\btn_120x50_powered_shadow.png"
created "Hello\root\static\images\btn_88x31_built.png"
created "Hello\root\static\images\btn_88x31_built_shadow.png"
created "Hello\root\static\images\btn_88x31_powered.png"
created "Hello\root\static\images\btn_88x31_powered_shadow.png"
created "Hello\root\favicon.ico"
created "Hello/Makefile.PL"
created "Hello\script/hello_cgi.pl"
created "Hello\script/hello_fastcgi.pl"
created "Hello\script/hello_server.pl"
created "Hello\script/hello_test.pl"
created "Hello\script/hello_create.pl"
Change to application directory and Run "perl Makefile.PL" to make sure your install is complete
F:\WWW\work>
2.とりあえず生成されたものを動かしてみる。
生成されたファイルはとりあえず動くので実際に動かしてみる。下記コマンドでサーバープログラムを起動する。
F:\WWW\work\Hello>script\hello_server.pl
起動すると下の様に表示される。
F:\WWW\work>Hello\script\hello_server.pl
[debug] Debug messages enabled
[debug] Statistics enabled
[debug] Loaded plugins:
.—————————————————————————-.
| Catalyst::Plugin::ConfigLoader 0.27 |
| Catalyst::Plugin::Static::Simple 0.25 |
‘—————————————————————————-‘
[debug] Loaded dispatcher "Catalyst::Dispatcher"
[debug] Loaded engine "Catalyst::Engine::HTTP"
[debug] Found home "F:\WWW\work\Hello"
[debug] Loaded Config "F:\WWW\work\Hello\hello.conf"
[debug] Loaded components:
.—————————————————————–+———-.
| Class | Type |
+—————————————————————–+———-+
| Hello::Controller::Root | instance |
‘—————————————————————–+———-‘
[debug] Loaded Private actions:
.———————-+————————————–+————–.
| Private | Class | Method |
+———————-+————————————–+————–+
| /default | Hello::Controller::Root | default |
| /end | Hello::Controller::Root | end |
| /index | Hello::Controller::Root | index |
‘———————-+————————————–+————–‘
[debug] Loaded Path actions:
.————————————-+————————————–.
| Path | Private |
+————————————-+————————————–+
| / | /index |
| / | /default |
‘————————————-+————————————–‘
[info] Hello powered by Catalyst 5.80013
You can connect to your server at http://umbrella:3000
3.とりあえず色々表示されているのは気にしないで最後の行をみる。これが動作を確認できるURLです。うちの場合は僕が使っているマシン名が[umbrella]なので下の様になっています。ここは使っている人の環境によってIPアドレスだったり使ってる人のマシン名だったりと色々変わると思います。
http://umbrella:3000
4.実際にURLにブラウザでアクセスしてみます。
無事Welcomeページを表示する事ができました。とりあえず、apache等のうウェブサーバーをインストールしていなくても自前のウェブサーバーで動作が確認できるのはすごいですね。また、参考記事にあるように、サーバー起動時に「hello_server.pl -restart」とオプションを指定して起動すると、ソースを修正したら自動的にサーバーを再起動してくれるらしいです。超便利かも知れません。
とりあえず、ここまで試してみました。まだどこまで便利なのかはわかりません。ここからが本番かなーと思います。ちょっと色々触って簡単な掲示板ぐらい作ってみようかと思います。
◇関連:Catalyst (ソフトウェア) – Wikipedia
◇関連:Ruby on Rails – Wikipedia
◎関連:Catalyst – Web Framework
結城浩さんが書かれたIT ProのCatalystの記事を参考にする場合は、併せてhttp://d.hatena.ne.jp/tokuhirom/20080603/1212456790も読んでおくとよいと思います。
既にご存知でしたら聞き流しておいてください。
情報ありがとうございます。リンク先の件了解しました。僕のブログをみて参考記事を最新の情報と誤解する人が出てしまうかも知れないのでこの話題はありがたいです。(そんな心配するほど影響力のブログではありませんけどwww)僕自身は一応古い記事だということは認識していて3年も前の記事だと今はずいぶん状況が変わっているだろうということは想像するに難しくありませんでしたが、とっかかりとしてはいいんじゃないかと思って結城氏の記事をチョイスしました。現在通用しなくなっている部分については、他の情報を模索しつつ試していきたいと考えています。本当は最新情報の載った書籍を買うのがいいとは思っているのですがまずはとっかかりとして記事を参考に慣れてみてそのうえで必要な書籍があれば買おうかなと考えています。