ガジェット通信

見たことのないものを見に行こう

Cocos2d-xチューニング、マルチデバイス対応…任天堂エンジニアに聞いた「Miitomo」開発の裏側

DATE:
  • ガジェット通信を≫

自分の分身が友達とコミュニケーションするアプリ「Miitomo」

「Miitomo(ミートモ)」。RPGでもなく、アクションゲームでもない、独自のコミュニケーションツールだ。

「任天堂というとゲームというイメージがありますが、私たちはMiitomoをあえてコミュニケーションアプリと位置付けています。似顔絵キャラクターであるMiiとの対話を通して、スマートデバイスならではの独特な体験をユーザーに提供しようと思いました。一方で、最近はSNSでのユーザー同士のコミュニケーションに気疲れする人もいるといわれていますが、Miitomoは気疲れするほどヘビーではなく、もっとゆるくつながろうというのがコンセプトです」と語るのは、このアプリを開発した任天堂企画制作部の吉原一期氏だ。

任天堂株式会社 企画制作本部企画制作部 スマートデバイスプロダクショングループ 吉原一期氏
2003年任天堂入社。入社動機は「世界に向けたものづくりができる」こと。入社早々「テトリスDS」のメインプログラムを担当。その後は、外部協力企業と協業してゲームソフトを作ることが多かった。

部屋の中を歩き回るキャラクターは自分の分身。それが発するのは「ワタシが今、一番欲しい能力って何でしたっけ?」といった質問。他人に聞かれるより、身内感覚なので答えやすい。もちろんソーシャルアプリではあるので、他のユーザーをフレンドとして登録すれば、次第にコミュニケーションが広がっていく。

SNS疲れをしないソーシャルアプリ──。実際、このアプリのプロデューサー、坂本賀勇氏(企画制作部統括)はSNSをあまりしない人だという。

坂本氏は糸井重里氏との対談で、MiitomoをニンテンドーDS用のソフト「トモダチコレクション」の流れを汲むものと発言しているが、これである程度、Miitomoの世界観を理解できるユーザーも多いことだろう。

スマホ上で任天堂の存在感を高める役割も

Miitomoのリリースに合わせ、これまでゲーム機に紐付いていた「クラブニンテンドー」という会員サービスに替わり、新しい会員サービス「My Nintendo」もスタートした。

「スマートデバイス上で任天堂の存在感を示す役目も持っています」と吉原氏が言うように、Miitomoは任天堂がコンシューマゲーム機のIP資産を活かし、その文化と接続しながら、スマートデバイス上で何を展開するかを示すアプリでもあるのだ。

Miitomoの開発に先立ち、任天堂は2015年3月にDeNAと業務・資本提携を行った。ソーシャルゲームの有力企業の一社であるDeNAとの協業はゲーム業界でも高い関心をもって受け止められた。その提携後の第一弾アプリという意味でも、Miitomoは注目なのだ。

「実際はサーバーサイドをDeNAさん、クライアントサイドを任天堂が担うという分担で開発を進めています。両社の開発者たちは密にコミュニケーションをとりながら、共同でアイデアを練り上げていきました」(吉原氏)

吉原氏にはアプリの仕様をまとめるほか、協力会社との協業をスムーズに進める役割もあったという。

「Cocos2d-x」をチューニングしながら、マルチデバイスに対応

単なるスマホアプリの一つというよりは、スマートデバイスにおける任天堂の存在感を示す役割も担うMiitomo。それだけに開発者にとってはプレッシャーがかかる。「楽しみながら開発しました。でもプレッシャーがなかったと言ったらウソになりますね」と告白するのは、リードエンジニアの大西直徳氏だ。

任天堂株式会社 企画制作本部企画制作部 第7プロダクショングループ 大西直徳氏
大学は建築学科でプログラミングは独学。「自分が没入できる密度感の高いゲームを作る会社」として任天堂を志望し2005年入社。DS「ゼルダの伝説 夢幻の砂時計」、DSiの本体内蔵カメラアプリ、3DS「東北大学加齢医学研究所 川島隆太教授監修 ものすごく脳を鍛える5分間の鬼トレーニング」などを開発。

