ニコニコ動画開発総指揮者が苦難の道を振り返る!

 2013年8月21日~23日、パシフィコ横浜にて開催されている、日本最大のコンピュータエンターテインメント開発者向けカンファレンス“CEDEC 2013”。3日目の2013年8月23日行われたセッション、“ニコニコ動画 配信の裏側”をリポート。

 いまや3000万IDを優に超え、国内最大級の動画配信サービスとなったニコニコ動画。これだけ巨大なサービスに成長する過程では、さまざまな困難があり、それを解消するための試行錯誤があったことは想像に難くない。
 というわけで、このセッションでは、おもに初期(2007年3月~2010年1月)の事例を中心に、ニコニコ動画における負荷分散メカニズムの試行錯誤の歴史が語られた。

 講演を行ったのは、ドワンゴの戀塚昭彦氏。戀塚氏は、1999年よりドワンゴに所属、在宅勤務で開発業務を手がけるようになり、2006年のニコニコ動画立ち上げより、ニコニコ動画開発総指揮者として、動画配信制御やコメントサーバーの調整を行っている人物。自己紹介の中では、“PCと言えばPC-9801シリーズ”だったころには、“Bio_100%”と言うグループでゲーム制作を行っていたというエピソードも明かされていたが、“システムエンジニア”というお堅いイメージの中にも、エンターテインメントを愛する人柄がうかがえる。

“○○さん誕生祭”や“『○○』二次会会場”が落ちないワケ――ニコニコ動画のエンジニアが語る配信の裏側【CEDEC 2013】_01
“○○さん誕生祭”や“『○○』二次会会場”が落ちないワケ――ニコニコ動画のエンジニアが語る配信の裏側【CEDEC 2013】_02

懐かしきニコニコの歴史、その裏側では……

 講演は、ニコニコ動画立ち上げ時から、時系列を追って進められた。ニコニコ動画を初期から利用している人は、懐かしく思い出しながら読み進めてほしい。

 ニコニコ動画の原型は、2006年12月13日にオープンした“ニコニコ動画(仮)”だ。この時点では、外部の動画配信サービスの動画にコメントを重ねる形のサービスとなっており、ログインも不要。いまのニコニコ動画とは大きく異なるものだった。
 この“ニコニコ動画(仮)”は、DDoS攻撃を受けたこと、外部動画配信サービスからアクセス制限がかけられた(と思われる)こと、などから、いったんサービスを停止。大幅な見直しを行い、自前の動画配信システムをベースにした新たなサービスを開発することとなる。

 そして2007年3月6日より、新たなシステムで再オープンする。今度は、動画配信を担う“SMILE VIDEO”を開発。“SMILE VIDEO”が動画投稿・保持、動画配信機能を担い、ニコニコ動画側ではアカウント管理、再生ページ表示、検索機能を担当する仕組みとなった(現在ではニコニコ動画とSMILE VIDEOは一体化されており、SMILE VIDEOは終了している)。

“○○さん誕生祭”や“『○○』二次会会場”が落ちないワケ――ニコニコ動画のエンジニアが語る配信の裏側【CEDEC 2013】_03
“○○さん誕生祭”や“『○○』二次会会場”が落ちないワケ――ニコニコ動画のエンジニアが語る配信の裏側【CEDEC 2013】_04

 いよいよここから、本格的なサーバー負荷との戦いが始まるわけだ。

 最初の負荷対策は、ユーザー登録制にすることで、アクセスそのものを絞るという方法。インフラ、サーバー体制からキャパシティを逆算し、先着10万人までにIDを与えてのスタートとなる。
 この時点のシステムは、投稿された動画を保持する“オリジンサーバー”と、動画をキャッシュして配信する9つのサーバーセットで構成されたもので、各配信サーバーセットにユーザーIDを振り分ける形で担当する形となっていたそうだ。
 しかしこの形だと、すべてのサーバーセットがすべての動画を担当することになるため、キャッシュ効率が最悪であることが判明。そこでユーザーID、動画IDをそれぞれ3分割して配信する形に変更することで、負荷を効率よく分散することに成功する。

“○○さん誕生祭”や“『○○』二次会会場”が落ちないワケ――ニコニコ動画のエンジニアが語る配信の裏側【CEDEC 2013】_05
“○○さん誕生祭”や“『○○』二次会会場”が落ちないワケ――ニコニコ動画のエンジニアが語る配信の裏側【CEDEC 2013】_06

 その後、サーバーを増強を進めつつ、負荷が低い昼時間帯のみに限定してユーザーを解放するなどの手法も採りながら、順次ユーザーIDの開放が進められ、スタートから72日目の2007年5月12日には100万ID突破を達成する。

 しかし、インフラコストはうなぎ登りに増すばかり。そこで、スタートから3ヵ月が経った2007年6月18日より、一部有料化を開始することに。これは現在でも継続しているプレミアム会員サービスで、配信回線の高品質化などの付加価値をつける代わりに、月額500円を負担してもらうというものだ。一方で、無料で利用しているユーザーに対しては、負荷の高い時間帯において動画のビットレートを下げるなどして配信コスト削減を図る。これは同時に、プレミアム会員への優遇にもつながる仕組みでもある。ちなみに試算としては、全ユーザーの1割がプレミアム会員になってくれれば、採算が合うバランスになっているとのことだった。

