(注:記事は執筆時の情報に基づいており,現在では異なる場合があります)

 SledgeはApache上で動作する,Perl用Webアプリケーション・フレームワークである。昨今のWebアプリケーション開発においてトレンドとなっているMVC(Model View Controller)アーキテクチャを採用している。

 Sledgeは,Webアプリケーションの開発生産性を向上するためのフレームワーク(アプリケーションの基本部分だけを提供し,ユーザーが業務要件に応じて必要な機能を作り込むことができるソフトウエア)であり,以下のような機能を備えている。

(1)リクエストのパラメータ処理
(2)フォーム・データの維持機能
(3)Cookies/URL埋め込みを利用したセッション維持機能
(4)SQLデータベースによるセッション永続化
(5)ページ・コンポーネント単位でのアクセス認証機能
(6)テンプレート・エンジンの自動呼び出し
(7)ステージング(テスト)/プロダクション(本番)環境での設定切り換え

 「Jakarta Struts」(http://jakarta.apache.org/struts/)など,同様のWebアプリケーションのフレームワークは既にいくつか存在するが,SledgeはPerl上で動作する点に加えて,「日本のWebアプリケーション開発の現場で生まれた」という点を大きな特長としている。つまり,日本語文字コードの処理や,携帯電話が備えるHTTPクライアントへの対応といった,日本独自環境への対応が容易である。また,開発元であるエッジ(旧オン・ザ・エッヂ)が手がけた,数多くのプロジェクトで採用された実績を持っている。

プラグインにより機能拡張

 Sledgeには開発の効率化や,頻出する処理をまとめた各種プラグイン(追加ソフトウエア)が用意されている。執筆時点では表1のようなプラグインがWebサイトよりダウンロード可能であり,日々増え続けている。これらを活用して,さらなる効率化に役立てていただきたい。使用方法は各プラグインに付属するドキュメントに記載されている。

プラグイン名 内容
Sledge-Plugin-Download HTTPダウンロード・ヘッダーを強化する
Sledge-Plugin-Dumper Data::Dumperへのラッパー
Sledge-Plugin-HTML2HDML WAP1.0端末の場合にコンテンツをHDMLへ変換する
Sledge-Plugin-Log アプリケーション・ロギングの設定を行う
Sledge-Plugin-NoCache HTTPキャッシュ制御を行うヘッダーを送出する
Sledge-Plugin-SaveUpload アップロード・ファイルの保存をポータブルにする
Sledge-Plugin-ScratchPad テンポラリ・データ・バッファを提供する
Sledge-Plugin-SessionAutoCleanup 古くなったセッションを自動消去する
Sledge-Plugin-XSLT XSLTを利用してコンテンツを変換する
Sledge-SessionManager-CookieStore セッションの永続化をクライアントのCookiesで行う
Sledge-Template-Expr テンプレート・エンジンとしてHTML::Template::Exprを使用する
表1●Sledgeのプラグイン

UNIX系OS上で動作

 Sledgeは,LinuxやFreeBSD, Solarisといった各種UNIX系OS上で,Apacheに組み込むPerlモジュール「mod_perl」と連携させて動作させる。もちろん,CGI(Common Gateway Interface)環境でも動作するが,速度的には若干不利となってしまう。CGI環境は,mod_perlのインストールが難しい環境や,ちょっとしたテスト環境などで利用すると良いだろう。

 なお,ここではmod_perlと連携させて動作させることを想定し,インストールや各種設定を紹介していくが,CGI環境で動作させた場合でもほとんど違いはないことを補足しておく。

インストール手順

 ここでは,Apache1.3.27とmod_perl1.27が既に導入済みという前提で,Sledgeのインストール手順を紹介する。未導入の場合は,Apache HTTP Server ProjectのWebサイト(http://httpd.apache.org/)から入手できるソース・アーカイブや,ディストリビューションに含まれるRPMパッケージを使用して,各自インストールしていただきたい。

 また便宜上,Apacheのインストール・ディレクトリ(/usr/local/apacheなど) を「$APACHE」と表記する。またシェルでの操作において,“$”のプロンプトは一般のユーザー権限で,“#”のプロンプトはroot権限で処理を実行することとする*1

 Sledgeのインストール前に,依存するPerlモジュールのインストールが必要である。これは,CPAN*2モジュールを利用すると,以下のように簡単に実施できる。

# perl -MCPAN -e 'install Bundle::Sledge'

このマークで改行

 必要なモジュールのインストールが完了した後,Sledgeをビルドする。Sledgeの最新ディストリビューションをWebサイトよりダウンロードする(本誌CD-ROMにも収録)。ここでは執筆時点での最新版である“Sledge-1.10.tar.gz”を利用した。

$ tar xzvf Sledge-1.10.tar.gz
$ cd Sledge-1.10
$ perl Makefile.PL
$ make
$ make test

 この「make test」では,Sledgeのテスト・コードが実行される。環境によっては,この処理で非常に時間がかかることがある。ここで,

All tests successful.

と表示されれば,テストはすべて成功である。しかし,

Failed 1/40 test scripts

などのように表示された場合,一部のテストが失敗している。このままインストールしても問題がない可能性が高いが,後述するメーリングリストを利用して,ぜひ開発チームに不具合をフィードバックしていただきたい。テスト後,

# make install

として,Sledgeの各種ライブラリをインストールする。

サンプル・プロジェクトを作成

 では,Sledgeを用いて簡単なアプリケーションを構築してみよう*3。ここでは,電卓機能を提供するアプリケーションを作ってみる。といっても,入力された2つの値の足し算を行うだけの非常に単純なものだ。プロジェクト名を「CalcApp」,作業ディレクトリを「$HOME/calcapp」とした。$HOMEは,ユーザーのホーム・ディレクトリを示している。

スケルトンのビルド

 まずはSledgeを利用するために必要なスケルトン・ファイル(ひな型となるファイル)群をビルドする。スケルトン・ファイルは,Sledgeに付属しているsledge-setupツールを使用して作成できる。

$ mkdir $HOME/calcapp
$ cd $HOME/calcapp
$ sledge-setup CalcApp

これで$HOME/calcappディレクトリ配下に,CalcAppというディレクトリが作成され,必要な .pmファイルができている。

 端末に表示されるメッセージに従い,CalcApp/Config/_common.pmを編集する。このファイルでは,CalcAppプロジェクトで使用する設定変数を定義する。具体的には,TMPL_PATH(テンプレートのパス)やDATA_SOURCE(データソース)を,環境に合わせて編集する。

 ここでは図1のように編集した。この設定では,セッション管理のデータソースにフリーDBMS「MySQL」を使用しているが,PostgreSQLやSQLite(http://www.sqlite.org/)も使用可能である*4。その場合,CalcApp/Pages.pmのMySQL部分を適宜編集することが必要だ。

 また,TMPL_PATHに指定したディレクトリはMVCのView(ビュー)に当たる,テンプレート・ファイルの置き場なので,ここで作成しておく。

$ mkdir template

 最後に,セッション管理用のテーブルをMySQLに作成する。このテーブル定義は,Sledgeのソース・アーカイブに含まれている。

$ mysqladmin -uroot -pPASS create calcapp
$ cat $HOME/Sledge-1.10/eg/sessions.sql | mysql -uroot -pPASS calcapp

これで前準備は完了である。

(エッジ 宮川 達彦)