それまで、DSの「ゼルダの伝説」や、3DSのゲーム、DSiの内蔵の写真アプリなどを手がけてきたが、スマホアプリの開発を命じられたのは2年前のこと。DeNAとの協業が話題になるよりずっと前の話だ。

「ニュースアプリのようなユーティリティなのか、ゲームアプリなのか、最初はそれさえも決まっていませんでした」

大西氏のゲーム開発の経験は長いが、スマホアプリを手がけるのは初めて。これまでの任天堂のアプリは、それぞれのコンシューマ機が持つチップセットに対してコードを書き、それに特化したチューニングを施せばよかったが、スマートデバイスではそうした最適化ができない。

「どんなデバイスにも対応できるように書かなくてはならないというのは、一つの制約でありチャレンジでした」と大西氏は振り返る。

Miitomoの開発では、オープンソースのゲーム開発用フレームワーク「Cocos2d-x」を積極的に活用している。C++でソースコードを書けば、iOSやAndroidなど複数のプラットフォームのアプリを作ることができる。

「共通するコードが動く部分については、移植性は高いと思うが、Cocos2d-x自体、頻繁に変更が入るためさまざまな不具合もあり、Miitomoを動かそうとするとスピードが足りないところもありました。そういう部分については、Cocos2d-x自体に手を入れてチューニングしていきました」

大西氏には、もともとCocos2d-xの使用体験がなかった。しかしCocos2d-xはオープンソースなので、内部のコードを読むことはできる。フレームワークの内部構造を読み解きながら、その環境に一歩ずつ慣れていったという。

コードの書き方を工夫して、Cocos2d-xの制約を突破する試みも行った。

「Miitomoのメインのコードは社内的には珍しくC++11で書きました。C++11ではラムダ関数が定義できます。Cocos2d-xは基本的にシングルスレッドでしか動かない想定で作られているんですが、このラムダ関数をうまく使えば、マルチスレッドの処理が簡潔に書けるようになることに気づきました」

隣に吹き出しのようなコメントがリストアップされる画面だ。

「メインスレッドとは別のところでMiiを生成しないと、スクロール画面がカクカクとしてしまって気持ちが悪い。ただ、マルチスレッドの処理がCocos2d-xだとやりにくい。そこで、クリティカルな部分をラムダで包んであげると、そこだけメインスレッドで実行され、ラムダを抜けるとサブスレッドで処理が続行されるような仕組みを実装したんですよ。

こうすることで、シングルスレッドを想定したコードも少し変更するだけでマルチスレッド対応できるので、C++11とCocos2d-xの面白い使い方ができたと自負しています。ただ、ちょっとトリッキーなところもあるので、その処理スキームは外からは見えないようにしつつ、共通のライブラリーのような形で提供し、他のメンバーは無意識に使えるようにしました」

スマホアプリは“初心者”ではあるものの、こうした処理をサクッと実装してしまうあたりは、さすがコンシューマゲームで豊富なプログラミング経験があるからだろう。

もちろん、スマホアプリの開発のサイクルやスタイルは、コンシューマゲームとは大きく異なる。

「スマートデバイス用のアプリはリリースして終わりではなく、ここからがスタートです。何万本売れたかではなく、機能追加や改良の結果が、ご利用されている使用データとして開発者にバンバン届きます。それを受けて、頻繁にバージョンアップを重ねる。こんなふうに数字が見えるというのは私達にとっては新鮮な経験でした」

高質感グラフィックスとスピードをいかに両立させるか

いわゆるアバター系のキャラクターとはいえ「Mii」のグラフィックはきわめて精緻にできている。その豊かな表情もさることながら、室内の金属やプラスチックの質感まで細部にこだわりを感じる。それでいて動きも実にスムーズだ。高質感の3Dグラフィックスとスピードを両立させるのは、かなり苦労したという。

