『すれちがい通信中継所』
4. 「こんなことも社内で?!」
- 河原
- DSの時の「すれちがい通信中継所」では、
DS本体を使って、データのやりとりをしていましたが、
今回は、「ニンテンドーゾーン」などの
アクセスポイントからアップロードされたデータは
いったんサーバーにためるようにしています。
そこで、自社でサーバーを用意しようとすると、
納品されるまで1か月くらい待たないといけませんでした。
- 岩田
- でも今回は、急ぐ必要がありますからね。
- 河原
- はい。そこで、今回はインフラに
「クラウドサービス」(※20)の利用を検討しました。
具体的には、AWS(※21)を利用しています。
これによって、
何台のサーバーを使おうと決めた時点で、
その日のうちに新しいサーバーが使えるという
とても便利な仕組みが利用できるようになりました。
「クラウドサービス」=仮想サーバーやストレージ、ネットワークなどの計算資源を、必要な時に必要な分だけインターネットを通じて利用できるサービス。
AWS=Amazon Web Services。Amazon.comが提供するウェブサービス。国内外の数多くの企業がこのサービスを利用している。
- 岩田
- 今回の「中継所」のように、
世界中にある10万か所ものアクセスポイントから
どれだけの数のアクセスがあるのか、
事前に予想することのできないサービスをつくるときに
とても向いているのがクラウドにサーバーを用意することなんですね。
そうすれば、状況に応じてサーバーを簡単に増設できますし、
いらなければ簡単に減らすこともできますしね。 - 河原
- そうなんです。
- 岩田
- じつはWii UのMiiverse(※22)も
同じような仕組みでつくられていますし、
世の中の大規模なウェブサービスのサーバー構成は
どんどんクラウド化しつつあるんですよね。
class=”interview__note”>
Miiverse=Miiを通じて世界中の人たちがつながる、Wii Uにシステムレベルで統合された、ゲームをもっと楽しむためのネットワークサービス。好きなゲームソフトの広場で感想を述べあったり、手描きの絵やコメントを書き込んだりしながら交流できる。
- 山崎
- はい。やっぱり、これほどの短期間で
このようなサービスをはじめるには、
クラウド抜きでは考えられませんでした。
それと、もうひとつ理由がありまして、
今回はレスポンスを早める必要が求められました。
お客さんが「中継所」にやってきたとき、
その人のデータを受け取って、
別の人のデータをお渡ししないといけませんので・・・。 - 岩田
- もたもたしていると、
お客さんはどこかに行ってしまいますよね。 - 山崎
- そうなんです。そこで、開発時には
アメリカ向けのサーバーはアメリカに置く、
みたいに、それぞれのエリア内に
サーバーを置くことも検討をしていました。
評価の結果、最終的には1か所に集約したのですが、
こういったことも柔軟に対応できるところなどは、
AWSというサービスが向いていたと思います。 - 岩田
- ちなみに、「中継所」で
「すれちがい通信」が完了するまで
どのくらいの時間がかかるんですか? - 紺野
- これは、個人的に測ったデータなんですけど、
速いところだと2、30秒、
時間がかかっても1分程度です。
- 井上
- 通信環境によって変わりますが、
接続するまでの時間がけっこうかかるので
体感としてはそれぐらいだと思います。
サーバー側の処理としてはほとんど1秒未満です。 - 河原
- あの・・・サービスを早く開始するために
取り入れたことがいくつかあるんですが、
まだよろしいですか? - 岩田
- はい、どうぞ。
- 河原
- 社内には、
オープンソースソフトウェアを積極的に活用している
サーバー開発者のチームがいくつかありまして、
わたしたちもそのひとつなのですが、
今回もたくさんのオープンソースソフトウェアを使用しています。 - 岩田
- オープンソースソフトウェアというのは、
インターネットの上に設計情報やプログラムが公開されていて、
それは誰でも使用できる、オープンなものなので、
世界中のプログラマーの方たちによって
磨き上げられていくソフトのことですね。
代表的なものでは、OSのLinux(※23)が有名ですけど。
Linux=フィンランドの大学生によって開発されたOS。その後、フリーウェアとして公開され、さまざまな開発者によって改良が重ねられている。
- 河原
- そうですね。
そのオープンソースソフトウェアで
今回はHBase(※24)というプロダクトを、
データベースとして採用しました。
HBaseは書き込み性能が高く、
サーバー台数を増やすことで、
システムの性能を高めることも得意なんです。
ひんぱんにデータの書き込みが発生して、かつ負荷状況に応じて
柔軟にインフラの性能を上げていく必要がある
今回のようなケースに向いていると考えました。
別のプロジェクトで昨年末ぐらいから試験的に運用していて、
少しずつノウハウもたまってきたところでした。
class=”interview__note”>
HBase=アメリカのオープンソースソフトウェアを支援する財団によって開発されたプロダクト。FacebookやLINEなどの、大手SNSの会社でも利用されている。
- 岩田
- オープンソースソフトウェアですから、
任天堂以外の一般のウェブ企業のみなさんも
使っている仕組みですよね。 - 河原
- そうです。
それにPuppet(※25)という
オープンソースソフトウェアも利用しています。
これはサーバーの構成管理ソフトウェアなんですけど、
じつは3年前からこのプロダクトを使っていまして、
新規にプロジェクトを立ち上げるときには
既存の構成設定を再利用できるようにしています。
class=”interview__note”>
Puppet=システム管理を自動化するための構成管理ツール。Rubyというプログラミング言語で実装されている。
- 岩田
- 大規模なネットワークサービスをはじめるには、
まず、複数のサーバーを連携させる必要があるんですが、
その構成を管理するだけでも大仕事になりますから、
専用のソフトを使って管理するわけですね。
いつ、新しいプロジェクトがはじまってもいいように
早めに準備をしていたんですね。 - 河原
- はい。
なので、今回のプロジェクトがスタートしてから、
3か月ほどでリリースできたのは、
前もってPuppetを取り入れていたからだと思います。
それから同じくオープンソースソフトウェアで、
fluentd(※26)と呼ばれるシステムも
今回は採用しました。
これは、サーバーにたまっていくさまざまなログを、
リアルタイムに収集したり整形したりして、
解析をしやすくするための仕組みです。
fluentd=ログ収集基盤ソフトウェア。Rubyで実装されている。ログの保存や大規模データの解析基盤と一緒に利用されることが多い。
- 岩田
- そのfluentdを使うことで、
どのようなお客さんが、どれくらいの数、
どのアクセスポイントですれちがっているか、
といったことが、瞬時にわかるんですね? - 河原
- そうです。
これによって、1分くらいのタイムラグで
すべての状況がわかるようになりました。
あと、もうひとつだけ・・・。 - 岩田
- はい、どうぞ(笑)。
- 河原
- われわれのチームはRuby(※27)を
得意とするメンバーが多いのですが、
今回のシステムでもさまざまな箇所で
Rubyを利用しています。
Ruby=ストレスなくプログラミングすることを目的に開発されたプログラミング言語のひとつ。
- 岩田
- Rubyというのは、まつもとゆきひろさんという
日本の方が開発した有名なプログラミング言語ですね。 - 河原
- はい。
Java(※28)やPerl(※29)のように
別の言語を使っているチームもあるんですが、
今回はできるだけ早く
サービスを開始する必要がありましたので、
自分たちの得意な軽量言語であるRubyを採用しました。
Java=プログラミング言語のひとつで、ユーティリティー、ゲーム、ビジネスアプリケーションなど、さまざまな分野で利用されている。
Perl=プログラミング言語のひとつで、ウェブアプリケーションやシステム管理、テキスト処理などに利用されることが多い。
- 岩田
- そもそも任天堂という会社では、
ゲームをつくっている人がたくさんいるということは
世間的にもよく知られているんですけど、
サーバーのシステムを構築したり、
管理・運営するような仕事は
外部の会社の人にお願いしているだけで、
社内では誰もやっていないんじゃないか、と
そう思っておられる方も多いようなんです。
でも、じつはそうじゃないんですよね。 - 山崎
- はい。
ネットワーク開発運用部だけでも100人を超えていて、
そのほとんどがエンジニアです。
クライアント側のエンジニアもいますので、
すべてがサーバーエンジニアというわけではないですが。 - 岩田
- ですから、転職してきた人が、
「こんなことも社内でやってたんですか!?」
と驚くようなことが、けっこうあると聞いています。
- 紺野
- それにしても、DSの時代と比べると
隔世の感がありますね。すごく進化したというか。
DSの時はDS実機が「中継所」だったのに(笑)。 - 岩田
- 山崎さんたちが手作業で
コインロッカーに入れていたくらいですからね(笑)。 - 一同
- (笑)
- 岩田
- でも今回は、もともとお店にある
「ニンテンドーゾーン」の仕組みを利用して、
サーバーと3DS本体のソフトだけを変えて(※30)、
実現できるようにするというのを目標にして
個々のアクセスポイントをそのまま使えるようにしましたから、
サービス開始まで、とても早くできたわけですね。
class=”interview__note”>
3DS本体のソフトだけを変えて=「すれちがい通信中継所」を利用できるのは、システムバージョンが「6.2.0-0J」以上のニンテンドー3DS。本体のバージョンがそれ以前の場合は、本体更新が必要となる。
- 河原
- そうですね。
- 紺野
- じつは・・・
今回のプロジェクトをはじめるにあたって、
わたしのプランとしては、2案あったんです。
既存のアクセスポイントを使ってやる方法と、
DSの当時やった、物理的に設置する方法なんですけど、
「どっちが現実的ですか?」と
最初に聞いてみたんです。 - 岩田
- 後者は「ありえません」と言われたんでしょう?(笑)
- 紺野
- はい。言われました(笑)。
- 山崎
- 「かんべんしてください」と言いました。
コインロッカーに入れてまわるのでは、
とても世界中には展開できないですから(笑)。 - 一同
- (笑)