Google Cloud Platform Japan Blog
最新情報や使い方、チュートリアル、国内外の事例やイベントについてお伝えします。
任天堂株式会社の導入事例:ビッグタイトル『Super Mario Run』のバックエンドを支えた Google App Engine
2017年6月14日水曜日
昨年末にリリースされ、任天堂初のスマートフォン向け本格ゲームアプリとして注目された『Super Mario Run(スーパーマリオ ラン)』。その背後では、文字通りケタ違いのアクセスをさばく強力なバックエンドが稼働していました。任天堂、DeNA そして Google が一丸となって取り組んだ、その開発ストーリーをお届けします。
■利用している Google Cloud Platform サービス
Google App Engine
Google Cloud Pub/Sub
Google Cloud Dataflow
Google BigQuery
Google Cloud Storage
Google Stackdriver (Logging, Monitoring, Trace, etc)
など
■
任天堂株式会社
1980 年代に『ファミリーコンピュータ』によって、世界中にビデオゲームブームを巻き起こし、その後も家庭用ゲーム機市場を牽引し続けている老舗エンタテインメント企業(1889 年創業)。マリオやドンキーコング、ゼルダの伝説、どうぶつの森など、強力な IP(知的財産)を多数保有していることでも知られている。
アプリの将来に備え、バックエンドをマネージドサービスに移管
2015 年 3 月 17 日に突如発表され、世界中のゲームファンに衝撃を与えた任天堂のスマートデバイス進出。そのゲームアプリ市場で絶大な実績とノウハウを持つ株式会社ディー・エヌ・エー(以下、DeNA)との協業(業務・資本提携)によって、マリオなど、任天堂の誇る世界的 IP をスマートデバイス向けにも展開していくことが大々的に発表されました。相互の強みを活かす形で、ゲーム開発や、それを安定動作させるバックエンドを共同で開発していくことになったのです。そして、そのきっかり 1 年後となる 2016 年 3 月 17 日には、任天堂初のスマートデバイスアプリとなる『Miitomo(ミートモ)』をリリース。続いて、12 月にはiOS版『Super Mario Run』(Android 版は 2017 年 3 月リリース)が、2017 年 2 月には『ファイアーエムブレム ヒーローズ』が配信開始されています。今後も 1 年に 2~3 本のスマホアプリを投入していく予定ということです。
投入する全てのタイトルがそれぞれビッグタイトルとなることが期待されている任天堂ゲームアプリにおいて、それを支えるバックエンドに求められる品質は並大抵ではありません。今回、DeNA 側のチームを率いて、このプロジェクトに参画した株式会社ディー・エヌ・エー オープンプラットフォーム事業本部 システム開発部 菅原賢太さんは、次のように当時を振り返ります。
「2016 年春に『Miitomo』をリリースした際は、オンプレミスに近い形でバックエンドを構築していたのですが、それだとどうしても運用にリソースを奪われてしまい、効率的な開発を妨げている面がありました。今はまだ良くても、このままタイトル数が増えていったら大変なことになるぞという懸念があったんですね。また、当時、任天堂さんから提示された『Super Mario Run』の想定トラフィックが、これまで多くのスマホアプリを手がけてきた我々の目から見てもあまりにもケタ違いで……。そこで、
Google App Engine(GAE)
のようなマネージドサービスを利用して、いくつかの業務を Google さんにシフトするということを提案することにしました。」
GAE のオートスケールは、トラフィック量に合わせて自動でインスタンスの追加、削除を行います。しかも、ミリ秒単位でその数を最適化することが可能です。世界同時リリースという大量のアクセス数が予想された今回のケースでは、システムがダウンすることは絶対に避けなければなりません。高可用性が求められるサービスの実現に GAE が選択された理由の一つがここにあるのです。
しかし、GAE を採用するということはバックエンドを 1 から作り直すと言うことにほかなりません。しかも菅原さんが任天堂にこの提案を行ったのは 2016 年 7 月末。『Super Mario Run』配信予定日まで、もう、半年を切っていました。任天堂側はこれについてどのように対応したのでしょうか?今回のプロジェクトのもう一方を担う、任天堂側のチームを率いてきた、任天堂株式会社ビジネス開発本部 スマートデバイス事業部の府川幸太郎さん、竹本賢一さんにも聞いてみました。
「確かに大規模な改修ではあるのですが、『Miitomo』で菅原さん率いる DeNA チームの実績を目の当たりにしていたので、今から始めても充分にやりきれるのではないかという確信がありました。いや、むしろ、今、このタイミングでそれをやらなければ将来的にまずいことになるだろう、と。また、個人的にもマネージドサービスを活用して社内の運用コストを軽減することに興味がありましたので、ぜひやりたいと思いました。」(竹本さん)
「……と、竹本は言いますが、私自身はそれよりもやや慎重でしたね(笑)。将来に向けた不安要素があるとは言え、既に安定稼働しているシステムがあり、その次に来るタイトルがマリオというビッグタイトルで失敗が許されないわけですから。そんな中、これまで使ったことのない GAE に移行するというのはかなりのチャレンジ。ただ、最終的には、私がテクニカルな面で信頼を置いているこの 2 人が問題ないと言うのだから移行しようと決断しました。」(府川さん)
任天堂株式会社
ビジネス開発本部 スマートデバイス事業部 事業システム開発グループ
グループマネージャー 府川幸太郎さん
“クレイジーな目標”に 3 社協力のもと邁進
こうして動き始めたバックエンドの GAE 移行。これに際し、竹本さんと、菅原さんはまず Google に技術的協力を要請します。もちろん、Google にとってもそれは望むところ。ちょうどその数か月前(2016 年 7 月)にNiantic, Inc. からリリースされた『Pokémon GO』での経験を踏まえ、大規模プロジェクトにおける安定性向上を顧客と二人三脚でやっていくべきだという認識が生まれていたのです。
「時間がない中、Google さんのフットワークの軽さ、積極性には本当に驚かされました。相談した先から、その場で一緒に課題を解決してくれる方をご紹介いただくなど、迅速に対応していただきました。」(竹本さん)
任天堂株式会社
ビジネス開発本部 スマートデバイス事業部 事業システム開発グループ
グループチーフ 竹本賢一さん
「9 月末ごろに一通りの実装が終わり、そこから、10%、20%と品質を高めていくため、さまざまな助言をいただきました。毎日のようにハングアウトでやり取りしたほか、実際にアメリカからお越しいただき、同じ部屋に籠もってみっちりトラブルシュートできたのはありがたかったですね。もちろん、こちらからもそれぞれのサービスをどのくらいの規模感で使うことになるのかなどを、エスティメーションシートにまとめて共有するようにしています。そうしたかたちで、非常に効率的に開発が進んでいった結果、10 月下旬くらいには満足できるレベルのものが仕上っています。」(菅原さん)
もちろん、そこからの負荷試験においても、Google は徹底的にこれにコミット。アメリカ本社の SRE(Site Reliability Engineering=サイト信頼性エンジニアリング)担当者も来日し、『Super Mario Run』の配信に耐えうる堅牢なバックエンドを構築。最終的には
Datastore
へのトラフィックテストにおいて、秒間 300 万アクセスのテストを完了。想定される数字の数倍ものアクセスにも耐えるシステムが完成しました。
「ただ、そんな Google さんから見ても、『Super Mario Run』を 150 か国・地域で同時スタートしようというのは衝撃的だったようで、最初のミーティング時に『あなたたちはクレイジーだ!』と言われてしまいました(笑)。でも、そこで、だからやるべきではない、ではなく、どうすればやれるのかを一緒に模索してくれたのはうれしかったですね。最初から最後まで建設的なやり取りができました。」(竹本さん)
システム構成図(GCPのさまざまなサービスを利用)
『Super Mario Run』配信当日、そこに“ドラマ”はなかった
そして迎えた、『Super Mario Run』配信日。その後の発表で明らかにされたよう、わずか 4 日で 4,000 万ダウンロード( 1 億 5,000 万ダウンロードに到達する見通し。2017 年 4 月末時点)という、まさに“お祭り騒ぎ”とも言えるような大フィーバーとなりました。もちろんこの日は任天堂も DeNA も泊まり込みで待機していたそうです。近年、大規模タイトルでは少なからず接続障害が発生していますが、『Super Mario Run』はどうだったのでしょうか?
「ところが、これが本当に何事もなかったんです。あまりに何もなさ過ぎて不安になってしまうほど。当日にこんなトラブルがあって、それをこんなふうに切り抜けたんです、とか言えれば良かったんですが、そこに“ドラマ”は起きませんでした(笑)。」(菅原さん)
その後の『ファイアーエムブレム ヒーローズ』や Android 版『Super Mario Run』のリリース時にも、このバックエンドは安定動作。現在も特に大きな問題は起こっていないと言います。
「もちろん、小さなトラブルはいくつかありましたが、お客さまが長時間ゲームをプレイできなくなったというようなトラブルは発生していません。現在、抱えている課題は急激なアクセス増があった時に若干、遅延が発生するというくらいですね。今はその対策として GAE のオートスケールにちょっと手を加えて、アクセスが急増するゲーム内イベントの直前などに手動でインスタンスを上げられる仕組みなどを組み込んでいるのですが、これが完全自動化されるのが理想。今どきは機械学習などもありますし、Google さん ならきっとできるはず(笑)。もちろん、そのために必要となるデータはフィードバックさせていただいています。」(菅原さん)
株式会社ディー・エヌ・エー
オープンプラットフォーム事業本部 システム開発部 アライアンスシステムグループ
グループマネージャー 菅原賢太さん
今回開発したシステムでは、ゲームに関係する各種ログデータも膨大に記録されています。こうしたデータの分析には
BigQuery
を活用。大量データを瞬時に分析することが可能となり、今後のアプリ開発に有益な情報を蓄積しています。
「今後もタイトルをリリースしていく予定ですが、任天堂、DeNA さんそして、Google さんの、このメンバーでやっているうちは、大きな壁を感じることはないのではないかと期待しています。報道などでは意外と言われることもあった、任天堂と DeNA さんの組みあわせですが、実際にやってみると、任天堂が長年培ってきたグローバルサービスのノウハウと、DeNA さんが持っているモバイルのノウハウが相互に補うようにがっちりハマりました。今、考え得る最高のチームが作れたのではないかと思っています。」(府川さん)
任天堂株式会社の導入事例 PDF は
こちら
をご覧ください。
GCP のその他の導入事例は
こちら
をご覧ください。
0 件のコメント :
コメントを投稿
12 か月間のトライアル
300 ドル相当が無料になるトライアルで、あらゆる GCP プロダクトをお試しいただけます。
Labels
.NET
.NET Core
.NET Core ランタイム
.NET Foundation
Access Management
AlphaGo
Anvato
Apache Beam
Apache Maven
API
Apigee
APIs Explore
App Engine
App Engine Flex
App Engine flexible
AppArmor
AppScale
AprilFool
AR
Artifactory
ASP.NET
ASP.NET Core
Attunity
AWS
Big Data
BigQuery
Billing Alerts
Bime by Zendesk
Bitbucket
Borg
BOSH Google CPI
Bower
BreezoMeter
BYOSL
Capacitor
Chromium OS
Client Libraries
Cloud API
Cloud Audit Logging
Cloud Bigtable
Cloud CDN
Cloud Client Libraries
Cloud Console
Cloud Consoleアプリ
Cloud Container Builder
Cloud Dataflow
Cloud Dataflow SDK
Cloud Datalab
Cloud Dataprep
Cloud Dataproc
Cloud Datastore
Cloud Debugger
Cloud Deployment Manager
Cloud Endpoints
Cloud Foundry
Cloud Foundry Foundation
Cloud Functions
Cloud IAM
Cloud IAP
Cloud Identity
Cloud Jobs API
Cloud KMS
Cloud Launcher
Cloud Load Balancing
Cloud Machine Learning
Cloud monitoring
Cloud Natural Language API
Cloud Networking
cloud Pub/Sub
Cloud Resource Manager
Cloud Resource Manager API
Cloud SDK
Cloud SDK for Windows
Cloud Source Repositories
Cloud Spanner
Cloud Speech API
Cloud SQL
Cloud Storage
Cloud Storage FUSE
Cloud Tools for PowerShell
Cloud Tools PowerShell
Cloud Translation
Cloud Translation API
Cloud Virtual Network
Cloud Vision
CloudBerry Backup
CloudBerry Lab
CloudEndure
Cloudian
CloudML
Cluster Federation
Codefresh
Codelabs
Cohesity
Coldline
Colossus
Compute Engine
Compute user Accounts
Container Engine
Container Registry
Container-Optimized OS
Container-VM Image
CRE
CSEK
Customer Reliability Engineering
Data Studio
Dbvisit
DDoS
Debugger
deep learning
Deployment Manager
Developer Console
Developers
DevOps
Disney
Docker
Dockerfile
Drain
Dreamel
Eclipse
Eclipse Orion
Education Grants
Elasticsearch
Energy Sciences Network
Error Reporting
ESNet
Evernote
FASTER
Fastly
Firebase
Firebase Analytics
Firebase Authentication
Flexible Environment
G Suite
gcloud
GCP 移行ガイド
gcsfuse
GitHub
Go
Go 言語
Google App Engine
Google Apps
Google Certified Professional - Data Engineer
Google Cloud
Google Cloud Certification Program
Google Cloud Client Libraries
Google Cloud Console
Google Cloud Dataflow
Google Cloud Datalab
Google Cloud Datastore
Google Cloud Endpoints
Google Cloud Explorer
Google Cloud Identity and Access Management
Google Cloud Launcher
Google Cloud Logging
Google Cloud Platform
Google Cloud Resource Manager
Google Cloud Security Scanner
Google Cloud Shell
Google Cloud SQL
Google Cloud Storage
Google Cloud Storage Nearline
Google Cloud Tools for IntelliJ
Google Code
Google Compute Engine
Google Container Engine
Google Data Analytics
Google Data Studio
Google Date Studio
Google Deployment Manager
Google Drive
Google Earth Engine
Google Genomics
Google SafeSearch
Google Service Control
Google Sheets
Google Slides
Google Translate
Google 公認プロフェッショナル
GPU
Gradle
GroupBy
gRPC
HA / DR
Haskell
HEPCloud
HIPAA
Horizon
HTCondor
IaaS
IAM
IBM
IBM POWER9
icon
IERS
Improbable
InShorts
Intel
IntelliJ
Internal Load Balancing
Internet2
IoT
Issue Tracker
Java
JFrog
JFrog Artifactory SaaS
Jupiter
Jupyter
Khan Academy
Komprise
kubefed
Kubernetes
KVM
Landsat
load shedding
Logging
Looker
Machine Learning
Magenta
Managed Instance Group
Maps API
Maven
Maxon Cinema 4D
MightyTV
Mission Control
MongoDB
MQTT
MySQL
Nearline
Network Time Protocol
neural networks
Next
Node
NoSQL
NTP
NuGet パッケージ
OCP
OLDISM
Open Compute Project
OpenCAPI
OpenCAPI Consortium
OpenShift Dedicated
Orbitera
Organization
Orion
Panda
Particle
Percona
Pete's Dragon
Pivotal
Pivotal Cloud Foundry
PLCN
Pokemon GO
Pokémon GO
Poseidon
Postgre
PowerPoint
PowerShell
Protocol Buffers
Puppet
Pythian
Python
Rails
Raspberry Pi
Red Hat
Regional Managed Instance Groups
Ruby
Rust
SC16
ScaleArc
Security & Identity
Sentinel-2
Serving Websites
SideFX Houdini
SIGOPS Hall of Fame Award
Sinatra
Site Reliability Engineering
SLA
Slack
SLI
SLO
Snap
Spaceknow
SpatialOS
Spinnaker
Spring
SQL Server
SRE
Stack Overflow
Stackdriver
Stackdriver Agent
Stackdriver Debugger
Stackdriver Diagnostics
Stackdriver Error Reporting
Stackdriver Logging
Stackdriver Monitoring
Stackdriver Trace
Stanford
Startups
StatefulSets
Storage & Databases
StorReduce
Streak
Sureline
Sysbench
Tableau
Talend
Tensor Flow
Tensor Processing Unit
TensorFlow
Terraform
The Carousel
TPU
Trace
Transfer Service
Translate API
Uber
Veritas
Video Intelligence API
Vision API
Visual Studio
Visualization
Vitess
VM
VM Image
VR
VSS
Waze
Webyog
Wide and Deep
Windows Server
Windows ワークロード
Wix
Worlds Adrift
Xplenty
Yellowfin
YouTube
Zaius
Zaius P9 Server
Zipkin
ZYNC Render
アーキテクチャ図
イベント
エンティティ
オンライン教育
クラウド アーキテクト
コードラボ
コンピューティング
サポート
ジッター
ショート動画シリーズ
スタートガイド
ストレージ
セミナー
ソリューション ガイド
ソリューション: メディア
データ エンジニア
データセンター
ビッグデータ
ファジング
プリエンプティブル VM
フルマネージド
マイクロサービス
マルチクラウド
リージョン
ロード シェディング
運用管理
可用性
海底ケーブル
機械学習
月刊ニュース
資格、認定
新機能、アップデート
人気記事ランキング
導入事例
内部負荷分散
認定試験
料金
Archive
2017
6
5
4
3
2
1
2016
12
11
10
9
8
7
6
5
4
3
2
1
2015
12
11
10
9
8
7
6
5
4
3
2
1
2014
12
11
10
9
8
6
5
4
3
2
Feed
月刊ニュースレターに
登録
新着ポストをメールで受け取る
Google
on
Follow @GoogleCloud_jp
0 件のコメント :
コメントを投稿