「一般的なスマートデバイスのプリインストールアプリは1秒間に60フレームで動くので、私たちもそれを目指しました。これが30フレームだと、どうしてもユーザーが違和感を持ってしまう。とはいえ、ボトルネックになるのは3Dグラフィックスの質感。グラフィックスで勝負するアプリではないとはいえ、任天堂のデザイナーならではのこだわりもある。Shaderをがんがんチューニングして、なんとか精度を出せたのではないかと思います」と大西氏。

「コンシューマ機ゲームでは制限の範囲で最大のクオリティを求めるのですが、スマートデバイス用のアプリではデータサイズも大きな課題になる。データサイズについては日本ではともかく、回線スピードの遅い国で使うとどうかというのは、これからの課題ですね」と、吉原氏は言う。

Miitomoはまず日本で2週間先行リリースした後、すぐに世界15カ国でリリースされた。グローバル展開がスムーズにできたのは、やはり、常に海外市場を意識している任天堂ならではであろう。

「当社では、ゲームソフト制作において、海外向けのカルチャライズを長年してきました。ただ、課金にかかわる法律や通信環境は各国ごとに違います。また、ユーザーが入力した文章の言葉に応じて込められた感情を自動的に分析し、MiiにアクションをさせるというのがMiitomoの重要な機能と考えていますが、それを各言語で行えるようにするのは、とても苦労しました」(吉原氏)

フレキシブルなチームワークが生み出すMiitomoのこれから

Miitomoは今後どのように発展していくのだろうか。
アプリ起動が少し遅いんじゃないか。キーボード入力と文字表示ではなく、音声だけでキャラクターと会話できれば面白い。Miitomoユーザー同士がすれ違うだけで友達になれるような機能はどうだろうか。もっとゲーム要素を増やしてもいいのではないか……

そんなアプリに対する要望が、ユーザーから出てこないのか聞いてみた。

「アプリ起動のスピードではサーバーとの通信がボトルネックになります。最初のリリースではデータの不整合を避けるため、通信が完了してからアプリを起動するという処理だったのですが、その後はユーザーの要望に対応して、通信完了する前に起動してもデータの安全性が保てるように処理を変えるなど、努力をしています。すれちがいでも友達になれる機能については、やはり任天堂のアプリ。未成年の方も使うので社会的な意味での安全性も大切。実装するとしてもかなり慎重な姿勢でのぞんでいくと思います」

大西氏の答えの中に、任天堂の開発力と企業ポリシーの一端がかいま見えて興味深かった。

任天堂は多数の開発者を擁する大企業だ。それだけに開発組織内のフレキシビリティが気になるところ。
「Miitomoでは特にアジャイルなどのソフトウェア開発手法を導入しているわけではないんですが、チーム内のスピード感はあると思います。誰かが面白いと思ったら、まずは試作してみる。それをみんなでレビューしながら、よければ機能を追加していくという繰り返しです。今回はスマートデバイス向けアプリなのでリリース後のアプリ運営という仕事も加わりましたが、そちらも社内関係者ともうまく協力しながら進めています」と、吉原氏は言う。

Miitomoでスマートデバイス市場への本格参入を果たした任天堂。今後、スマホアプリ開発の経験を持つエンジニアの中途採用を強める。

「スマートデバイスに詳しい人の知見は、私たちも求めています。それに加え、世界に向けて面白いアプリやゲームを生み出したいという熱い気持ちのある人なら、ますます大歓迎です」と、吉原氏も新たな仲間を求めている。

任天堂の第2弾アプリは今年の秋にリリースされる予定だそうだ。どんなものになるか、ますます注目だ。

(執筆:広重隆樹 撮影:掛川マサヤ)

カテゴリー : デジタル・IT タグ :
CodeIQ MAGAZINEの記事一覧をみる ▶
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。

TOP