ドワンゴのエンジニア魂

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

この記事を読むのに必要な時間:およそ 3 分

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

――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.122

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

  • 特集1
    上から下まで全レイヤ解説! 複雑化した世界を体系的に学ぶ
    Web技術総整理
  • 特集2
    新バージョン登場! PythonによるWeb開発の基本
    はじめてのDjango
  • 特集3
    Rustで実装!
    作って学ぶRDBMSのしくみ