任天堂株式会社の導入事例:ビッグタイトル『Super Mario Run』のバックエンドを支えた Google App Engine
Google Cloud Japan Team
昨年末にリリースされ、任天堂初のスマートフォン向け本格ゲームアプリとして注目された『Super Mario Run(スーパーマリオ ラン)』。その背後では、文字通りケタ違いのアクセスをさばく強力なバックエンドが稼働していました。任天堂、DeNA そして Google が一丸となって取り組んだ、その開発ストーリーをお届けします。
■利用している Google Cloud Platform サービス
Google App Engine
Google BigQuery
Google Cloud Dataflow
Google Cloud Datastore
Google Cloud Pub/Sub
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 か国・地域で同時スタートしようというのは衝撃的だったようで、最初のミーティング時に『あなたたちはクレイジーだ!』と言われてしまいました(笑)。でも、そこで、だからやるべきではない、ではなく、どうすればやれるのかを一緒に模索してくれたのはうれしかったですね。最初から最後まで建設的なやり取りができました。」(竹本さん)
『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 さんが持っているモバイルのノウハウが相互に補うようにがっちりハマりました。今、考え得る最高のチームが作れたのではないかと思っています。」(府川さん)
GCP のその他の導入事例はこちらをご覧ください。