モバゲータウンのノウハウ満載! フレームワークMobaSiFを使おう!
第3回 MobaSiFでのWebアプリケーション実装と内部処理
2008年9月5日
初出:WEB+DB PRESS Vol.45(2008年6月24日発売)
MobaSiFでのWebアプリケーション記述方法
今回は,
Webアプリケーションの実装は
- URL,
呼び出される.pmファイル, サブルーチンを関連づける - アプリケーションロジックを.pmファイルに記述する
- テンプレートファイルを記述する
という3ステップで行われます。順に説明します。
URL,.pmファイル,サブルーチンの関連づけ
WebアプリケーションのURLは
http://example.com/_<ページ名>
という形式をとり,
http://example.com/_echo
のようになります。この場合ページ名は
http://example.com/_echo?key=value
ページ名とアプリケーションロジックの関連づけはconf/
リスト1 %PAGEでページ名とアプリケーションロジックを関連づける
our %PAGE = (
'ページ名1' => [ UID_ST, USER_ST, SERV_ST, MODULE, SUB ],
'ページ名2' => [ UID_ST, USER_ST, SERV_ST, MODULE, SUB ],
)
リスト2 リスト1の記述例
'echo' => [ 0,0,2, 'Page::Echo', 'pageMain' ],
表1 %PAGE各フィールドの設定内容
UID_ | 端末認証要求 |
---|---|
0 | 端末ID通知なしでOK |
1 | 端末ID必須 |
USER_ | 要求する会員登録状態 |
0 | 非会員 |
1 | 会員登録済 |
2 | 会員登録済 |
SERV_ | 操作に対する制限状態 |
0 | すべての操作を可能 |
1 | 自主退会では操作不可 |
2 | オペレータより退会処理されている場合不可 |
4 | ペナルティ状態だと不可 |
8 | メール不達だと操作不可 |
MODULE | 呼び出すPerlモジュール名 |
SUB | MODULE内で呼び出すサブルーチン名 |
アプリケーションロジックを記述する
conf/
今回は,
リスト3 フォームに入力した値を画面に表示させる
01: package Page::Echo;
02:
03: use strict;
04: use MobaConf;
05: use Common;
06: use DA;
07: use HTMLTemplate;
08: use Response;
09:
10: sub pageMain {
11: my $func = shift;
12: my $rhData = Common::cloneHash($_::F, '^[a-z]');
13:
14: my $html = HTMLTemplate::insert("echo", $rhData);
15: Response::output(¥$html);
16: }
17: 1;
テンプレートファイルを記述する
テンプレートファイルの記述方法の詳細は後述しますが,
リスト4 テンプレートファイルの例
01: <html>
02: <head>
03: <title>echo</title>
04: </head>
05: <body>
06:
07: <form action="_echo" method="POST">
08: <input type="text" name="message"><input type="submit">
09: </form>
10:
11: $if (message) { $ $=h:message$ $ } $
12: </body>
13: </html>
リスト4の11行目では,
テンプレートファイルが用意できたあとは,
http://example.com/_echo
でこの画面が表示され,
ディスパッチャの内部処理
ところで,
- ApacheへのHTTPリクエストはconf/
rewrite. conf (リスト5) のRewriteRuleとconf/ httpd. confのFastCGIに関する設定により, fcgi/ index. fcgiに渡される。また, URL中の<ページ名>部分は, RewriteRuleによりfというリクエストパラメータに渡される。 - fcgi/
index. fcgiはpm/ Page/ Main. pmのmain( )サブルーチンを呼び出す。このサブルーチンの中では - ケータイキャリアや端末の判別,
端末認証に必要なHTTPリクエストヘッダなどの処理 (pm/ MobileEnv. pm) - HTTPリクエストパラメータの共通処理を行い,
$_::Fにセット (pm/ Request. pm) - 端末認証に基づいたユーザ情報を取得し,
$_::Uにセット - conf/
pages. confに基づき, URL中の<ページ名>に対応するモジュールとサブルーチンの呼び出し
- ケータイキャリアや端末の判別,
リスト5 conf/
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)
RewriteRule .* - [F]
RewriteRule ^/¥.([^/]+)/(.*)$ /$2?_u=$1 [QSA]
RewriteRule ^/_([^/¥.]+)(¥.html?)?$ /?f=$1 [QSA]
RewriteRule ^/static/(.*)$ /static/$1 [QSA,PT,L]
RewriteRule ^/$ /fcgi/index.fcgi [QSA,PT,L]
RewriteRule ^/(.*¥.html)$ /fcgi/index.fcgi?f=page&page=$1 [QSA,PT,L]
RewriteRule ^/(.*¥/)$ /fcgi/index.fcgi?f=page&page=$1 [QSA,PT,L]
こう追ってみると,
次回は,
バックナンバー
モバゲータウンのノウハウ満載! フレームワークMobaSiFを使おう!
- 第5回 テンプレートエンジンMTemplate
- 第4回 MobaSiF に含まれるケータイ向け処理モジュール
- 第3回 MobaSiFでのWebアプリケーション実装と内部処理
- 第2回 オープンソースフレームワークMobaSiFの概要・インストール
- 第1回 ケータイ向けWebアプリケーション開発特有の技術要素