Inside CyberAgents Game Development

Post on 24-Jan-2018

2.447 views 0 download

Transcript of Inside CyberAgents Game Development

Inside CyberAgent’s Game Development

2015/10/3  株式会社サイバーエージェント  

⽩白井  英  川村  猛

• 前半 - (白井) • CyberAgentって? • ゲーム事業開発の歴史 • 開発の仕方 • 後半 - (川村) • PHPに命を救われた話

Agenda

お前、誰よ• 株式会社 サイバーエージェント • SGE統括室CTO • 白井 英 • エンジニア • Twitter @goodoo • Blog http://ameblo.jp/goodoo • DQ10 すぐちむ (FB392-435) プクリポ(旅芸人)

少し説明

CyberAgentの 子会社群による ゲーム事業

CyberAgentって?

Google先生に聞いた結果Go Go Go Lang Java ・・・

PHPどこ?

CyberAgentも PHPつかってるよ っていう話をします

ゲーム事業開発の歴史

2010年 ソーシャルアプリ黎明期

2010年の PHP

カンファレンス

その頃のウチ・・

星空バータウンドリームプロデューサー

コーデマニア

当時はまだ ガラケーが主戦場

とはいえその 流行(負荷)具合は

やばかった

当時の数字

• ユーザ数約200万人 • 約10億PV/Month • 75万(MonthlyActiveUser) • ピーク時のトラフィック200Mbps

「星空バータウン」

開発環境に 目を向ける

当時(2010年)の開発の仕方• サーバはオンプレ • CakePHP • puppetでサーバ構築 • デプロイはCapistrano • DBのMigrationはRake

※すべてのプロジェクトで実施できてたわけではないです

テストコードはなかった

開発環境は 1 or 2台を

チームで使い分け

Subverion管理で レビューなし・・

つくることに 一生懸命な時代 でした・・

2012-13年 ブラウザソーシャル

アプリ後期

ブラウザのアプリとネイティブのアプリ

を作り始めた

開発環境に 目を向ける

当時(2012-13年)の開発の仕方

• サーバはオンプレからクラウド • CodeIgniter • デプロイはshell(rsync)

• テストコードは少しだけ • Subversion管理 • Redmineでチケット駆動へ • プログラムレビューはまだ・・・

1チームのあたりの 人数が増えた

開発環境が・・

devがいっぱい・・・

開発ラインが並行で いくつも走るように

なった結果

2013-14年 転換期

子会社の1つ(CyberX)が開発言語を

PHPからNode.jsへ

新しい技術要素

開発環境としての 開発のし易さを

見直す

このスライドの内容を実践http://www.ryuzee.com/contents/blog/6102

・ユニットテストを書く ・結合テストを自動化 ・継続的インテグレーションサーバを  つかう ・デプロイを自動化 ・環境構築を自動化

このスライドの内容を取り入れる

http://sotarok.hatenablog.com/entry/20120919/presented_git_and_pull_request_work_flow_at_phpcon2012

・1チケット1ブランチ ・ブランチ名は、チケット番号 ・ローカルのVirtualBoxで開発 ・ローカルのテストが通ったら  featureへPUSH

node port:1234 /var/www/feature/1234

チケット番号とURLを結びつけ

node port:1235 /var/www/feature/1235

node port:1236 /var/www/feature/1236

node port:1237 /var/www/feature/1237

nginx

1234.example.com

1235.example.com1236.example.com

1237.example.com

