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

» 2004年11月29日 20時38分 公開
[澤橋辰典・武上将樹,ITmedia]
前のページへ 1|2|3|4       

サーバ側で設計を工夫する

 プログラムで行うことが増加し、複雑に入り組んでくると、ひとつひとつのクラスやメソッドが肥大し、後の修正や、機能追加のさいの障害になりかねない。そうならないためには、コーディングを行いながら、上手く全体の設計を修正していく必要がある。今回もコーディングを行いながら、設計を組み替えていく作業を行った。

 一つめは、ACTIONに応じて処理を振り分ける制御クラスを作成したことだ。具体的には、アプリからのリクエストに応じて行われる処理を、SWITCH文を用いて切り替えている。処理の内容も、中身に応じたクラスに処理させることで、直感的に分かりやすくなるよう配慮した。

class DuelActionController{
  function open($request)
  {
   //制御
    switch($action){
     //対戦相手検出
     case ACTION_SEARCH:
      $list   = new DuelistList($utn);
      $result = $list->search();
       break;
     //バトル
      case ACTION_ATTACK:
        $duel   = new Duel($user_id);
        $result = $duel->attack($card);
        break;
     //ゲーム終了
      case ACTION_RESULT:
        $duel   = new Duel($user_id);
        $result = $duel->finalize($res);
        break;
      default:
        $this->_respondError();
     }
//略
}

 またさらにもう一つ、DBAccessクラスを管理するDBオブジェクト管理クラスを作成した。DBAceessクラスをいちいちインスタンス化するのは面倒だし、場合に応じて何をインスタンス化すべきか考えるのも複雑になってしまうので、DBAccessクラスを管理するクラスを作成したわけだ。

 getDAOメソッドを利用してDBAccessサブクラスのインスタンスを取得する。インスタンスは初めて作るときのみ生成し、それ以降は使いまわす。使う側は何も考えずに、getDAOメソッドで必要なものを呼びだすだけで、最適な処理を行える。

class DuelDBObjectManager{
  
  function DBObjectManager()
  {
    $_userDBO     = NULL;
    $_waitingDBO  = NULL;
    $_duelDBO     = NULL;
  }
  
  function getDAO($dao_name)
  {
      switch ($dao_name){
      case USER_DAO:
        return $this->_getUserDAO();
      case WAITING_DAO:
        return $this->_getWaitingDAO();
      case DUEL_DAO:
        return $this->_getDuelDAO();
     }
    return NULL;
  }
  
  //略
  function _getDuelDAO()
  {
   if($this->_duelDAO == NULL){
    $this->_duelDAO = new DuelDBA();
   }
    return $dbm;
  }
}

今回のまとめ

http://www.apcon.jp/itmedia2004/07/download.htm

 今回解説したサンプルアプリは、http://www.apcon.jp/itmedia2004/07/download.htmから、直接ダウンロードして試すことができる(ドコモ端末のみ)。また、ソースはこちらからダウンロードが可能だ。

 これまで、2回に渡ってネットワーク対戦アプリのサーバ側(加えてアプリの通信部分)の解説を行ってきた。ここまでくると、ネットワーク対戦アプリに必要なパーツは一通り揃ったといってよいだろう。しかし、まだまだ基本的なところしか用意されていない。これでは目の肥えたユーザーは満足してくれないかもしれない。次回はこのアプリをさらによいもの、面白いものにするため、どういう改善方法があるかという点について考察する。

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

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

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

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

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

Copyright © ITmedia, Inc. All Rights Reserved.

アクセストップ10

2025年12月06日 更新
  1. 飲食店でのスマホ注文に物議、LINEの連携必須に批判も 「客のリソースにただ乗りしないでほしい」 (2025年12月04日)
  2. NHK受信料の“督促強化”に不満や疑問の声 「訪問時のマナーは担当者に指導」と広報 (2025年12月05日)
  3. 「スマホ新法」施行前にKDDIが“重要案内” 「Webブラウザ」と「検索」選択の具体手順を公開 (2025年12月04日)
  4. 三つ折りスマホ「Galaxy Z TriFold」の実機を触ってみた 開けば10型タブレット、価格は約38万円 (2025年12月04日)
  5. 楽天の2年間データ使い放題「バラマキ端末」を入手――楽天モバイル、年内1000万契約達成は確実か (2025年11月30日)
  6. 「楽天ポイント」と「楽天キャッシュ」は何が違う? 使い分けのポイントを解説 (2025年12月03日)
  7. 楽天ペイと楽天ポイントのキャンペーンまとめ【12月3日最新版】 1万〜3万ポイント還元のお得な施策あり (2025年12月03日)
  8. ドコモが「dアカウント」のパスワードレス認証を「パスキー」に統一 2026年5月めどに (2025年12月05日)
  9. NHK ONE、簡単には「閉じられないメッセージ」表示へ 目的は“NHK受信料”の徴収 なぜ強引な仕様に? (2025年11月12日)
  10. 鉛筆デザインのiPad用スタイラスペン「Nelna Pencil」発売 物理ボタンに9機能を設定可能 (2025年12月03日)
最新トピックスPR

過去記事カレンダー