ネットの世界は時間の流れが速く,つい先日までその違法性が取りざたされていた"コンプガチャ"の話題もすっかり耳にしなくなった昨今。とはいえ,世間一般のソーシャルゲーム業界を見る目は決してやさしいものばかりではありません。一度ついてしまった悪い評判はなかなか払拭しづらいもの。それを振り払って,ソーシャルゲームを本当に"日本を代表する産業"に育てたいのであれば,中の人たちが地道に努力を重ね,社会からの信頼を得るしかありません。なかなかきびしく,遠い道のりのように思えますが,しかし希望はあります。ふだんまったくソーシャルゲームをやらない筆者ですが,この『Mobageを支える技術 ~ソーシャルゲームの舞台裏~』を一読した限り,ソシャゲが日本のIT産業を大きく変える可能性はまだ多分に残されているのでは,と感じました。
周知の通り,ソーシャルゲームの市場は急速に大きく成長しました。とくに二大プラットフォームと呼ばれるGREEとMobageの伸びは著しく,いまや世界が注目するソーシャルブランドとなりました。この2社がなぜ図抜けた存在となることができたのか,理由を挙げればキリがありませんが,プラットフォームとなるインフラ基盤がしっかりしていること,そしてそれを支える高いスキルをもった技術者を数多く採用したこと,この2つを避けては語れないでしょう。
本書はタイトルがあらわす通り,まさにMobageを支えるDeNAのトップクラスの技術者たちが,この巨大システムを動かすためにどんな技術を使っているのか,開発と運用の両面に渡って詳細に解説しています。まえがきに「技術領域について網羅的に,また可能な限り踏み込んで書きました」とありますが,出し惜しみすることなく,数多くのノウハウを公開している姿勢は本当にすばらしいと思います。
本書は全13章が大きく4つのパートに分かれて構成されています。
- Part1 ソーシャルゲーム開発技術
- Part2 ソーシャルゲーム運用技術
- Part3 ソーシャルゲーム効率化技術
- Part4 ソーシャルゲーム分析技術
Part1のソーシャルゲーム開発技術では,主にMobageが現在注力しているモバイルデバイス(フィーチャーフォン/スマートフォン)のゲーム開発について解説されています。驚いたのは,Mobageが意外なほどフィーチャーフォンでのゲーム開発にこだわっている点です。スマホの普及が急速に進む中にあって,昨年9月,DeNAは新規にスマホ向けのブラウザゲームをローンチしないということをあえて選びました。
その理由は本書にもありますが,フィーチャーフォンを古い技術として切り捨てるには,あまりにも国内ではシェアが高すぎることによるものです。したがって本書でもフィーチャーフォン対応のゲーム開発テクニックの解説にそれなりのページ数を割いています。個人的には,たとえばFlashLiteのような先が見えている技術の解説をここまで丁寧にする必要があるのか,少々疑問に感じましたが,逆に言えば,そういったところにDeNA/Mobageの哲学を垣間見ることができます。
また,DeNAの子会社が開発するJavaScriptベースのゲームエンジン「ngCore」を使ったスマホ用ネイティブアプリケーション開発の解説は,モバイルフレームワークに興味ある開発者には一読の価値があります。ngCoreの資料はネット上にもいくつかありますが,このようにまとまった形で読めるものは少ないのではないでしょうか。
Part2はMobageのインフラ周辺技術についての解説です。超巨大システムといえども,CentOS,Apache,MySQL,FastCGIなど,ごく一般的なアーキテクチャをベースにした,Webアプリケーションサーバ+DBサーバというシンプルな2層構造が基本であることに驚かされます。インフラをシンプルにしている理由は「リソース効率を上げて速いレスポンスでサービスを提供」するためです。これは本書全体を通して言えることなのですが,なぜその構成を取っているのか,なせそのアーキテクチャを選んでいるのか,その理由が必ず記されています。「なぜ◯◯したのか」と問われたとき,「それは××だから」と根拠を挙げて明確に答えられることは一流と呼ばれる技術者に共通するスキルだと,こういう部分を読みながら強く感じます。
Part2は4つの章から構成されていますが,やはり注目したいのは2章を割いて解説されている,世界屈指の巨大なMySQLシステムにまつわる運用ノウハウです。レプリケーションの活用,スレーブ参照の分散(スレーブにSSDを使うなど!),レプリケーション遅延の防止,高性能化,NoSQLとして使うMySQL,シャーディングによるマスター分割など,興味深いトピックが並びます。なおMySQLに関する章を執筆しているのは,すでにDeNAを退職し,現在はFacebookで活躍されている松信嘉範氏です。
Part3は,大規模プラットフォームだからこそ求められるアプリケーション設計のポイントや大量のAPIリクエストを処理するミドルウェア(MySQL,Q4M,memcached)を使うノウハウがアーキテクチャごとに詳細に解説されています。とくにmemcachedによるアプリケーションチューニングの部分は,豊富なコードと図版でもって,大規模環境下で高速性を実現する仕組みをわかりやすく紹介しています。また,最近よく聞かれる用語である「DevOps」についても1章を割いて解説しており,こうした新しい運用スキルを取り込む際の参考になるでしょう。
Part4はデータマイニングの実例をあげて解説しています。本書で唯一残念だったのがこのPart4です。とはいっても,解説内容に問題があるのではなく,データマイニングを1つの重要なパートとして前面に押し出している割には,1章だけで構成するなど,編集が雑な感じにまとめている印象を否めなかったからです。他のパートが4章で構成されていることもありボリューム不足をどうしても感じてしまいます。データ分析の重要性に関してもあまり触れられていません。書籍の後半部分であるため,他の章と分量の調整をつけるのが難しかったのか,それとも出版スケジュールに問題があったのか,理由はわかりませんが,明らかに書籍としてのバランスを悪くしています。最終章であるにもかかわらず,その終わり方も唐突すぎて,読者としては多少違和感を覚えます。Hadoop上で動作する大規模データライブラリ「Mashout」を使ったクラスタリングの解説が丁寧に書かれているだけに,非常に残念です。たとえばビッグデータ時代におけるデータマイニングの重要性の詳細,Mobageが実際に分析の指標としている項目,収益向上を図るための分析モデルの一例,分析のルール化や自動化のノウハウといった内容があれば,書籍全体がさらに充実したのではと思います。
本書を読んだ最初の感想は「Mobageは意外にカタい」というものでした。ソーシャルゲームベンダというと,クラウドやNoSQL,HTML5といったトレンドを積極的に取り入れ,アジャイルなスタイルでさくさく開発しているイメージがあったのですが,Mobageの場合,規模こそ大きいものの,どちらかと言うと新技術の採用にはかなり慎重を期しているようです。それはたとえば
これらのことから,少し未来のデバイス普及に伴う市場環境変化をにらんで,注力すべき分野,古い技術を切り捨てる時期を見定める必要があると考えます。(p.32)
Mobageでも,ユーザDB以外では,NoSQL型のアプローチを切実に必要とするケースは多くありません。(中略)不必要にアーキテクチャを複雑にする必要はありません。(p.142)
といった記述からも伺えます。先ほど名前を挙げた松信氏の執筆部分で「一般的にDB層で重要視される指標として性能と安定性がありますが,Mobageではまず安定性を最重視していて,その次に性能を重視しています」(p.105)という下りがありますが,これはデータベースだけではなく,Mobageというプラットフォーム全体に当てはまる理念のように感じます。ゲームを楽しむユーザに対して,ぜったいに落ちない環境を提供し,その上で速くする - その軸がぶれていないからこそ,結果としてMySQLやFastCGIなどの枯れたアーキテクチャを選択しているように思えました。かといって新しい技術を敬遠しているわけではなく,”落ちない”ことを最優先させながら,余力を使って新技術の検証を重ね,少しずつ本番環境に適用していく。このあたりが新興のソーシャルアプリケーションベンダ,たとえばAWSの大口ユーザで,Amazon Dynamoをリリース直後に採用して大規模なゲームを展開しているgumiなどとは方向性がかなり異なる感じがして,なかなか興味深いところです。
先にも書きましたが,本書の魅力は大規模分散環境における開発や運用のリアルなテクニックを学べることはもちろん,本書を執筆したトップクラスの「DeNAエンジニア陣の魂のこもった」(p.357)哲学に触れられる点にあります。とくに若手のエンジニアには,各章を担当した執筆者の,それそれの技術に対する強い思いがにじむ文章からさまざまなことを学べるのではないかと思います。
Mobageのシステムも未だ発展途上にあり,時代とともにつねに変化しています。また,ソーシャルゲームプラットフォームは非常に手間がかかるものであり,毎日何かを書き換えなくてはならないシステムです。完成形は決して生まれないからこそ,ブラッシュアップが続けられ,そこで新しい技術が生まれてくる。最近では同社の著名プログラマである奥一穂氏が開発した言語「JSX」が話題になりましたが,DeNAにはなぜこうした技術が生まれる下地があるのか,その理由の一端が本書を読めば見えてくるような気がします。これだけすぐれたスキルをもつ技術者が揃っているMabageであれば,冒頭にも掲げたように,日本のIT産業を新しくリードするようなサービスを生み出す力は十分にある,そんな期待を抱かせてくれる一冊です。