楽天株式会社

Rubyを広範に利用して構築されたグローバルビデオストリーミングサービス 『Rakuten Viki』

2018年7月シンガポールにおいて、まつもとゆきひろ氏を招いて「RubySG Meetup」が開催された。「RubySG Meetup」はシンガポールのRubyコミュニティであるRubySGが定期的に開催しているミートアップだ。

「Matz edition」と題された今回のミートアップでは、まつもと氏による「Ruby after 25 years」という発表とともに、Rakuten VikiのDuong Nguyen氏による「Keeping sane in a large Ruby codebase」という発表が行われた。Rakuten VikiはRubyを広範に利用して構築されたグローバルビデオストリーミングサービスだ。

Rakuten Viki

Rakuten Viki(以下Viki)はビデオストリーミングサービスの一つである。様々な言語の字幕を提供しているのが特長で、現在、160カ国以上に在住する数百万の人々に利用されている。

とりわけ韓国ドラマや中国ドラマを中心とした視聴サービスとして世界中のドラマファンの女性からの支持が厚い。これまで北アメリカ、アジア、ヨーロッパでの利用が盛んだったが、近年ではそれに加えてインドやブラジルでの人気も高まっている。

Rakuten Viki

video + wiki

Vikiと他のストリーミングサービスとの大きな違いにファンコミュニティの存在と、ファンコミュニティによる字幕の提供がある。

Vikiで公開されるコンテンツにはファンであるユーザが集まったファンコミュニティが形成され、Vikiによるグループウェアを利用することができるようになる。メンバーはグループウェアを通じて、字幕を作るためのセンテンスの切り出し、字幕の翻訳や編集、それにともなうファン同士のディスカッション、およびその他各種の管理作業などを行うことができる。字幕は様々な言語で作成できるので、世界中のコミュニティメンバーが手掛けた字幕の数は200言語以上にもおよぶこともある。

多数のユーザの共同作業のもと作成された字幕は、最終的にコンテンツに付加される形で公開される。公開された字幕を読んだユーザがよりよい字幕作りを目指して自らのファンコミュニティへの参加を決めることもあるだろう。

「Viki」はサービスの名前であるが、そのもととなったのは 「video」と「wiki」であり、この二つを組み合わせた造語でもある。Vikiではユーザ自身の手により、コンテンツとファンとの間の言語と文化の垣根を取り払うことが可能である。

(なお、字幕作成に関する作業への参加にはユーザ自身にもメリットがある。ファンコミュニティにおける一定以上の活動が認められれば有資格貢献者(QC; Qualified Contributor)として「Viki Pass」の提供を受けることができ、特定のコンテンツにアクセスできるようになる。)

Vikiコミュニティ

Vikiを支えるRuby

"Ruby is used all over the world. Viki is a big user of it."

「RubySG Meetup」でVikiはこのように紹介された。実際にVikiは様々な形でRubyを活用している。一日あたり数百万人のユーザによるアクセスがあるというメインサイトは、その全体がRuby on Rails(以下Rails)をベースとしたシステムとして実装されている。常時、相応の負荷が発生しているが、Rubyはとてもよくさばいているという。

ユーザが直接触れない領域でもRubyは活躍している。映画やドラマなどのメディアカタログを管理するインターナルアプリケーションや、メディアコンテンツ、字幕、各種のライセンスの管理など、Viki運営のための機能を含む様々なアプリケーション群がRailsベースで開発されたものであり、全体としてVikiのCMSとして統合されている。前述したファンコミュニティのための字幕作成グループウェアもその一部として位置けられるもので、これもまたRailsベースで開発されている。

それ以外にも、メディアコンテンツファイルに関する各種の自動処理のようなクリティカルなサービスでもRubyが利用される。数多く運用されているマイクロサービスについてはRailsだけではなく、やはりRubyのフレームワークであるSinatraなどが用いられることもある。

領域によってはGo言語、Node.js、Swiftなど他のプログラミング言語が用いるケースもあるが、ユーザが直接触れる部分もそうでない部分も、VikiにおいてRubyやRailsが支えている範囲はとても広い。

クールだから、やっていて楽しいから

2010年12月に設立されたVikiは数名のエンジニアからなる小さなチームであった。2013年に楽天グループの一員となるなど、急激な成長を経て、現在ではエンジニアだけでも数十名からなるほどに規模を大きくしてきている。

設立当初のチームでも、現在の幅広いチームでも、Vikiでは変わらずRubyを使い続けている。

たとえば、近年、Vikiにはコンテンツをただ視聴するだけでなく、コンテンツを外国語学習の教材として活用できる「Learning Mode」と呼ばれる機能が追加された。現在のところ、韓国ドラマでの韓国語学習と中国ドラマでの中国語学習に対応している。このLearning Modeは同じ楽天グループである楽天技術研究所によって開発されたものであり、その実装にはRailsが採用されている。

Learning Mode

VikiではなぜRubyを使うのか。それはRubyがクールだからだという。エンジニアの思考スピードを損なわない迅速な開発が実現できる。その上、Rubyは楽しい。

プログラミング言語としての機能面では、拡張性やオープン性などに大きなメリットを見出している。何か足りないものがあったとしても簡単に追加できる。

そうしてシンプルなコードで処理を記述することが可能となるから、コードの可読性や再利用性も優れたものとなる。また、それらの面が大量の機能開発もスムーズに進めていく上での要因ともなる。

みんな大好きでエキサイトしてくれる

また、Rubyにはとても活発で生き生きとしたエンジニアコミュニティが存在するのもメリットと言える。

一つにはRubyそのものの開発者コミュニティが活動的であるということ。セキュリティフィックスなどの保守的なリリースがきちんとされているのはもちろんだが、パフォーマンス改善や既存機能の改善、新しい機能の追加も継続的に行われてきている。そしてVikiでもそれらを随時取り入れていくことができる。

もう一つは、Rubyプログラマーのコミュニティが盛んであるということ。冒頭でも触れたように、Vikiとしてもコミュニティとの交流や活動を広く行っている。Vikiが成長していくにつれエンジニアを増員してきたが、その際にはエンジニアを採用しやすいという実感もあった。実際に続々と加わってくるエンジニアがとてもスムーズにVikiに合流できるというのも、結果的にはメリットの一つだったと言えるだろう。

Vikiに集まったエンジニアたちはみんなRubyが大好きだし、Vikiで思いっきりRubyを使えることにエキサイトしてくれる。これからもVikiはRubyを使い、ユーザには様々な価値を提供していくことだろう。

※本事例に記載の内容は取材日時点(2018年7月)のものであり、現在変更されている可能性があります。