前回はMobaSiFでのWebアプリケーション実装例を示し,実行時の内部処理を説明しました。今回はMobaSiFに含まれる個々のPerlモジュールを解説していきます。
MobileEnvモジュール
MobileEnvモジュール(pm/MobileEnv.pmファイル)は,
- 接続元IPアドレスでのケータイキャリア判別
- ケータイ機種情報,端末IDの取得
を行います。リスト6のようにして使用します。
リスト6 MobileEnvモジュールの利用例
use MobileEnv;
MobileEnv::set();
MobileEnv::set( )を行うと,以後は表2に示した値を「MB_」から始まる名前の環境変数より取得できるようになります(MobaSiFのディスパッチャを利用してWebアプリケーションを記述する場合,pm/Page/Main.pm内で実行されるため,常にこれらの環境変数を利用できます)。
IPアドレスとMB_CARRIER_IPの関係は,D,A,Vについてはconf/ipident.confファイルで,I,Xについてはconf/ipident_local.confの各ファイルで指定します。したがって,キャリア側でIPアドレスの変更があるたびにconf/ipident.confの更新が必要になります。
表2 MobileEnvモジュールにより取得できるデータの例
| 環境変数名 | データ内容 | とり得る値 |
|---|---|---|
| MB_CARRIER_IP | 接続元IPアドレスに基づいたキャリア判別 | “D”=NTTドコモ “A”=au “V”=ソフトバンクモバイル(VはVodafoneの名残) “I”=社内からのアクセス “X”=リバースプロキシ経由 “-”=上記以外(一般のPCからの接続など) |
| MB_CARRIER_UA | User-Agentから判別したケータイキャリア | “D”,“A”,“V”(上記と同じ) |
| MB_MODEL_TYPE | ケータイ機種(世代)分類 | “DM”=ドコモmova端末 “DF”=NTTドコモ FOMA端末 “AH”=auHDMLブラウザ搭載端末 “AU”=au WAP2.0ブラウザ搭載端末 “VC”=ソフトバンクモバイルC型端末 “VP”=ソフトバンクモバイルP型端末 “VW”=ソフトバンクモバイルW型端末 “VG”=ソフトバンクモバイル3GC型端末 |
| MB_MODEL_NAME | 機種名 | 機種名を示す文字列(auは2章19ページ表3で説明した「デバイスID」) |
| MB_SERV_LV | 対応端末判定結果 | “-1”=非対応端末(判断ロジックはMobileEnv.pmに埋め込み) |
| MB_UID | (ユーザが拒否設定しない限り)常時取得できる端末ID | NTTドコモの場合:iモードID auの場合:EZ番号 ソフトバンクモバイルの場合:UID |
| MB_SERIAL | 端末ID | NTTドコモ mova端末でutn取得の場合:製造番号(先頭のserを除く) NTTドコモ FOMA端末でutn取得の場合:FOMAカード製造番号(先頭のiccを除く) |
| MB_SERIAL2 | 付加的な端末ID情報 | NTTドコモ FOMA端末でutn取得の場合:FOMA端末製造番号(先頭のserを除く) |
Requestモジュール
Requestモジュール(pm/Request.pmファイル)は,ユーザがFORMに入力した値,あるいはURLのquery stringに設定した値をハッシュリファレンスの形で利用できるようにします。リスト7のようにして使用します。
MobaSiFのディスパッチャを利用したWebアプリケーションでは,pm/Page/Main.pm内で自動的に実行されるため,$_::FでReqeustインスタンスを利用できます。
リスト7 Requestモジュールの利用例
use Request;
$_::F = new Request();
my $value = $_::F->{key};
UserDataモジュール
ユーザ情報は,MobileEnvモジュールで提供される環境変数MB_UID(端末ID)に基づいてuser_dataテーブルから取得します。リスト8のようにして使用します。配布されるUserDataモジュールでは,表3にまとめたキーを利用して,対応する値を取得できます。なお,環境変数MB_UIDに対応する行がuser_dataテーブルにない場合は,これらの値は未定義になります。
このほかの値の登録/取得が必要な場合は,user_dataテーブルへのカラム追加とUserData.pm中のSQL文の変更が必要になります。
リスト8 UserDataモジュールの利用例
use UserData;
$_::U = new UserData();
my $user_id = $_::U->{USER_ID};
表3 UserDataモジュールで使用するキー一覧
| キー名 | 取得できる値 |
|---|---|
| USER_ID | ユーザを特定するユニークな番号 |
| USER_ST | conf/pages.confで要求される会員登録状態 |
| SERV_ST | conf/pages.confで要求される操作に対する制限状態 |
| REG_MODEL | 登録時のケータイ機種名 |
MobaSiFのディスパッチャを利用してWebアプリケーションを記述する場合,pm/Page/Main.pm内で自動実行されるため,$_::UでUserDataインスタンスを利用できます。また,この値はディパッチャ自身でもconf/pages.confで要求する各種ステータスのチェックに利用されます。

