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

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

13,252

Published on

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

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

Published in: Technology
0 Comments
17 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
13,252
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
145
Comments
0
Likes
17
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

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からお問い合わせください

×