“○○さん誕生祭”や“『○○』二次会会場”が落ちないワケ――ニコニコ動画のエンジニアが語る配信の裏側【CEDEC 2013】_07
“○○さん誕生祭”や“『○○』二次会会場”が落ちないワケ――ニコニコ動画のエンジニアが語る配信の裏側【CEDEC 2013】_09
“○○さん誕生祭”や“『○○』二次会会場”が落ちないワケ――ニコニコ動画のエンジニアが語る配信の裏側【CEDEC 2013】_08

 こうしてユーザー数増加に対応するとともに、より快適に動画を見られるようにするための改善も行われていく。ニコニコ動画の仕組みとして、日々ユーザーが新しい動画を投稿するため、新しい動画の配信を担当しているサーバーの負荷はどんどん増えていく。一方で、古い動画は徐々に視聴数が下がり、削除されるものもあるため、古い動画担当のサーバー負荷は低減していく。そこで、“境界ID”を自動的にゆっくり移動させる仕組みを作ったのだそうだ。境界IDとは、投稿順につけられるIDをもとに、古いサーバーと新しいサーバーのどちらに担当させるかを区切るもの。これにより、新しい動画は快適に見られるようになった。

“○○さん誕生祭”や“『○○』二次会会場”が落ちないワケ――ニコニコ動画のエンジニアが語る配信の裏側【CEDEC 2013】_10

 しかしニコニコ動画の文化として、長期間にわたって人気を維持したり、後から火が点いて一気に人気となる動画も少なくない。単純に新しさだけで振り分けていると、人気動画なのに重くて見にくい、という事態も発生してしまう。
 そこで、2008年6月10日より、リアルタイム再生集計システム“Trendd”を導入する。再生数をリアルタイムでカウントし、毎分のランキングを集計することで、動画の人気を評価。動画を再生する際には、“Trendd”に問い合わせて、人気の動画であれば新しい配信サーバーに振り分ける仕組みを構築した。

ユーザーが主体的に楽しむ文化

 改良はさらに続く。ユーザー数がどんどん増加し、コミュニティが拡大するとともに、凄まじい数の再生リクエストが発生する事態が起きるようになる。その代表例が、2007年6月14日~15日に、24時間にわたって開催された、ユーザー主催のイベント“24時間アイマスTV!”だ。これは『アイドルマスター』のMAD動画などをリレー形式でつなげ、24時間放送するというもの。ニコニコ動画はユーザーが任意の時間に視聴するオンデマンド型のサービスだが、こうしたイベントでは、スケジュールに従って、大量のユーザーが一斉に再生することになる。“24時間アイマスTV!”では、とくに開会時間、閉会時間には、通常配信サーバーでは捌ききれないほどの再生リクエストがあったそうだ。
 そこで、人気動画用のサーバーを用意し、“Trendd”で閾値を超えるものは、すぐに人気動画サーバーに振り分ける仕組みにしたという。

“○○さん誕生祭”や“『○○』二次会会場”が落ちないワケ――ニコニコ動画のエンジニアが語る配信の裏側【CEDEC 2013】_11
“○○さん誕生祭”や“『○○』二次会会場”が落ちないワケ――ニコニコ動画のエンジニアが語る配信の裏側【CEDEC 2013】_12

 こうした、突発的に発生するニーズへの対応例としては、2011年2月に起きた“公式アニメ配信問題”の事例も紹介された。これは、とある人気アニメを公式配信したときのことだが、本放送は午前3時~3時30分まで放送。そして同番組終了と同時の午前3時30分から、ニコニコ動画上での公式配信を行う、という段取りになっていた。
 このときには、テレビで生放送を見終えた人たちが、一斉に公式配信を再生するという“二次会突入負荷”が発生。配信開始と同時に、「見えない!」というコメントが大量に書き込まれる事態となった。
 こうしたケースへの対応として、まず一定時間、動的振り分けを停止し、“二次会会場”となる動画を、最初から人気動画用のサーバーに振り分けるという措置を採る。しかしその効果は微妙で、一斉に発生する再生リクエストには対応できないことが判明する。そこで採った第二の対策が、“こっそりフライング配信する”というもの。本来のスケジュールよりも数分早く公開することで、生放送の終了を待たずに公式配信を見に来る人が配信サーバーのキャッシュをうめてくれるため、オリジンサーバーを守ることができたのだそうだ。

“○○さん誕生祭”や“『○○』二次会会場”が落ちないワケ――ニコニコ動画のエンジニアが語る配信の裏側【CEDEC 2013】_13
“○○さん誕生祭”や“『○○』二次会会場”が落ちないワケ――ニコニコ動画のエンジニアが語る配信の裏側【CEDEC 2013】_14

 まとめとして戀塚氏は、「最初は突貫でとりあえず動かして、そこから必要最低限の工夫を積み重ねていきました。時間に追われながらでしたが、やっているぶんには、スリル満点で楽しいものでした」と振り返った。

“○○さん誕生祭”や“『○○』二次会会場”が落ちないワケ――ニコニコ動画のエンジニアが語る配信の裏側【CEDEC 2013】_15
“○○さん誕生祭”や“『○○』二次会会場”が落ちないワケ――ニコニコ動画のエンジニアが語る配信の裏側【CEDEC 2013】_16

 講演を聞く限り、ある意味、場当たり的とも言える対策を積み重ねて続いてきたようにも思えるニコニコ動画。しかし、逆にそうした対応だったからこそ、大きな支持を受ける存在になったとも言えるのではないだろうか。講演終了後に戀塚氏に聞いたところ、“○○さん誕生祭”などといったユーザー主体のイベントが起こりそうな気配は、つねにリサーチして把握し、対応できる準備をしているのだそうだ。「こちらが用意した範囲内でやってください」ではなく、ユーザーのニーズに応え、ユーザーがやりたいことができ、見たいものが見られるように、随時対応を取っていく姿勢。それが、単なる動画配信サービスではなく、“ユーザーのおもちゃ”として愛されるサービスになった、ニコニコ動画の強みと言えるだろう。