[SNS] ソーシャルゲーム開発の技術メモ

前回のエントリでソーシャルゲームで必要なポイントをあげましたが、
今回はもう少し技術的な部分にも触れたいと思います。

ゲームの構成は簡単に説明すると、モバゲーのフューチャーフォン(=ガラケー)、インフラは、クラウド環境(IaaS)上に構築、ゲームプログラムは、PHPとFlashliteといった感じです。

(1)インフラ:3系統用意

本番系とステージング系とローカル系の3系統を構築しました。
・本番は名前のとおり実際のゲームが動作する環境です。
・ステージング系は障害時や新機能を追加する際の確認用の環境です。本番系とは極力同じような環境にします。
・ローカルは普段の開発環境です。
・リリースの流れとしては、ローカル→ステージング→本番のようになります。

本番系のシステム構成

サーバ:I社のIaaS WEBサーバ2台、予備WEBサーバ1台、DBサーバ2台、ロードバランサー1台+予備1台
OS:CENTOS64

ステージング系のシステム構成

サーバ:GMOクラウドPublicのIaaS WEBサーバ・DBサーバ1台
OS:CENTOS64

ローカル系のシステム構成

サーバ:開発用PC、XAMPP
OS:Windows

(2)インフラ:運用監視ツール

サーバの監視は、予算不足から常時監視はできないため、障害時に迅速に対応するポリシーとしました。
・キャパシティの確認のためにリソース監視を導入しました。
・サーバとサービスの死活監視のためにプロセス監視を導入しました。

リソース監視

ツール:Munin(http://munin-monitoring.org/)
定期的にグラフを参照し、CPU負荷やメモリとHDDの残量を確認しました。

死活監視

ツール:Monit(http://mmonit.com/monit/)
サーバの生死確認とサーバ上のサービスの生死確認をするツールです。なにか起きると担当者の携帯へメールを通知するようにしました。WEBサーバは自動で再起動するようにしました。

(3)インフラ:高負荷、高速化

サーバの高速化や負荷軽減も予算制約があるので、ミドルウェアを導入しました。
・PHPの実行速度向上のためにPHPアクセラレータを導入しました。
・データベースにKVSを導入しました。

PHPアクセラレータ

ツール:eAccelerator(http://sourceforge.net/projects/eaccelerator/)
PHPを中間コードに変換しメモリ上にキャッシュします。

データベース

ツール:TokyoTyrant(http://fallabs.com/tokyotyrant/)

(4)プログラム:ゲームエンジン

PHPで携帯サイトを作る時と特に変わりはありません。ですのでいつもの組み合わせにしました。
・速度が求められるのでフルスクラッチと悩みましたが、メンテナンス性を考慮して、結局フレームワークを導入しました。
・HTMLコーディングを分離するためにテンプレートエンジンを導入しました。
・アプリケーションログを導入しました。

PHPフレームワーク

ツール:ZendFramework(http://framework.zend.com/)
ViewとControllerのみ使いました。

PHPテンプレートエンジン

ツール:Smarty(http://www.smarty.net/)
絵文字変換ライブラリを使うことで、3キャリア共通テンプレートで作成しました。

ログライブラリ

ツール:log4php(http://logging.apache.org/log4php/)

まとめ
予算的制約が何事にも優先する(笑)ので、いろいろなオープンソースやライブラリにお世話になりました。また、サービス直後の負荷が読めないのでクラウドの利用は安心感がありました。一応報告すると、サービス直後に落ちることはなかったです(実はオーバースペックだったw?)

mixiアプリ開発&運用コンプリートブック -ユーザをつかむソーシャルアプリのつくり方!育て方!
株式会社ミクシィ 田中 洋一郎
技術評論社
売り上げランキング: 73303

mixiアプリをつくろう!OpenSocialで学ぶソーシャルアプリ
神部 竜二
ソーテック社
売り上げランキング: 122509

iPad2を買いました。一応仕事のため・・・

iPad2のWifiモデル16GBを購入

iPadは買う予定はなかったのですが、iPadを使う開発案件のために急きょ購入しました。次期モデル(iPad3)が出るぐらいに買おうかなと思っていたぐらいです。すでにキャラかぶりのAirの11インチがあるしw

いじってみた感想としては、画面の解像度もそこそこ広いですし、アプリもそろって来ましたし、一通りの作業はできそうですね。これでAir11がますますいらなってきました(汗)

購入はソフトバンクの追加キャンペーンにするかAppleストアで買うか迷いましたが、次期モデルが出た時の手離れの良さを考えてAppleにしました。オンラインストアで2/2に発注、2/4の午前に届きました(速っ!)

モデルはWifiの16GBの黒。wifiスポットのオプションだけつけました。サポートのケアは後日買うか決めることにしました。

関連アクセサリーはやっぱり高いですねー

とりあえず買ったアクセサリーは3点です。
・液晶保護フィルター:1730円(バッファロー)
・クリアケース:2080円(エレコム)
・SmartCover:3980円(アップル)

液晶保護フィルター

液晶保護フィルターは気泡が入る失敗にビビリ、失敗しないと評判のバッファローの「iBUFFALO iPad2用 液晶保護フィルム 気泡「0」イージーフィット(黒)」にしました。

iBUFFALO iPad2用 液晶保護フィルム 気泡「0」イージーフィット ブラック BSEFIPD2BK
バッファローコクヨサプライ (2011-04-25)
売り上げランキング: 87

↑これは本当に簡単です!おすすめ

背面用クリアケース

クリアケースはエレコムの「TB-A11MPV2CR」。背面を保護するだけなのでiPAdの色を生かすためにもクリアにしました。

ELECOM iPad2 2011 9.7in シェルカバー スマートカバー対応 クリア TB-A11MPV2CR
エレコム (2011-05-20)
売り上げランキング: 30204

風呂蓋

最後は、アップル純正のSmartCover。ってこれ高いですよね。私の価値観でいうとこれに3980円は高過ぎます。これだからアップルは・・・(笑) 良く考えたらアップルストア限定の赤のSmartCoverにしておけばと今頃気づきました(汗)