モバゲータウンのノウハウ満載! フレームワークMobaSiFを使おう!

第4回 MobaSiF に含まれるケータイ向け処理モジュール

この記事を読むのに必要な時間:およそ 3 分

前回は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_UAUser-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(ユーザが拒否設定しない限り)常時取得できる端末IDNTTドコモの場合:iモードID
auの場合:EZ番号
ソフトバンクモバイルの場合:UID
MB_SERIAL端末IDNTTドコモ 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_STconf/pages.confで要求される会員登録状態
SERV_STconf/pages.confで要求される操作に対する制限状態
REG_MODEL登録時のケータイ機種名

MobaSiFのディスパッチャを利用してWebアプリケーションを記述する場合,pm/Page/Main.pm内で自動実行されるため,$_::UでUserDataインスタンスを利用できます。また,この値はディパッチャ自身でもconf/pages.confで要求する各種ステータスのチェックに利用されます。

著者プロフィール

能登信晴(のとときはる)

大学卒業後,通信キャリアの研究所で国産検索エンジンの研究開発に従事。2004年 1月 株式会社ディー・エヌ・エー入社。「ポケットビッダーズ」「ポケットアフィリエイト」「ペイジェント」などの開発・運用にかかわる。現在は「モバゲータウン」の検索サービス開発を行っている。


川崎修平(かわさきしゅうへい)

学生時代,ネットオークション相場サイト「オークション統計ページ(仮)」を運営。サイトを見たディー・エヌ・エー社員から呼びだされ,2002年1月にアルバイトとして入社。携帯専用オークションサービス「モバオク」を開発後,正社員となり,「ポケットアフィリエイト」「モバゲータウン」などを開発。現在,同社の取締役としてサービスの開発を行っている。

コメント

  • スマートフォン対応できるか?

    現在、compile_template で a, v, d コンパイルされたが
    スマートフォン対応したい場合は、どうでしょうか。

    Commented : #1  Anonymous (2011/09/20, 12:31)

コメントの記入