低機能サーバーでWebアプリを作るときに使うPurePerlモジュール選
最近Webアプリを作ったわけですが、その時使ったサーバーは、telnet接続できません、gcc使えません、PHP使えません、DB使えません、というWebApp開発には辛い仕様のものでした。
使える言語はPerlのみ! コンパイラがないからネイティブ実装を含む拡張モジュールは使用不可! CPANに登録されているモジュールも半数くらい(適当)使えません。
でも、レンタルサーバーじゃない普通のHPスペースサービスではこういうの当たり前なんですよね。むしろ自作CGIを許可してくれるだけマシっていう...。
こんな環境で、なんとかWebサービス作るためにはPurePerlな(Perlのみで書かれた)モジュールを使い倒すしかありません。PurePerlなモジュールなら「./lib」とか適当なディレクトリの中にpmファイルをコピーして、
use lib qw(./lib);
って書いてやれば使えますからね!*1
では、本題に入りましょう。低機能サーバーでWebアプリを作るときに使うPurePerlモジュール選 はじまり〜。
1、フレームワークはCGI::Application
もっとも人気があるPerlフレームワークはCatalystみたいですが、上記環境では使えません。シンプルさ重視でCGI::Applicationを使いましょう。
Catalystのように多機能ではありませんが、最低限、ページ遷移やエラー処理のための土台を用意してくれるのでプログラムが書きやすくなります。物足りなければCPANでCGI::Application::Pluginって検索すると便利プラグインがみつかります。
とか。俺は使わなかったけど、
なんてのもあるようです。
2、テンプレートエンジンはHTML::Template
別に用意したテンプレートファイルから静的なHTMLを読み込み、必要な部分にCGIで処理した動的データを埋め込んでくれます。CGI::Applicationとの相性もばっちり。条件によってHTMLを切り替えたり、同じHTMLを繰り返したりなんてこともできます。
7/13 追記
とおりすがりさんにHTML::Parserが入っていない環境では動かないと教えていただきました。こちらで配布されているサーバーアナライザーを使うと、自分のサーバーにどんなモジュールが入っているか確認できます。
3、データ保存にはStorableもしくはData::Dumper
なぜサーバーサイドのプログラムが必要になるかというとそれはストレージのためがほとんどなわけで、本来ならデータベースを使いたいところですが、へなちょこサーバーにはかないません。
そこでPerlのオブジェクト(ハッシュとか配列とか)を直接ファイルに書き込むタイプのモジュールを利用します。
StorableはPurePerlなモジュールではないですが、新しいバージョンのPerlなら標準で入っているので試してみる価値ありです。出力されるファイルはバイナリなので直接編集はできませんが、そのかわり読み書きは速いです。
Storable使えない or 直接編集できるのがいいならData::Dumperでオブジェクトを文字列化してファイルに書きましょう。読み込みにはeval使います。
5、動的画像生成はFlashで
すんません、見つかりませんでした(笑
GD系のライブラリが定番中の定番ですがこいつはコンパイラがないとインストールできません。
よって、Flex SDK 落して自作SWF作るべし! 動的画像生成に必要なデータをflashvarsでHTMLに書き込んでやれば、SWFのほうで描画できます。(こんなんでいいんかいな汗