Contenu connexe
Similaire à 地方企業がソーシャルゲーム開発を成功させるための10のポイント (20)
Plus de Kentaro Matsui (15)
地方企業がソーシャルゲーム開発を成功させるための10のポイント
- 4. 本日の内容
• 会社紹介、開発実績の紹介
• ポイント1. 仕事の取り方
• ポイント2. リモートコミュニケーション用のツールを活用する
• ポイント3. リモート作業の限界を見極める
• ポイント4. 使用する技術を選ぶ
• ポイント5. 外注スタッフを活用する
• ポイント6. チーム編制
• ポイント7. チーム内のルール作り
• ポイント8. 基本をしっかりと
• ポイント9. 設計が大事
• ポイント10. 楽しむことが一番大切
- 6. 開発実績
[ブラウザ三国志]
ブラウザ三国志]
三国志
運営(株)AQインタラクティブ
開発ONE-UP(株)
プログラム開発を(株)インフィニットループが担当
2009年7月正式サービス開始
AQI公式のほか、mixi、Yahoo!モバゲー、ハンゲーム、
ニコニコアプリなど多くのプラットフォーム・チャネリングに対応、
海外にも展開中
[英雄クエスト]
英雄クエスト]
クエスト
運営・開発ONE-UP(株)
サーバ側プログラム開発を(株)インフィニットループが担当
2010年10月正式サービス開始
Yahoo!モバゲーにて運用中
- 9. はじめに
地方企業にありがちな特徴
• 人員が限られていることが多い
→ 数の上でも、スキルの上でも、不利なことが多い
• 予算も限られていることが多い
• 大規模・高負荷開発や運用の経験が少ない
→ 大手はポータルサイトなどで、大規模開発を経験し、
そのスキルをベースにして、開発にのぞんでいる
→ そのような案件が地方には少ない
↓↓↓
これらのマイナス点
これらのマイナス点を補う
マイナス
独自の工夫が必要になる
独自の工夫が必要になる
- 11. ポイント1. 仕事の取り方(2)
弊社の場合は・・・
Googleの検索で、運良く見つけて貰った
• SEOが大事
(地方名+仕事内容のキーワードで上位になること)
• ホームページからの問い合わせが一番多い
• 勉強会の開催および、イベントなどへの積極的な参加や発表
• 会社の技術ブログなどでのアピール
- 12. ポイント1. 仕事の取り方(3)
• ゲーム開発の実績は無くても大丈夫
• いまソーシャルゲームを作っている技術者の多くは、
ゲームの開発経験はなかった
• Webアプリケーションの基礎をしっかりと理解していること
→ HTMLやJavaScript, CSSに関する知識
→ DBの設計やインデックスに関する知識
→ DBのロックに対する知識
→ サーバに関する知識
• 大量アクセスに対する負荷対策の経験があるとなお良い
- 13. ポイント2. リモートコミュニケーション用の
ツールを活用する(1)
• メインコミュニケーションツールは「Skype」
• チャットでの利用がメイン
• チャット上でやり取りを行うことで、
チーム全体に情報が共有される
• IRCなどの他のツールでも良いが、
Skypeはセットアップの敷居が低い
• 電話機能はあまり使わない
• たまにビデオチャットとして使う
• ただしセキュリティ上利用が出来ない会社も多いので注意
- 14. ポイント2. リモートコミュニケーション用の
ツールを活用する(2)
• プレイステーション3を利用する
• 多対多のビデオ会議用
• PLAYSTATION Eyeを購入するだけで
業務用ビデオ会議システムにも負けないツールとして大活躍
• 6拠点まで対応可能
• 会議室に備え付けておく
- 15. ポイント2. リモートコミュニケーション用の
ツールを活用する(3)
• 重要だったり周知が必要な内容で、
チャットだけでは足りない場合は、メーリングリストを活用
(情報共有のため個人宛メールは使わない)
• Redmineなどのトラッカーでバグやタスクの管理を行う
• 情報共有のためのWikiを設置する
• 共通のファイル置き場を用意する
• 共通のレポジトリを用意する
- 19. ポイント4. 使用する技術を選ぶ(2)
弊社では開発言語にPHP、DBにMySQLを使用している
[ PHP ]
• 安定のLAMP構成(Linux + Apache + MySQL + PHP)
• 数多くの高負荷運用の実績がある
• 書籍やWebの情報量も多い
• 地方でも開発スタッフ集めが比較的容易
• 処理速度がそれなりに高速、
APCなどのアクセラレータでさらにスピードアップ
• もちろんダメな部分も多くある、
またPHPだけが特段ゲーム向きの言語というわけではない
- 20. ポイント4. 使用する技術を選ぶ(3)
[ MySQL ]
• 無料で使え、パフォーマンスが良い
• 数多くの高負荷・大規模運用の実績がある
• 書籍やWebの情報量が多い
• レプリケーションが容易
• 経験のある技術者が多数いる
• ソーシャルアプリの実績も多い
- 24. ポイント7. チーム内のルール作り (2)
コーディング規約についての考
コーディング規約についての考え方
規約についての
• スキルの低い人の救済が目的
• コード品質の安定化、バグの削減に繋げたい
• コンビニチェーン店のようなマニュアル化が理想、
教える側も教わる側も楽ができる
• 既知のバッドノウハウを避け、作業を効率化する
• grep(検索)しやすく、目的のコードを漏れなく発見したい
• 毎日眺めるコードなので、気持ち悪い書き方は避けたい
• PHPならではの問題(比較演算子の特殊性、自動キャスト)など、
ハマりやすい部分をなるべく意識しなくてもよいように
- 25. ポイント8. 基本をしっかりと(1)
• ソーシャルゲームの開発には、
とにかく基礎となる技術をしっかりと身につけることが必要
• 必要とされる技術は、一般的なものが多く
足りない部分があっても、書籍やネット検索などで手に入る
• 特化した技術があるとなお良いが、
地方でそのような人材を確保するのはかなり難しい
• 専門化を進め、分業できるところは分業するのがよい
- 26. ポイント8. 基本をしっかりと(2)
• サーバに関する知識
→ LAMP構成が1からきちんと組めること
→ 設定とチューニングが行えること
→ 知識が足りない場合は、本職のインフラエンジニアに任せる
→ ただしプログラマであってもサーバを理解することは重要
• HTMLやJavaScript, CSS
→ デザインはデザイナーがやるとしても、一通りの知識は必要
→ PC向けソーシャルアプリの場合、JavaScriptは必須
• Flashゲームの場合はFlashに関する知識
- 27. ポイント8. 基本をしっかりと(3)
• DBの設計に関する知識
→ (基本的には)ゲームならではの特殊な設計があるわけではない
• SQLに関する知識
• DBのレプリケーションやトランザクション、分離レベルに関する知識
• DBのロックに関する知識
→ 互いの情報を更新し合うことの多いソーシャルゲームには必須
→ テスト環境では問題なく、同時アクセスの多い本番環境でのみ問題が
起こるといった場合も
• DBのインデックスに関する知識
→ 負荷対策に必須
• 書籍やネットで常に情報収集を行う
- 28. ポイント8. 基本をしっかりと(4)
• 負荷対策の知識が必ず必要になる
→ Webサーバの負荷対策
→ DBマスターの負荷対策
→ DBスレイブの負荷対策
→ 転送量の削減
• ただし負荷対策のテクニックは経験がものをいうことが多い
• 基本的な負荷対策の手法を、
日頃から書籍やネットなどで情報収集しておく
• 多大な負荷がかかるということは、
商業的に成功しているということなので、予算もあるはず。
サーバを増強したり、ヘルプを頼んだりできっと何とかなるはず?
- 29. ポイント9. 設計が大事(1)
陥りがちな状況
りがちな状況
• とりあえず仕様を満たすように制作を進める
• 開発が完了し、テストもパスしてオープンした
• 利用者が増えるにつれ、負荷の増大が起きる
• サーバ台数を増やすなどして対処するが、設計上の問題からボトルネッ
ク発生し、ある一定数以上の接続数はどうしても捌くことができない
• 慢性的に重い状態となり破綻
- 30. ポイント9. 設計が大事(2)
なぜこうなるのか
• 時間さえかければ、とりあえず仕様を満たしたものを
作成することは可能
• テストの段階で、本番に近い負荷をかけるのは非常に難しい
• 負荷や同時操作系の問題は露見しづらく、優れたテストチームがいたと
しても、問題の発見は難しい
• どこがボトルネックになるのかを予測するには、
知識と経験が必要
- 31. ポイント9. 設計が大事(3)
基本方針
• 運用後どれだけ利用者が増えるのか予測がしにくいので、
いつ人が増えても破綻をきたさない設計が必要
• 「利用者が増えてきてから対処」ではチャンスを逃し間に合わない
• サーバを追加することで対処可能なようにするのが基本
→ Webサーバ、 DBスレイブの追加
→ DBマスタの分割
→ 仕様が許せばワールド分割
• 落とさないサーバ作りは大変
→ 重要なサーバのみを守り、他はどんどん落とすという方針で
- 32. ポイント9. 設計が大事(4)
ブラウザ三国志のサーバ構成
ブラウザ三国志のサーバ構成
三国志
EC2上に構築
Amazon EC2
HTTPアクセス
・ Linux(CentOS)
・ squid, varnish(ロードバランサー) ロードバランサ
HTTP振り分け
・ Apache
・ ・ ・
・ PHP+APC バッチ処理サーバ
Webサーバ Webサーバ Webサーバ
(Apache) (Apache) (Apache)
・ MySQL DBアクセス
キャッシュサーバ EC2によるオートス
・ memcached (memcached) ケーリングで
台数が増減する
・ syslogd(ログサーバ) DBマスター
(MySQL)
ログサーバ レプリケーション
(syslogd)
・ ・ ・
DBスレイブ DBスレイブ DBスレイブ
(MySQL) (MySQL) (MySQL)
- 33. ポイント9. 設計が大事(5)
DBの設計は
DBの設計は特に重要
• テーブルの設計は重要
• インデックスの設計も重要
→ 参照系と更新系のバランスを考慮
• DB容量の増加はなるべく抑えるようにする
→ 保存期間を定めるなど、仕様レベルから意識する必要がある
• オンメモリでの動作を意識する
• 仕様上マスタ分割が必要なら、更に慎重な設計を
- 35. まとめ(1)
• ポイント1. 仕事の取り方
→ WEBや勉強会で技術力をアピール
→ ゲーム開発の経験がなくても大丈夫
• ポイント2. リモートコミュニケーション用のツールを活用する
→ SkypeやPS3などのツール類を活用する
• ポイント3. リモート作業の限界を見極める
→ 限界を見極めて、リアルのコミュニケーションを使い分ける
• ポイント4. 使用する技術を選ぶ
→ 人口規模や案件内容に合わせた技術を選ぶ
• ポイント5. 外注スタッフを活用する
→ ソーシャルゲームは超短納期
- 36. まとめ(2)
• ポイント6. チーム編制
→ なるべくエースに頼らないチーム作りを目指す
• ポイント7. チーム内のルール作り
→ チーム内ルールやコーディング規約重要
• ポイント8. 基本をしっかりと
→ 特別な知識はいらない、基本をしっかりと身につける
• ポイント9. 設計が大事
→ 負荷対策は設計が重要
• ポイント10. 楽しむことが一番大切
→ ゲーム作りは難しいけど面白い
- 38. おすすめの書籍やサイト(1)
PHPで大規模ブラウザゲーム 開発してわかったこと
ブラウザゲームを
• PHPで大規模ブラウザゲームを開発してわかったこと
今回の内容と重なる部分もありますが、より技術的なことが書かれてます
http://ke-tai.org/blog/2010/06/28/osc2010slide/
ソーシャルゲームのためのデータベース設計
のためのデータベース
• ソーシャルゲームのためのデータベース設計
Linux- システム構築
構築/
• Linux-DB システム構築/運用入門
DeNAの松信氏の発表資料と書籍
MySQLを使ってソーシャルゲームを開発する場合のバイブル的存在
http://www.slideshare.net/matsunobu/ss-6584540
http://www.amazon.co.jp/dp/4798120723/
- 39. おすすめの書籍やサイト(2)
とあるアプリ 開発運用(トラブルシュート)
アプリの
• とあるアプリの開発運用(トラブルシュート)
ドリコム大仲氏のRailsDevCon2010での発表で使われた資料です
はじめてゲームを作るという方にも向いていると思います
http://www.slideshare.net/takafumionaka/ss-5852561
ヒット!ソーシャルアプリの
• 大ヒット!ソーシャルアプリの裏側
KLab 高田氏・新田氏のPHPカンファレンス2010での発表で使われた資料です
企画から技術的な内容まで幅広く解説されています
http://www.slideshare.net/klab/phpconf2010
- 40. おまけ
スタッフ募集のお知らせ
株式会社インフィニットループでは、
一緒に楽しんでゲームを作ってくれるスタッフを募集しています
・ PHPプログラマ
・ JavaScriptプログラマ
・ ActionScriptプログラマ
・ データベースエンジニア
・ サーバエンジニア
・ ソーシャルゲーム企画
興味のある方は、直接声を掛けていただくか、
HPからお問い合わせください