SlideShare a Scribd company logo
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.com
1236.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レポジトリ廃止
(とっちゃった)
Inside CyberAgent's Game Development
Internalをデフォルト
で表示
(見にくいかも・・・)
Inside CyberAgent's Game Development
まだまだ試行錯誤中
自分たちのプロセスは
自分たちで進化させる!
ご清聴ありがとうございました
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
ご静聴ありがとうございました

More Related Content

PDF
サイバーエージェントのゲーム事業のインフラからみたゲーム開発スタイルの変遷
PPTX
ポコロンダンジョンズとリアルタイム通信 -サーバサイド編-
PDF
ポコロンダンジョンズとリアルタイム通信 -クライアント編-
PDF
Jaws niigata#8
PDF
全世界6,500万DL突破!ヒットゲームを作り上げたチームの道のり
PDF
組織にテストコードを書く文化を 根付かせるためにやってきたこと
PDF
It's up to you 〜 楽しさドリブンで歩んだ道 〜
PPTX
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
サイバーエージェントのゲーム事業のインフラからみたゲーム開発スタイルの変遷
ポコロンダンジョンズとリアルタイム通信 -サーバサイド編-
ポコロンダンジョンズとリアルタイム通信 -クライアント編-
Jaws niigata#8
全世界6,500万DL突破!ヒットゲームを作り上げたチームの道のり
組織にテストコードを書く文化を 根付かせるためにやってきたこと
It's up to you 〜 楽しさドリブンで歩んだ道 〜
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい

What's hot (20)

PDF
Unityでソーシャルログイン機能を実装してみた
PDF
スマホ版ログレスでグローバル展開を想定したサーバ構築をAnsibleで試してみた話
PPTX
GCPでCI環境を構築する
PDF
20140829 山形でJAWS-UGをやって困った2つのこと
PDF
メタバースのビジネスモデルと技術限界
PDF
Go (5) JAZUG 関西とゆかいな仲間たち的な
PDF
スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)
PDF
[JAWS-UG関西IoT専門支部] IoTで関西のコミュニティをつなぐ
PPTX
ゲームデータDLとの戦い ~幻塔戦記グリフォン~
PPTX
Photogrammetry on Cloud
PDF
Designer's Design Talk「デザインの基礎」
PPTX
悩めるひとり情シスを救うChatwork API活用方法
PPTX
Fantia開発チームのマネジメント改善
PPTX
VyOSで作るIPv4 Router/IPv6 Bridge
PPTX
アクセシビリティを考えたalt属性を自動生成してみよう!
PDF
NuxtJS + REST APIで運用中サービスをNuxtJS + GraphQLに変更したことによる光と影
PPTX
はじめてのAzure Azure的ピタゴラスイッチのススメ- PaaS・サーバーレス 初級編 -
PPTX
コードを書かずに爆速開発
PPTX
スマホ版ログレスにポストエフェクトシステムを導入した話
PPTX
Rancher on Bluemix Infrastructure
Unityでソーシャルログイン機能を実装してみた
スマホ版ログレスでグローバル展開を想定したサーバ構築をAnsibleで試してみた話
GCPでCI環境を構築する
20140829 山形でJAWS-UGをやって困った2つのこと
メタバースのビジネスモデルと技術限界
Go (5) JAZUG 関西とゆかいな仲間たち的な
スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)
[JAWS-UG関西IoT専門支部] IoTで関西のコミュニティをつなぐ
ゲームデータDLとの戦い ~幻塔戦記グリフォン~
Photogrammetry on Cloud
Designer's Design Talk「デザインの基礎」
悩めるひとり情シスを救うChatwork API活用方法
Fantia開発チームのマネジメント改善
VyOSで作るIPv4 Router/IPv6 Bridge
アクセシビリティを考えたalt属性を自動生成してみよう!
NuxtJS + REST APIで運用中サービスをNuxtJS + GraphQLに変更したことによる光と影
はじめてのAzure Azure的ピタゴラスイッチのススメ- PaaS・サーバーレス 初級編 -
コードを書かずに爆速開発
スマホ版ログレスにポストエフェクトシステムを導入した話
Rancher on Bluemix Infrastructure
Ad

Viewers also liked (20)

