Downloadクラス | Download時にのみ必要な特殊な処理を行うクラス ・getUtn UTNを取得する ・registUser ユーザ登録を行う ・showError エラーを表示する ・writeJam ADFを書き換える などのメソッドを実装 |
DBAccessクラス | DBアクセス用の共通クラス |
UserDBAクラス | DBAccessクラスを拡張して、Userテーブルのみで行うメソッドを追加 ・insertNewUser DBにユーザ情報を追加 ・getUserIdFromUTN DBからユーザIDを取得 ・updateUserName ユーザ名を上書きする などのメソッドを実装 |
DBAクラスは、次回ネットワーク対戦用のAPIを追加する時に再利用することになる。クラスの再利用について少し述べておくと、505i以前のモデルのアプリ開発時には、クラスを分割して再利用性の高いプログラミングを行うことは、容量の上限があって難しかった。しかし、今回のようにサーバを利用する場合、サーバサイドでは、容量の制限がないため、柔軟な設計のプログラミングが可能である。大容量を生かす道の一つが、設計の質を上げ、バグを防いで拡張性を高めることであるのはいうまでもない。
インストールが済み、次に行うべき処理はUTNの取得であるが、これはDownloadクラスの、getUtnメソッドで実装する。UTNは携帯電話の製造番号(FOMAの場合はFOMAカードのIDも付加される)であるが、htmlのフォームタグの中に
|
と、追加することで、UserAgentの後ろに
|
という形式で追加させることが可能だ。これをPHPの場合は$_SERVER['HTTP_USER_AGENT']から、JAVAの場合はHttpServletRequestオブジェクトのgetHeader()メソッドを使って取得し、さらに正規表現関数を使ってUTNだけを抜き出す処理を実装した。
|
上記がその処理に当たる。言葉に直すと、
|
が、";"と行末の間にある場合に、取得せよという命令になる。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回」で詳しく解説されているので、こちらを参考にしてほしい。
最後に、writeJamメソッドによって、テンプレートとして用意したADFの、"AppParam"を書き換える処理を実装した。これでUTN情報をアプリ上から参照することができるようになり、ネットワーク対戦時にこの情報をサーバに通知することで、対戦者同士の識別が可能になる。これは、上で述べてきた正規表現のシンプルな応用である。これで、ダウンロード前の処理は全て完了し、アプリのダウンロードが開始される。サーバの仕事は以上でひとまずお休みとなる。
今回の開発したプログラムのソースはこちらからダウンロードできる。
次回は、ネットワーク対戦部分の、設計から実装までをサーバ・アプリ両面から解説する。ネットワーク対戦アプリを実現する一番重要な部分なので、楽しみにしていてほしい。
|
Copyright © ITmedia, Inc. All Rights Reserved.