server { listen 80; server_name ~^(?<port>\d+)\.example\.com; location / { set $url example.com; proxy_pass http://$url:${port}; } }

当時(2013-14年)の開発の仕方• サーバはクラウド • CodeIgniter(PHP) • express(Node.js) • デプロイはCapistrano • DBのMigrationはRake

• テストコードを書く習慣に • Git管理 • Redmineでチケット駆動 • PullRequestによるソースレビュー

継続的デリバリー

現在

ネイティブアプリが 主戦場

様々な技術を使用

【サーバ】• クラウド • AWS • CAのプライベートクラウド • GAE(Java)

• AWS • オペレーション効率化 • CAのプライベートクラウド • コストメリット • GAE • Googleと仲良くなれた

それぞれのメリット

• Googleと仲良くなれた

【WAF】

• CodeIgniter • Phalcon

【WAF】

とにかく早いやつ かつ

見通しがいいやつ

【その他】• Git • Git-flowが主流 • 一部GitHub-flowを使用 • チケット管理 • Redmineが主流

【その他】チケットを紐づけての開発ができる 開発フローを採用

ネイティブが主戦場に なっても

サーバエンジニアに対する 変化は少なかった

番外編

子会社群ならではの 工夫

ソースの共有 (現在進行形)

見る専用の Gitlabを立てた

各プロジェクトから ソースを定期的に 自動でPush

アカウントは 社内SSOで管理

(アカウント管理が楽)

Publicレポジトリ廃止 (とっちゃった)

Internalをデフォルトで表示

(見にくいかも・・・)

まだまだ試行錯誤中

自分たちのプロセスは 自分たちで進化させる!

ご清聴ありがとうございました

PHPカンファレンス2015 Inside CyberAgent’s Game Development ~PHPに命を救われた話~ 2015.10.03  

川村猛 株式会社GRIPHONE 取締役/CTO 2010年03月よりCyberAgent 2010年03月 ‒ 2013年01月 株式会社CyberX 2013年02月 ‒ 株式会社GRIPHONE PHP使用歴10年

株式会社GRIPHONE 2013年02月設立 GREE、CyberAgentのジョイントベンチャー ソーシャルゲームの開発/運用

GRIPHONEのサービス

GREEプラットフォーム 2013年09月~

GREEプラットフォーム 2014年05月~ dゲームプラットフォーム 2015年06月~

GREEプラットフォーム 2015年03月~ mobageプラットフォーム 2015年09月~

DMMプラットフォーム 2015年07月~

全てwebアプリです

全てPHPアプリです

技術要素

PHP関連技術  PHP(5.4~5.5)  PHPUnit  CodeIgniter(2.1.3)  Smarty  SWF editor  PHP Debug Bar  PEAR  xhprof

 HHVM

その他  CentOS  Apache  nginx  MySQL redis  memcached  sass compass  Backborn.js  Jenkins  capistrano  fluentd   etc…

PHPに命を救われた話

設立後、いきなり大失敗

最初にリリースしたアプリを わずか2ヶ月でクローズ

システムに多くの問題

どんな問題?

アンコントローラブルな部分  ・ネイティブアプリの“横展”   →言語はJava(Javaに罪はない)   →元々社内で開発したものではないため、理解が浅い  ・Google App Engine(GAEに罪はない)   →上手く使いこなせなかった

実行速度  ・横展元のネイティブアプリも元々速度に課題を抱えていた  ・GREEプラットフォームを経由、APIにアクセス   →レスポンス速度悪化   →プラットフォームのタイムアウト頻発   →非同期処理を多用して改善は見られたが…  ・GAEに適した設計になっていない   →RDB的なデータ設計   →マシンパワーで無理やり解決…といった手段も取れない

セキュリティ  ・SQLインジェクション、XSS、CSRF対策が不十分  ・ブラウザバック、連打、URL直打ち、要素改竄等の対策が甘い   →元々ネイティブアプリなので考慮されていない

設立したばかりなのに 倒産の危機

次は絶対に失敗出来ない

PHPにシフトチェンジ

何故PHP?

CAグループの ブラウザゲーム資産を

最大限に活用

成功の確率 

失敗のリスク

どんな資産?

PHPでソーシャルアプリの開発/運用経験  ・過去3年間の開発/運用経験   →“正解”を持っている   →インフラ環境、開発フローまで含めたノウハウ  ・PHPでのソーシャルアプリ開発に慣れたエンジニアが社内に在籍

運用実績  ・十分に実績のあるwebアプリ基盤   →DAU 数十万規模   →GREE、mobageでの運用実績   →不具合解消やパフォーマンス改善がある程度済んでいる

開発スピード  ・サーバー、マークアップ合わせてエンジニア8名   →2本目のアプリは開発期間4ヶ月でリリース

その後どうなった?

シフトチェンジ後 約2年半で

4プラットフォーム 6本のサービス

得た教訓

過去のノウハウと実績 開発スピードと安定性

の重要性

何が言いたいのか

GRIPHONEはPHPに 命を救われた会社です

感謝の気持ちを伝えたい

ありがとうPHP

ご静聴ありがとうございました