第6回 ネットワークiアプリのためのサーバサイド活用(1)90Xi専用ゲームiアプリ開発講座(4/4 ページ)

» 2004年11月22日 23時59分 公開
[澤橋辰典・武上将樹,ITmedia]
前のページへ 1|2|3|4       
DownloadクラスDownload時にのみ必要な特殊な処理を行うクラス
・getUtn UTNを取得する
・registUser ユーザ登録を行う
・showError エラーを表示する
・writeJam ADFを書き換える
などのメソッドを実装
DBAccessクラスDBアクセス用の共通クラス
UserDBAクラスDBAccessクラスを拡張して、Userテーブルのみで行うメソッドを追加
・insertNewUser DBにユーザ情報を追加
・getUserIdFromUTN DBからユーザIDを取得
・updateUserName ユーザ名を上書きする
などのメソッドを実装

 DBAクラスは、次回ネットワーク対戦用のAPIを追加する時に再利用することになる。クラスの再利用について少し述べておくと、505i以前のモデルのアプリ開発時には、クラスを分割して再利用性の高いプログラミングを行うことは、容量の上限があって難しかった。しかし、今回のようにサーバを利用する場合、サーバサイドでは、容量の制限がないため、柔軟な設計のプログラミングが可能である。大容量を生かす道の一つが、設計の質を上げ、バグを防いで拡張性を高めることであるのはいうまでもない。

正規表現でUTNを取得する

 インストールが済み、次に行うべき処理はUTNの取得であるが、これはDownloadクラスの、getUtnメソッドで実装する。UTNは携帯電話の製造番号(FOMAの場合はFOMAカードのIDも付加される)であるが、htmlのフォームタグの中に

<form method=XXX action=XXX utn>

 と、追加することで、UserAgentの後ろに

DoCoMo/2.0 YYYY(c10;serXXXXXXXXXXXXXXX; iccxxxxxxxxxxxxxxxxxxxx)

 という形式で追加させることが可能だ。これをPHPの場合は$_SERVER['HTTP_USER_AGENT']から、JAVAの場合はHttpServletRequestオブジェクトのgetHeader()メソッドを使って取得し、さらに正規表現関数を使ってUTNだけを抜き出す処理を実装した。

preg_match("/\;(ser[A-Za-z0-9]{15}\;icc[A-Za-z0-9]{20})\)$/i",$ua,$matches)

 上記がその処理に当たる。言葉に直すと、

「"ser" + 英数字15個 + ";icc" + 英数字20個」

 が、";"と行末の間にある場合に、取得せよという命令になる。Javaの場合には、java.util.regexパッケージの、PatternとMatcherという2つのクラスを利用する。

 正規表現関数は、iアプリ開発では利用できないので、なじみのない方がいるかもしれないが、これはとても便利な関数であり、例えば、UserAgentから機種名を判別して、非対応機種のユーザにはダウンロードができないという処理なども可能になる。情報もインターネット上に豊富にあるので、この機会に覚えておくといいだろう。

データベースに情報を登録する

 続いて、取得したUTNと、ユーザが入力した登録名をregistUserメソッドを使って、DBに登録する作業を行う。registUserメソッドの中で、UserDBAクラスのgetUserIdFromUTNメソッドを呼び出し、すでにユーザ情報が存在するかどうかを調べて、新規ユーザの場合はinsertNewUserメソッド、登録済みユーザの場合はgetUserIdFromUTNメソッドで、データベースに適切なデータを格納している。

 データベースへのアクセスは、今回のようにPEARのDBクラスを利用するのが一般的だ。PEARとはPHPに標準でバンドルされている便利なライブラリ集である。PEARのDBクラスを使う利点は、データベース関連の抽象化が容易なこと、エラーをクラスで処理できること、固有のRDBMSへの依存を少なくできることなどが挙げられる。Javaを使用する場合はJDBCドライバを活用する。これも「ビジネスiアプリ開発講座第4回」で詳しく解説されているので、こちらを参考にしてほしい。

ADFファイルを書き換える

 最後に、writeJamメソッドによって、テンプレートとして用意したADFの、"AppParam"を書き換える処理を実装した。これでUTN情報をアプリ上から参照することができるようになり、ネットワーク対戦時にこの情報をサーバに通知することで、対戦者同士の識別が可能になる。これは、上で述べてきた正規表現のシンプルな応用である。これで、ダウンロード前の処理は全て完了し、アプリのダウンロードが開始される。サーバの仕事は以上でひとまずお休みとなる。

 今回の開発したプログラムのソースはこちらからダウンロードできる。

 次回は、ネットワーク対戦部分の、設計から実装までをサーバ・アプリ両面から解説する。ネットワーク対戦アプリを実現する一番重要な部分なので、楽しみにしていてほしい。

筆者紹介──澤橋辰典・武上将樹

 ケータイアプリ(iアプリ/EZアプリ/Vアプリ)のNo1ポータルサイト「アプリ★ゲット」を運営するスパイシーソフトに勤務。

 澤橋は学生時代、iアプリのコンテストでゲームアプリやツールアプリを制作し、入賞経験がある。また、所属していたサークルの後輩に、ものづくりの楽しさやアプリの奥義を授け、その後輩も入賞していることから、自らをiアプリエヴァンジェリスト(伝道者)と呼んでいる。現在も大手企業にOEM提供しているアプリの開発を行っている。

 武上は、イーアクセスとの共同事業「どこでも読メール」や、各社にOEM提供しているアプリメールサービスなどで、主にサーバサイドやデータベースまわりの開発を担当している。ゲームアプリは、もっぱらプレイ専門。

前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

アクセストップ10

最新トピックスPR

過去記事カレンダー

2024年