業界動向
「PlayStation Vita Game Conference 2012」レポート:ゲーム機での開発経験のないドワンゴがいかにして「ニコニコ」を作り上げたか
ここでは,ドワンゴの「ニコニコ」の事例を紹介しよう。ニコニコはゲームではなく動画閲覧ツールなのだが,ネットワーク越しのデータ取得や,PSN以外のログインなど,普通のゲームとはまた違った部分でさまざまな問題点があったようだ。
さて,そもそもドワンゴはゲーム会社ではないので,ゲーム機での開発経験はまったく持っていない。こういった会社の場合,プログラム開発自体は外注に出すことが多いのだが,ニコニコについては完全に内製とのことだった。
そもそもなぜ,ドワンゴがPS Vita向けにアプリを作ったのか? 開発を担当したコンシューマーエレクトロニクス事業部の齊藤寛明氏は,マルチプラットフォーム化の一環としながらも,PS Vitaとニコニコ動画は,高い親和性を持つと語る。3GやWi-Fiなどの通信機能を持ち,大画面有機ELディスプレイは動画の視聴に最適であるほか,将来的にはPS Vitaの内蔵カメラやゲームプレイを使った展開などが可能なことを見据えて,PS Vita参入を決めたのだという。
開発に関して最初に語られたのは,技術的ではない部分に関してだった。まずクリアしなければならなかったのは「はたしてPS VitaでPlayStation Network以外のアカウントにログインしていいのか?」という問題である。これは,開発ガイドラインなどに絡んだ問題で,PS Vita用アプリはネットワーク上でのユーザー識別にPSNのIDを使用する必要があるとのことで,PSN以外のサービスとのつなぎ込みができなそうな規約になっているようだ。これについては,SCEと協議の末,PSNのIDとニコニコのIDを関連付けさせるということでOKになったようだ。
実際の運用に関しては,どちらのアカウントかユーザーが混同しないような実装が重要だと齊藤氏は語っていた。PSNには自動的にログインし,ニコニコには明示的なログイン操作を行うなどの配慮をしているとのこと。いずれにしても,このような外部サービスとの連携ではSCEとよく話し合うことが重要なようである。
プログラム開発の部分では,技術的にいくつもの難関があったと齊藤氏は語る。
まず,UIや画面デザインに関するものだ。
●UIコンポーネント
ドワンゴでは,当時すでに携帯電話やスマートフォンなどでの開発実績があったので,最初は,ある程度それらの経験が生かせると踏んでいたようだ。しかし,それらと決定的に違ったのは,携帯電話やスマートフォンは基本的に縦型の画面レイアウトになるのだが,PS Vitaはどう見ても横型の画面レイアウトになることだ。全体的なデザインについては,新しく作成することになったとのこと。
また,UIについても,携帯電話やスマートフォンではUIコンポーネントは標準のものが用意されているのが常で,なんとなればWebブラウザからHTMLの要素などを使っていたそうなのだが,PS Vitaではそういうわけにはいかない。SCEが出しているゲームSDKには,そういったものは含まれていないとのこと。こういったUIは,ゲーム会社であれば各社とも日ごろ使っているものがあるのが普通なのだろうが,ドワンゴはゲーム機の開発自体が初めてなのでUIコンポーネントも持っているはずがない。ということで,UIコンポーネントもゼロから作り上げているとのこと。
「どうせ作るからには高い拡張性と汎用性を持ったものを」,さらにCoolなイメージのPS Vitaにふさわしいもの,かつ,ネットワーク越しにデータを取ってきて並べるといった機能を持つものを目指して開発を開始したという。
ネットワーク経由のデータ取得では,どうしても遅延が発生してしまうのだが,できるだけ快適な操作感を実現するべく,マルチスレッド化によって操作が一時停止するようなことは極力避け,データ待ちが発生するときにはユーザーの操作を優先して行うようにデザインされているとのこと。
作成されたUIコンポーネントでは,すべてがViewとして表現されているという。ViewというのがSDKのライブラリの話か独自コンポーネントの話かよく分からなかったのだが,クリッピング領域を持った画像系コンポーネントという理解でよさそうだ。階層的に扱うことも可能なようで,文字列表示からボタン,ファイルリストなどもViewを組み合わせたViewで表現されているとのこと。
また,タッチ画面を生かしたフリックなどのジェスチャー系操作に対しても工夫がされているようで,いろいろなViewが重なり合った部分でも矛盾しない操作を実現しているという。例えば,動画リスト部分では,単にクリックすると動画再生,上下にフリックするとリストのスクロール,左右にクリックするとニコニコ動画と生放送の切り替えが行われるようになっている。
UIに続いて問題になるのは,ニコニコ動画の名物(?)であるコメント表示機能だ。文字表示そのものを実現する部分が意外と難関でもあったようだ。
●文字列表示
ニコニコ動画に表示される文字列は,内容も量も特定できないほか,文字の色や大きさもさまざまである。最初は普通にラスタライズした文字をポリゴンに貼ってスクロールさせてみたようだが,まったく使い物にならなかったそうである。
ポリゴン表示自体の速度に問題があるわけではない。文字のラスタライズ部分が重いのだ。そこで導入されたのがフォントキャッシュである。
ベジエ曲線などのパラメータによるアウトライン形式のフォントデータは,大きさを問わず輪郭の滑らかな文字を表示できるのが特徴だが,ラスタライズ(フォントデータの状態から実際に表示される画像としてのデータを生成する部分)は少し重い処理となっている。Windowsなどのシステムでも,一度ラスタライズされた文字を画像として保存しておくフォントキャッシュが広く使われている。
作成されたフォントキャッシュでは,最大128×128ドットの大きさの文字を格納できる。面白いのは,データ領域に4分木構造が採用されていることだ。4分の1の領域(64×64ドット)以下の大きさだった場合には,残りの部分を分割して小さい文字用に使用できるようになっている。同様に32×32ドット以下なら64ドット四方のエリアがさらに4分割される。このような格納領域に対し,文字コードや大きさなどをHASHキーとして高速にアクセスできる仕組みを作っているとのこと。文字の種類などは問わず一律の処理が行われているようだ。
ニコニコ動画や生放送では,同じ文字列による弾幕が多いこともあって,フォントキャッシュは絶大な威力を発揮するという。
●動画再生
ただし,ニコニコ動画では,ユーザーがアップロードしたファイルがそのまま送信されることが多いため,動画を再生するにはさまざまな種類のデコーダが必要になることだ。フォーマットもきちんとしたものばかりではない。現状では,どうしても再生できないファイルというものもあるようで,サーバーで再エンコードしなおしたファイルを優先的に配信するようにしているという。また,Flashの動画形式であるFLVについては,sceAvPlayerでは対応できていないので,そういったものも今後はサーバー側で変換して対応していく予定だそうだ。
また,sceAvPlayerでは,IDRフレーム単位でシークを行うのだが,なかにはIDRフレームを持たない動画ファイルもあるようで,そういったファイルではシークができないことになる。H.264ではIDRフレームでシークを行うことは,きわめてまっとうなことであり,IDRファイルがないという状況自体が特殊なことかもしれない。
これに対しては,少し強引な対応を行っており,動画ファイル内のIフレームをIDRフレームに書き換えて対応しているという。Iフレームは静止画フレームであり,IDRフレームはシーク機能用の静止画フレームである。フレーム自体としては似たものだが,後続のフレームにとっては意味が異なるため,単純に変換すると破綻することがありそうなのだが,まあなんとかなっているようで,これはこれで正解なのかもしれない。
さらに,映像と音声の長さが違うファイルなどもあって,そういったものもsceAvPlayerでは再生できなかったのだが,これについてはSCE側がプレイヤーをバージョンアップすることで解決したとのこと。とはいえ,まだまだおかしな動画ファイルはあって,フレームレートが1fpsに満たないような動画やインタレース仕様のファイルには対応できておらず,「無理なものは無理」というのが現状の対応状況のようだ。
●ストリーミング再生
ニコニコ動画に続いて,ニコニコ生放送で行われているストリーミング再生について語られた。こちらは,かなり実現が難しい状況だったようだ。
現状のニコニコ生放送では,PC/Android向けのストリームはRTMP(Real Time Messaging Protocol)で配信されており,PCなどではFlashプレイヤーを使って再生していたのだが,現状のPS VitaにはFlashプレイヤーが存在しない。また,iOS向けにはHLS(HTTP Live Streaming)を使用して配信を行い,iOS側のプレイヤーで再生を行っていた。もちろん,iOS用のプレイヤーなども,PS Vitaでは用意されていない。ローンチタイトルでは,なにかと不自由なことは多いのだ。
なら,こういったプロトコルに対応したストリーミングプレイヤーを作ってしまえばよいのだろうが,それはそう簡単なことではない。
これにはかなり苦労したようだが,フォーマットを細かく検討することで糸口が見えたという。HLS用のストリーミングデータを見てみると,動画自体はH.264であり,これはPS Vita SDKで再生ライブラリが用意されている。音声ストリームはHE-AAC(AAC ver.3),AAC-LC(標準AAC),MP3といった種類がある。PS Vita側でサポートされている音声フォーマットはAAC(AAC-LC?)であり,変換してやれば標準ライブラリで再生ができそうだということで,プレイヤー作成が行われた。
手順としては,HLSで読み込んだデータを順次分割していき,PS Vitaで再生できる形式のファイルに変換してライブラリを使って連続的に再生するという方式でようやく生放送に対応ができたとのこと。
このようにして,ゲーム機開発経験のないドワンゴでもPS Vitaのローンチに間に合わせてツールを提供することができたわけだ。
もちろん,これで終わりではない。今後の展望として,生放送でのタイムシフト機能に対応したり,PS Vitaのカメラから生放送ができるような拡張が予定されているという。
さらにドワンゴは,PS Vita上で動いているゲームをそのまま生放送でゲーム実況ができるようにしたいという野望をいだいているとのこと。これにはゲームソフト側の対応が必須になるので,ドワンゴだけで実現できるものではないこともあり,齊藤氏は会場に集まったPS Vita開発者に「実況対応しませんか」と呼びかけていた。
現状では,スクリーンショット機能すらまともに動かないこともある状況なのだが,ゲーム実況ができるようになれば,これまでにないゲームの楽しみ方も生まれてくるだろう。技術的なハードルもかなり高そうだが,今後の展開に期待してみたいところだ。
「ニコニコ」公式サイト
- 関連タイトル:
ニコニコ
- この記事のURL: