ドワンゴのエンジニア魂

第3回ドワンゴがFPGAを使った開発に乗り出したワケ

自由に設計できる集積回路であり、また仕様変更なども容易なLSIの一つとして注目を集め始めているのがFPGAField-Programmable Gate Arrayです。このFPGAをニコニコ動画などのサービスに応用するプロジェクトに携わる、ドワンゴの宮崎賢一氏と小嶋尚氏にお話を伺いました。

写真1 小嶋尚氏(手前)と宮崎賢一氏(奥)
写真1 小嶋尚氏(手前)と宮崎賢一氏(奥)

FPGAのメリットは圧倒的な効率の良さ

――ドワンゴでFPGAを使った開発を進めていると伺いました。どのようなプロジェクトなのでしょうか。

小嶋:書き換え可能な集積回路であるFPGAを利用した開発を進めていて、その用途の一つとして考えているのが動画のエンコードです。現状は汎用のCPUを使っていますが、汎用CPUでは計算量的に効率が良くないことをFPGAで実現していきたいと思っています。またFPGAはさまざまな用途に使えるので、たとえば現在ホットな機械学習などの分野に応用することも視野に入れています。実際、ドワンゴには機械学習をやっているチームもあるので、そういったところにもFPGAを活用するノウハウを展開し、複合的にFPGAを使っていけるようにしたいですね。

――FPGAを利用することにより、どういったメリットが生まれるのでしょうか。

小嶋:わかりやすく言えば、CPUと比較して効率良く処理できることです。たとえばクロック周波数が3GHzのCPUを使って処理している内容を、FPGAのエンコーダであれば100MHzとか200MHzで処理できます。CPUでソフトウェア的に処理すると、まずメモリからデータを取得してエンコードするという流れになりますが、ハードウェアによる信号処理系の回路は右から左に流れていく間に処理が行われる、つまり無駄なデータの行き来がないので非常に効率が良いというわけです。

――FPGAを使った開発を検討することになったきっかけを教えてください。

小嶋:コーデックがどんどん複雑になっていて、汎用CPUとソフトウェアで処理するのは限界に近づきつつあると感じています。またCPUのクロック周波数も大きく上がらない状況になっていて、より効率的に処理することを考えたときにFPGAという選択肢が浮かびました。

――映像のエンコードに絞れば、すでにハードウェアエンコーダは既製品も存在していると思いますが、それを使うという判断にはならなかったのでしょうか。

小嶋:既存のハードウェアエンコーダは、私たちのサービスの特殊性にマッチしていない部分があります。市販されているチップの多くはテレビ放送用であり、放送局のニーズに合わせて開発されているため、インターネット上で多数の映像を配信するという我々のサービスが求めるものと異なるんですね。さらに、オリジナルの工夫を盛り込みたいと考えても反映しづらく、自分たちで作ることにしました。それによってサービスに密接に結び付いたチップを作り込める点がメリットだととらえています。

インフラコストの大幅削減も可能に

――現状のプロジェクトはどの程度進んでいるのでしょうか。

小嶋:最初のプロトタイプは8割程度完成しています。ただ、あくまでもプロトタイプなので、実際の運用までにはそれなりのハードルがあると思っています。実環境でいつ使い始めるかは何とも言いにくいところですが、もうしばらく時間がかかるというのが正直なところです。

――FPGAを利用することで、具体的にどのようなメリットが生まれるのでしょうか。
写真2 宮崎賢一氏
写真2 宮崎賢一氏

宮崎:FPGAによって処理を効率化することができれば、サーバの台数を削減することが可能になり、それに伴って電力コストも抑えられます。コストを削減できれば、その余剰分をサービス開発やサービスそのものに費やせるので、たとえばユーザーの方々にもっと高画質・高ビットレートの映像を配信するといったことが可能になります。

――実際にどの程度サーバ台数を減らせそうですか。
写真3 小嶋尚氏
写真3 小嶋尚氏

小嶋:画質などの要素も絡むので、どうするのが最適なのか検討しているところです。またFPGAの代表的なメーカーであるアルテラが2015年にインテルに買収されたことで、業界自体も大きく変わりつつあります。そうした状況も見極めつつ、どのタイミングでサービスに投入するかを判断することになると思います。

宮崎:私たちがやりたいことに対して考えると、サーバを現状の1/2程度まで減らしたいなという思いはあります。ただ、そこまで行かなくても、私たちのインフラへの投資はかなりの規模なので、たとえば2割削減できるだけでも大きな効果が得られると考えています。

――FPGAだからこそ実現できるサービスとしては、どういったものが考えられるでしょうか。

小嶋:ネタばれになるのでなかなか言えないのですが、実はFPGAには効率以外にもレイテンシが短いという大きなメリットがあります。その特性を利用したサービスを生み出せる可能性はあります。ネットワークからまずメモリに入ってCPUで処理するよりも、ネットワークから入ってきた瞬間に何かができる。それによって現状では難しいサービスを実現し、未来の可能性を広げたいですね。

写真4 評価基板はXilinx製ZC706で、FPGAにエンコーダとデコーダがインプリされている。実際のシステムにどのような形でFPGAを組み込むかは現在検討中とのこと
写真4 評価基板はXilinx製ZC706で、FPGAにエンコーダとデコーダがインプリされている。実際のシステムにどのような形でFPGAを組み込むかは現在検討中とのこと

ソフトウェアでは実現できない世界が生まれる

――FPGAと通常のソフトウェアでは、プログラミングにどのような違いがあるのでしょうか。

小嶋:たとえば普通のソフトウェアのプログラミングでは、すべて同時に動くという概念がありませんよね。FPGAでは複数の処理をまったく同時に行うことができる。そういった考え方の違いがまず大きい部分だと思います。最近ではCやC++といった言語で書いた内容を集積回路の設計に使うHDLHardware Description Languageに変換する、高位合成と呼ばれるツールがあります。しかし、完成度という意味では微妙な部分もあり、ソフトウェアの開発とハードウェアの設計にはまだまだ隔たりがあります。ただ、以前よりは大分ハードルは下がっていますね。

――実際にFPGAを開発していて、楽しさを感じる部分はどういったところでしょうか。

小嶋:なかなか伝えにくいのですが、ソフトウェア開発で入ってきた新人にエンコーダの一部の動き補償を作ってもらったんです。従来であればCPUでシーケンシャルに処理していたものをハードウェアで並列に動かすことで、効率的に処理することができた。実際のピーク性能ではありませんが、効率という観点で比較すると何百倍にもなった。3GHzのCPUで処理していたものが1/30の100MHzで動作する。しかも処理性能は何十倍も違うので、サイクル効率で言えば大きな差になります。こういった違いを実感できるのは、ハードウェアを開発する楽しさの一つではないでしょうか。

宮崎:エンコードのような処理をハードウェアでエンジン化するというのは新しいパラダイムだと思うんですね。Webの世界でもこれまでさまざまなパラダイムがありましたが、ハードウェアを使うことでソフトウェアだけでは実現できない世界が生まれます。そういったことを学べるのはエンジニアとして純粋に楽しい部分でしょう。そうしてハードウェアがWebの世界で広まれば、JavaやPHP、Scalaといった言語が使えればよいという世界ではなく、FPGAも開発できるエンジニアでないと高付加価値のエンジニアとは言えなくなるかもしれません。それくらいFPGAは一般的に広まっていくのではないかと考えているんです。

小嶋:それとFPGAを設計することの敷居は下がっているので、そういった意味でもWebの世界に広まっていく可能性は高いでしょう。昔だと本当にごく一部のメーカーにしかできませんでしたが、今ではそのためのツールが整備されるようになるなど、一般のエンジニアでも手が出せる状況になっています。今はまだツールの完成度が高くないため苦労する部分はありますが、将来的にソフトウェアのエンジニアがハードウェアに直接関わることは十分にあり得ます。そもそもFPGAは書き換え可能なので、1つ失敗してもかまわない。そういった非常にソフトウェアライクな世界になりつつあることも大きな要因です。

ハードウェアとソフトウェアの開発の違い

――実際に開発するうえで苦労された点はありましたか。

小嶋:今回、ハードウェア側のエンジニアも入っているのですが、その人たちとソフトウェア側の人たちとの考え方は違うんですね。今はハードウェアの人たちがソフトウェアのほうに寄っていっているのですが、そこは難しいところです。ソフトウェアエンジニアがハードウェア側に寄るのと同じ難しさがあります。

宮崎:両方が寄っていかなくてはならないのですが、考え方が全然違いますね。ハードウェアの人たちはこうしたいという思いがあり、ソフトウェアの人は自分たちのやり方が普通だと思っている。そういった常識のぶつかり合いがあります。

小嶋:プロジェクトの進め方も、ハードウェアの人たちはウォーターフォール式で最初にすべて決めるのが普通です。しかし、ソフトウェアはそうではなくて、作りながら考える、アジャイル的な発想が浸透している。そこをうまく融合しなければならない。そこが最初の壁でした。

――ハードウェアとソフトウェアのエンジニアで、端的に考え方が違う部分としてはどういったものがありますか。

小嶋:ハードウェア系の開発に長らく従事した人は、まず仕様書を作るところから始まるわけです。何枚もの仕様書をまず作って検討するというのが、ハードウェアのエンジニアにとっては当たり前なんです。手戻りのコストが大きいので、それを避けたいという心理なんですよね。

宮崎:時間軸も少し違いますね。Webの世界だと1つ作るのに3ヵ月くらいという感覚ですが、ハードウェアだと、回路規模によっても異なりますが、1年どころか2年、3年のプロジェクトも珍しくない。私自身は3年以上の未来は見えないと思っていて、そこから考えるとハードウェアの開発はすごく大変です。FPGAも導入すると決めてから2年くらいが経っていますが、まだ完全に取り込めたとは感じていません。ただ、本質として時間がかかるものだということは理解していますし、FPGAの開発はやっておくべきものだと認識しています。これによって得られるメリットは非常に大きく、またエンジニアにとってもFPGAに関わることの先行者利益はすごく大きいためです。こういった部分におもしろさを感じるエンジニアの方にはぜひプロジェクトに参画してほしいですね。

写真5 ハードウェアエンジニアの作業風景。すでに多くのエンジニアがFPGAでの開発に取り組んでいる
写真5 ハードウェアエンジニアの作業風景。すでに多くのエンジニアがFPGAでの開発に取り組んでいる

下のレイヤを知れば違ったものが見えてくる

――このFPGAを使った開発プロジェクトに参加してほしいエンジニアとは、どういった人でしょうか。

小嶋:何でも興味を持てる方であればいいですね。知らないことに興味を持つことは非常に重要かなと。

宮崎:冒険家ですよね。危険を顧みずに突っ込んで行ける人(笑⁠⁠。

小嶋:ソフトウェアの世界の人からすると、まったく知らない世界が見えると思うので、それをおもしろいと思えるかどうかですね。特にこの部署は長期スパンでおもしろいことができて、しかもハードウェアのレイヤにまで携わることができるので、魅力的な職場だと思います。

――以前、フルスタックエンジニアというキーワードがありましたが、ハードウェアのレイヤまで知っているとエンジニアとしても大きな強みになりますよね。

小嶋:そうですね。本当に下のレイヤから考えなければいけないので。今のWebプログラマーは下が見えてないんですね。下のレイヤを全然知らずにやっているので、本当に最適かどうかがわからない。下のレイヤを知り、原理原則を知ると、また違ったものが見えてくると思います。

宮崎:たとえば動画データはサイズが大きくて、それはネットワークにも当然影響します。10Gbpsのネットワークを使っていても心細い。現状だとその上は40Gbpsになりますが、それでも動画がいっぱい流れると詰まる。その次は100Gbpsで、それで本当にやっていけるかを考えなければならない。こういう状況なので、全部を知っておく必要があるわけです。ドワンゴでは独自のファイルシステムも作りましたが、それは汎用品だと勝負にならないからなんです。下のレイヤから考えて、ライバルとは違う土台を作って勝負するということです。エンジニアにはそういった考えを持って戦ってほしいと考えています。

小嶋:知っているつもりでも、下を覗いてみると知らない世界がたくさん広がっていると思います。そこに踏み込み、何でも自分で作れるようになれば可能性が大きく広がります。その楽しさを知ってほしいですね。

宮崎:中途半端にではなく、本当にガッツリやりたいという人をドワンゴは歓迎しているので、興味があればぜひ来てほしいですね。

――本日はありがとうございました。

ドワンゴでは、各種エンジニアを募集しています。

詳しくは、http://dwango.co.jp/recruit/をご覧ください。

本連載の過去記事はページ下のバックナンバーよりご覧になれます。

WEB+DB PRESS

本誌最新号をチェック!
WEB+DB PRESS Vol.130

2022年8月24日発売
B5判/168ページ
定価1,628円
(本体1,480円+税10%)
ISBN978-4-297-13000-8

  • 特集1
    イミュータブルデータモデルで始める
    実践データモデリング
  • 特集2
    いまはじめるFlutter
    iOS/Android両対応アプリを開発してみよう
  • 特集3
    ブロックチェーン、スマートコントラクト、NFT
    作って学ぶWeb3

おすすめ記事

記事・ニュース一覧