コメントの表示と投稿は外せなかった
── iPhone版アプリの開発についてお聞かせ下さい。いつぐらいから開発を始められたんですか?
溝口氏:スタートしたのは2008年の11月からです。それまでは、どうやって再生すればいいのかという下調べをやっていました。以前よりMacは持っていましたが、iPhoneのソフト開発は今回が初めてだったんですよ。
── そうするとかなり苦労されたのではないでしょうか?
溝口氏:そうですね……。まずiPhoneでどうやってニコニコ動画を再生するかという点で悩みました。
iPhoneにはアップル標準の動画プレーヤーも用意されていて、APIで呼び出せるんですが、これは基本、動画を再生することしかできないんですよ。標準のプレーヤーでニコニコ動画を再生するという試作もやったけど、もっと機能が必要だった。だからプレーヤーを新しく作ることになりました。
── 最初から「この機能は絶対に入れよう」というコンセプトはあったんですか?
齋藤P氏:コメント表示は必須でした。単純に動画を見れるだけでは、ニコニコ動画としてはダメだろうと。
溝口氏:そして、コメントの入力も必要でしたね。
齋藤P氏:コメントで非同期コミュニケーションできると言うのが、ニコニコ動画のレゾンデートル(存在意義)なので、やっぱりコメント入力は実装したかった。将来的にニーズが高まれば、iPhoneの標準機能を使った再生機能のみのプレーヤーを作るかもしれませんが、でもそれは出してみたあとの話ですよね。今回はニコニコ動画の根っこの部分をiPhoneでサポートしようと作っています。
映像とコメントの同期に苦労した
── 開発時、何に苦労されましたか?
溝口氏:再生することと、画像/音声/コメントの同期ですね。
今回、iPhone用アプリには、ケータイ電話向けの「ニコニコ動画モバイル」を利用しようという話になりました。ただ、ニコニコ動画モバイルは、ケータイ用のアプリなのでJavaで開発していて、そのまま移植してもiPhone上では安定して動かなかった。だから、いろいろな内部的な処理を入れてiPhoneでもちゃんと見られるようにしています。
── 安定しないというのは……。
溝口氏:フレームレートが低いんです。ニコニコ動画モバイルでは可変フレームレートを採用していて、再生中、利用できる帯域幅によってフレームレートを動的に変えているんです。それをそのまま実装しても動かなかったため、iPhoneではまた違ったアプローチをしています。
齋藤P氏::iPhoneでは何秒からどの映像と音声を再生するかという時間の管理が難しいんです。本当はFlashプレーヤーを搭載してくれるといいんですけどね。
溝口氏:実はコメント表示のほうが苦労しています。iPhoneは一度作ったデータを再度出すのは速いんですが、最初に表示するのにレンダリング時間がかかる傾向があります。
── 確かに「Safari」や「Mail」でも何か指示してから結果が表示されるまで、少し遅いと感じるときがあります。再表示は速いのに。
溝口氏:そしてニコ動では、コメントという膨大な文字をレンダリングしなければならない。動画のコメント数は動画の長さによって上限が異なりますが、例えば500件だったら、それをすべて読み込んで、レンダリングする必要があります。どう表示させるか、そこは苦労しました。最終的に、動画の再生を指示してデータを読み込んでいるときにコメントデータを全部準備し、同期を取って動画にかぶせるようにしています。
── 動画のデータを読み込んで、コメントを生成して、時間の同期を取りつつ、再生するという……。ニコニコ動画がiPhoneという小さな端末で、そうした操作を実現できるのは結構すごいことだと思うんですが、どうなんでしょう?
齋藤P氏:実は国内のケータイ端末のほうがフレームレートが高かったりすることもあります。
── その理由はなぜですか?
溝口氏:iPhoneもスペック的に十分なんですが、アップルがもう少しAPIを公開してくれれば、パフォーマンスを上げられるかと……。
── そういえばニコニコ動画ではFLASHやH.264など、動画のファイル形式が混在していますよね。それらはすべてiPhone版アプリでも再生できますか?
溝口氏:いったんニコニコ動画モバイル形式に変換しているため、特に問題ないです。
齋藤P氏:ニコニコ動画モバイルでは、動画をいったんモーションJPEGに変換しているんですよ。パラパラ漫画のように、送られてきた画像を連続で再生するという感じです。MPEG-2のようにフレーム間圧縮などもしていません。