PDF
あなたのチームの「いい人」は機能していますか?
PDF
Apache Drill で見る Twitter の世界
PPTX
F.O.Xを支える技術
PDF
あなたのScalaを爆速にする7つの方法
PDF
Ironicを運用して半年が経過しました - OpenStack最新情報セミナー(2016年7月)
PPTX
サイバーエージェント様 発表「OpenStackのNWと物理の話」
PDF
AWSとGCPを使用したインフラ環境
PDF
GKEで半年運用してみた
PDF
Wowzaを用いた配信基盤 Takusuta tech conf01
PPTX
[社内勉強会]ELBとALBと数万スパイク負荷テスト
PDF
レスポンシブWebデザインでうまくやるための考え方
PDF
Atomic Design powered by React @ AbemaTV
PPTX
NHN HTML5勉強会 サービス開発
PDF
The world is connected
PDF
20121217 livedoorblog epub_enquete_report
PDF
スマートフォンの徹底検証とWebパフォーマンス
PDF
[Livesence Tech Night] グリーにおけるHiveの運用
PPTX
Strolyによる古地図やイラスト地図を使ったまち歩きや、Wikipedia記事との連携の方法
PPTX
NHN HTML5勉強会 CSS3アニメーション
PDF
すごいHaskell 第7章 型や型クラスを自分で作ろう(前編)
あなたのチームの「いい人」は機能していますか?
Apache Drill で見る Twitter の世界
F.O.Xを支える技術
あなたのScalaを爆速にする7つの方法
Ironicを運用して半年が経過しました - OpenStack最新情報セミナー(2016年7月)
サイバーエージェント様 発表「OpenStackのNWと物理の話」
AWSとGCPを使用したインフラ環境
GKEで半年運用してみた
Wowzaを用いた配信基盤 Takusuta tech conf01
[社内勉強会]ELBとALBと数万スパイク負荷テスト
レスポンシブWebデザインでうまくやるための考え方
Atomic Design powered by React @ AbemaTV
NHN HTML5勉強会 サービス開発
The world is connected
20121217 livedoorblog epub_enquete_report
スマートフォンの徹底検証とWebパフォーマンス
[Livesence Tech Night] グリーにおけるHiveの運用
Strolyによる古地図やイラスト地図を使ったまち歩きや、Wikipedia記事との連携の方法
NHN HTML5勉強会 CSS3アニメーション
すごいHaskell 第7章 型や型クラスを自分で作ろう(前編)
Ad

Similar to Inside CyberAgent's Game Development (20)

PPTX
SORACOM Conference "Discovery" 2018 | E1. Wioで始めるIoTプロトタイプ開発 〜実践事例のご紹介〜
PDF
【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?
PPTX
クラウドを用いるIoT開発における実費レポート
PDF
たのしいアノテーション
PDF
誰でもシステム開発ができる「ノーコード開発」入門
PDF
皆さん!ふくてんが来ましたよ!!
PDF
Photon Enterprise Cloud 事例
PPTX
Google Material DesignをPolymerで表現しよう
PDF
歩ける全天球動画の実験
PPTX
仮想サーバは、もう不要?!今からIoTやるなら 「サーバレス・コンピューティング」
PPTX
if-up 2019 | C3. コンシューマープロダクトにおけるクラウド実践
PPTX
今日から始めるC3.js
PDF
生成AI勉強会_2024-11-06.pdf
PDF
GitHub Actionsを使ってAPI外部公開時の作業を自動化した話
PPTX
オブジェクトストレージを使ってイメージビューアを作ってみる
PPTX
Ride on azure~アイデアソン編~
PPTX
MRを活用した車両分解訓練(双子ゲームス)
PDF
スマートスピーカーのバックエンドで Azure を使う方法
PDF
nomad-cliの紹介
PDF
クラッシュフィーバー開発の裏側
SORACOM Conference "Discovery" 2018 | E1. Wioで始めるIoTプロトタイプ開発 〜実践事例のご紹介〜
【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?
クラウドを用いるIoT開発における実費レポート
たのしいアノテーション
誰でもシステム開発ができる「ノーコード開発」入門
皆さん!ふくてんが来ましたよ!!
Photon Enterprise Cloud 事例
Google Material DesignをPolymerで表現しよう
歩ける全天球動画の実験
仮想サーバは、もう不要?!今からIoTやるなら 「サーバレス・コンピューティング」
if-up 2019 | C3. コンシューマープロダクトにおけるクラウド実践
今日から始めるC3.js
生成AI勉強会_2024-11-06.pdf
GitHub Actionsを使ってAPI外部公開時の作業を自動化した話
オブジェクトストレージを使ってイメージビューアを作ってみる
Ride on azure~アイデアソン編~
MRを活用した車両分解訓練(双子ゲームス)
スマートスピーカーのバックエンドで Azure を使う方法
nomad-cliの紹介
クラッシュフィーバー開発の裏側

Inside CyberAgent's Game Development