地方企業がソーシャルゲーム開発を成功させるための10のポイント
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

地方企業がソーシャルゲーム開発を成功させるための10のポイント

on

  • 13,583 views

2011年3月5日に行われた、高知でのソーシャルアプリ講習会の発表に使った資料です。

2011年3月5日に行われた、高知でのソーシャルアプリ講習会の発表に使った資料です。
地方の小さな受託開発企業が、はじめてリモートでソーシャルゲームの開発を行う場合の注意点をまとめてみました。
ソーシャルゲーム開発初心者に向けた資料です。

Statistics

Views

Total Views
13,583
Views on SlideShare
12,262
Embed Views
1,321

Actions

Likes
17
Downloads
144
Comments
0

16 Embeds 1,321

http://ke-tai.org 778
http://www.gamebusiness.jp 497
http://s.deeeki.com 22
http://gamebusiness.jp 9
http://twitter.com 3
http://paper.li 2
http://fr.nexthop.jp 1
http://207.46.192.232 1
http://b.hatena.ne.jp 1
http://webcache.googleusercontent.com 1
http://192.168.1.4 1
https://p.yammer.com 1
resource://brief-content 1
http://static.slidesharecdn.com 1
http://translate.googleusercontent.com 1
http://131.253.14.66 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

地方企業がソーシャルゲーム開発を成功させるための10のポイント Presentation Transcript

  • 1. 地方企業がソーシャルゲーム開発を 成功させるための 10のポイント 株式会社インフィニットループ 松井 健太郎
  • 2. 自己紹介(1)松井 健太郎・ 株式会社インフィニットループ 代表・ ke-tai.org 管理人・ LOCAL PHP部(札幌のPHP勉強会グループ) 部長・ コーラが好き
  • 3. 自己紹介(2) http://ke-tai.org/ ケータイプログラマのためのコ ミュニティサイト。 携帯電話・スマートフォン向け サイト開発に関する記事・情報 を紹介している。
  • 4. 本日の内容• 会社紹介、開発実績の紹介• ポイント1. 仕事の取り方• ポイント2. リモートコミュニケーション用のツールを活用する• ポイント3. リモート作業の限界を見極める• ポイント4. 使用する技術を選ぶ• ポイント5. 外注スタッフを活用する• ポイント6. チーム編制• ポイント7. チーム内のルール作り• ポイント8. 基本をしっかりと• ポイント9. 設計が大事• ポイント10. 楽しむことが一番大切
  • 5. 会社紹介株式会社インフィニットループ(http://www.infiniteloop.co.jp/)・札幌のソフトウェア開発会社・業務内容  ブラウザゲーム・ソーシャルアプリ開発  モバイルサイト開発  Webアプリケーション開発  Linuxサーバ運用・保守
  • 6. 開発実績[ブラウザ三国志] ブラウザ三国志] 三国志 運営(株)AQインタラクティブ 開発ONE-UP(株) プログラム開発を(株)インフィニットループが担当 2009年7月正式サービス開始 AQI公式のほか、mixi、Yahoo!モバゲー、ハンゲーム、 ニコニコアプリなど多くのプラットフォーム・チャネリングに対応、 海外にも展開中[英雄クエスト] 英雄クエスト] クエスト 運営・開発ONE-UP(株) サーバ側プログラム開発を(株)インフィニットループが担当 2010年10月正式サービス開始 Yahoo!モバゲーにて運用中
  • 7. ブラウザ三国志について特徴・ インストール不要でブラウザ上だけで遊べるゲーム・ 三国志の武将がカードとして多数登場・ 他のプレイヤーと同盟を組み、都市を育てたり戦争を行う・ いわゆる村ゲーと言われるジャンル・ 基本的にHTML(PHP)とJavaScriptのみで製作されている
  • 8. 英雄クエストについて特徴・ クエスト進めて英雄(ヒーロー)をレベルアップしていくゲーム・ スキルの獲得や、武器/防具の収集と合成を繰り返し、 自分だけの最強ヒーローを育成していく・ 他プレイヤーと協力して、一人では倒すことのできない 強大なボスに挑み、連携して戦っていく・ Cityモードでは、他プレイヤーと同盟を組み、 協力して領地を広げていく
  • 9. はじめに 地方企業にありがちな特徴• 人員が限られていることが多い → 数の上でも、スキルの上でも、不利なことが多い• 予算も限られていることが多い• 大規模・高負荷開発や運用の経験が少ない → 大手はポータルサイトなどで、大規模開発を経験し、    そのスキルをベースにして、開発にのぞんでいる → そのような案件が地方には少ない ↓↓↓ これらのマイナス点 これらのマイナス点を補う マイナス 独自の工夫が必要になる 独自の工夫が必要になる
  • 10. ポイント1. 仕事の取り方(1)• 地方企業にとって、首都圏の案件を受注することは、仕事の安定供給、作業単価などの面から多くのメリットがある• 地方経済の活性化や、雇用の創出にも繋がる• 発注側にも開発コストが押さえられるなどのメリットも
  • 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を設置する• 共通のファイル置き場を用意する• 共通のレポジトリを用意する
  • 16. ポイント3. リモート作業の限界を見極める(1)• リモートで作業を行えるといっても、直接会ってのコミュニケーションは大切• 特に最初の顔合わせは大事• リーダー同士はリアルで顔を合わせること、できるならスタッフ同士も一度は顔合わせをしたい(無理ならビデオチャットだけでも)• 不思議なもので、知っている人だと腹がたたないようなことでも、知らない人にはイラっときたりする• リモート作業がまわりはじめてからも、全く顔を合わせないのは良くない(せめて年に2回くらいは会いたい)• 何気ない雑談で浮かび上がる問題点というのも多い
  • 17. ポイント3. リモート作業の限界を見極める(2)• さすがに各スタッフ全員が自宅作業というのは難しい• 機能や要件ごとに、ある程度まとまった範囲で動くと良いようだ(企画チーム、運用チーム、Flashチーム、 サーバサイドプログラムチーム、インフラチームなど)• バラバラでも問題なく作業できる場合もあるが、個人のスキルやコミュニケーション能力に大きく依存する• 業務の内容や社風などによる限界もある
  • 18. ポイント4. 使用する技術を選ぶ(1)• その地方の人口規模を踏まえたうえで、使用する技術(言語など)を選定することが大事• 例えばPythonは素敵な言語かも知れないが、地元に何人の技術者がいるかを考えると、採用は難しいケースも• 開発規模の変化に合わせて、リソースを柔軟に提供できることが大事• 求人や外注で人材を集めやすかったり、習得が比較的容易な開発言語を選択するとよい
  • 19. ポイント4. 使用する技術を選ぶ(2) 弊社では開発言語にPHP、DBにMySQLを使用している [ PHP ]• 安定のLAMP構成(Linux + Apache + MySQL + PHP)• 数多くの高負荷運用の実績がある• 書籍やWebの情報量も多い• 地方でも開発スタッフ集めが比較的容易• 処理速度がそれなりに高速、 APCなどのアクセラレータでさらにスピードアップ• もちろんダメな部分も多くある、 またPHPだけが特段ゲーム向きの言語というわけではない
  • 20. ポイント4. 使用する技術を選ぶ(3) [ MySQL ]• 無料で使え、パフォーマンスが良い• 数多くの高負荷・大規模運用の実績がある• 書籍やWebの情報量が多い• レプリケーションが容易• 経験のある技術者が多数いる• ソーシャルアプリの実績も多い
  • 21. ポイント5. 外注スタッフを活用する• 外注スタッフの利用は避けて通れない• ソーシャルゲーム案件は、おおむね超短納期• 口コミやランキング入りなど、登録数増加は突然やってくる、急激なリソースの増加要望に対応できなくてはならない• しかしながら、外注スタッフのスキルや作業品質には、過度の期待をしてはならない
  • 22. ポイント6. チーム編制• チームはエースプログラマを中心に編制する• しかし首都圏と比べると、どうしてもそんなにエース級はいない• なるべくエースに頼らない開発体制を目指す• 適材適所を意識したリソース配分を• 例えば管理画面などの関係者用の画面は、多少のバグがあっても問題がないケースも多い、そのような機能はスキルの低い人へ
  • 23. ポイント7. チーム内のルール作り(1)• 経験が浅かったり、外注のスタッフでチームを編制しなければならないため、しっかりとしたルール作りが必要になる• ソーシャルアプリは生き物、他案件と比べると日々の変化が大きい• 制作方針が一本化されていないと、バグ修正や機能追加がものすごく大変になる• 不特定の人が増えるにつれ、びっくりするようなコードを書く人が出てくる• 特にコーディング規約は明確なものがあったほうがよい
  • 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容量の増加はなるべく抑えるようにする→ 保存期間を定めるなど、仕様レベルから意識する必要がある• オンメモリでの動作を意識する• 仕様上マスタ分割が必要なら、更に慎重な設計を
  • 34. ポイント10. 楽しむことが一番大切• ゲーム開発というお仕事を楽しむということが一番大切• 参考ゲームをしっかりプレイして、面白さを理解すること• 出来上がった自分のゲームを、しっかりプレイすること• 自分の好みと合わないなどで、面白さが理解できない場合でも、どうやって面白くしようとしているのか、どの部分が悪いのかを考えながらプレイすることが重要• ゲーム作りは難しいけど面白い
  • 35. まとめ(1)• ポイント1. 仕事の取り方 → WEBや勉強会で技術力をアピール → ゲーム開発の経験がなくても大丈夫• ポイント2. リモートコミュニケーション用のツールを活用する → SkypeやPS3などのツール類を活用する• ポイント3. リモート作業の限界を見極める → 限界を見極めて、リアルのコミュニケーションを使い分ける• ポイント4. 使用する技術を選ぶ → 人口規模や案件内容に合わせた技術を選ぶ• ポイント5. 外注スタッフを活用する → ソーシャルゲームは超短納期
  • 36. まとめ(2)• ポイント6. チーム編制 → なるべくエースに頼らないチーム作りを目指す• ポイント7. チーム内のルール作り → チーム内ルールやコーディング規約重要• ポイント8. 基本をしっかりと → 特別な知識はいらない、基本をしっかりと身につける• ポイント9. 設計が大事 → 負荷対策は設計が重要• ポイント10. 楽しむことが一番大切 → ゲーム作りは難しいけど面白い
  • 37. おわりに• いろいろと偉そうなことを書いてきましたが、 トラブルもよく起こしてますし、実践しきれてない箇所もあります• それでも、それなりにうまくまわせていけているのは、 パートナーさんの協力があってのこと• いつも感謝の心を忘れずに
  • 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からお問い合わせください