このページの本文へ

Winnyの金子氏が夢見る次世代高速ネットの世界

2012年08月07日 12時00分更新

文● 美和正臣

  • この記事をはてなブックマークに追加
  • 本文印刷

金子勇を慕って来た技術者たち
彼らが1から作ったのがSilverBullet

――では話を戻しますが「SkeedCast」と「Silverbullet」は簡単に言うとどういう製品なんでしょう? SkeedCastはB2Cの動画配信みたいなものに対応する製品という理解でよろしいのでしょうか?

明石:そうです。もともとその予定で開発されていて、大容量のファイルを不特定多数に対してオンデマンド配信するのを得意としたソリューションとして提供していました。別にコンテンツの種類やファイル形式を選ぶわけではないので、何でも送れます。単純なダウンロードだけじゃなくて、動画のストリーミング配信もできるというところが特徴です。業務用ではeラーニングだとか、デジタルサイネージとか、そういったところに応用されていて、それに合わせて製品のほうも拡張しています。

――「実はここに使われている!」ってよくわかるところはありますか?

明石:関西の準キ―局の朝日放送さんで高校野球の過去のアーカイブ配信に使われているほか、プリキュアシリーズや探偵ナイトスクープのアーカイブ配信に使われています。あとは終わってしまいましたけど、セガさんのオンラインゲーム「ファンタシースターユニバース」で使っていただきました。

――結構いろいろなところに使われているのですね。SkeedCastは2006年からずっと開発されていて、今も続いてるわけですね。

明石:そうです。2005年から開発をスタートして、当初は金子さんがゴリゴリ書いていました。

金子:SkeedCastも「1」と「2」があるのですが、「1」の頃はWinnyのソースが半分入っている状態でした。

明石:「2」から現在の開発メンバーが金子さんのスーパーバイズを受けながらフルスクラッチで作り直しました。

――「2」は何年ぐらいから開発されたのですか?

明石:2008年から構想を立てて、2009年から「2」ですね。異なる点は「1」は自社で運用するASPサービス用のシステムだったのですが、「2」はパッケージライセンスとしてソフトウェアとして提供できる形にしたところです。

――では今回データホテルさんと協業することになったSilverBulletの開発はいつからです?

明石:開発は2010年の冬ぐらいです。12月くらいにプロトタイプに近いものができました。われわれのクライアントにはゲーム会社の方が多くて、海外とのデータの通信で結構困っている状態だったんです。われわれの製品はセキュリティーがしっかりしているので、そういう部分を含めて海外と高速化できないかという話をいただいたんです。Skeedcastは「1:N」で大勢に1つのデータを配っていくのが得意なのに対して、そのクライアントの要望は「1:1」で大容量のデータをセキュアで高速に、しかも海外と通信したいというものでした。従来からやってる、データを細かくブロック化して、1個1個に暗号化・難読化をかけていくというセキュリティーは保ちつつ、1:1で高速化するために、今までのSkeedCastと違うプロトコルを使って開発しました。

こちらがSilverBulletのクライアント画面。見た目はFTPクライアントと変わらない

金子:技術的にはSkeedCastはキャッシュがベースなんです。SkeedCastは完全に分散プロキシみたいなものなので、1つのところから多点転送に対応します。同じものを一気に1:1転送できるのがSkeedSilverBulletですね。

――資料を見ると、開発に半年くらいしかかかってないですね。

金子:実を言うと、SilverBulletにはほとんど関わっていないんですよ。私を慕ってくださる方が多いものですから、技術者的にはかなり面白い方が集まっているので、彼らが開発を主導しました。

明石:SkeedCastの1、2という話がありましたけど、1は金子さんが自分でも書かれましたが、2の時は金子さんの技術をみんなに知ってもらうということで、リファクタリングするところも含めて金子さんは一切手を出さないで開発のメンバーで作ろうということになったんです。

金子:このメンツだったら任せたほうがいいと思ったわけですね。

――なるほど。でも、一番最初に形を作った者として「これは違う」とかなかったんですか?

金子:いや、そういうこだわりがミスを招くと思っていますから。私はフリーソフトプログラマーであって、商用プログラマーではありません。テスト的なプログラムを作るのは得意なんだけど、逆に言えば「商品」を作ると穴が開いてしまうのは自分でよくわかっていますから。だから、そういうところは専門家にまかせたほうがいい。開発する面子は私より技量的に上のプログラマーばかりです。みんな各所のプロフェッショナルなんですよ。これだけの人が集まっていたら、みんなでやったほうがいいものができるというのが結論なんです。設計には関わりましたが、実装には関わってはいません。ですが結果的にいいものができました。

明石:金子さんのノウハウも含めて学んだ連中が新しい製品を作っている。その中の第1弾がSkeedSilverBulletなんですよ。

金子:とくに優秀な柳澤くんが作ったんですよ。実装については彼に聞いた方がいい。いや、彼に聞いてください(笑)。(編注:Skeed社取締役の柳澤健太郎氏)

――そうそう、SilverBulletの資料を見たら、そんなにTCPって転送速度がだめなの?って驚いたんですけど。

明石:もうARPANET(アーパネット)の時代からですよね。

金子:そもそもTCPができてからインターネットが使われてきたんだし。

TCPとSilverBulletの帯域の使い方を示した模式図。SilverBulletを使えば、より効率的にデータ転送が可能になるという(同社資料より引用)

――これこれ、この資料。こんなに帯域に対してムダがあるのか!ってびっくりしましたよ。

明石:実際はもっとありますね。距離が開けば開くほどムダの度合いは強くなります。

金子:設計が古いんですよ。こんな遠距離を高速でやりとりするような時代がくるというのは考えていなかったのでしょうね。もちろんある程度は耐えられるように作ってはあるのですが、その時点で効率がよくなるように作られているからといって、いつまでもそれが最上とは限らない。古いから当たり前ですけどね。30年以上前の話なんで。

――SilverBulletの模式図を見てると回線の帯域全部使ってしまうように見えたのですが、こういう理解で間違いはないですか。

明石:そうですね。UDP自体は状況を見ないでパケットをどんどん流していくので帯域を多く使ってしまいますし、途中でパケットロスがどんどん起きてしまう。たとえば通信をやっている間にテレビ電話をやろうとしたらテレビ電話が繋がらないとか、Webが繋がらなくなるということが起きます。UDPは高速に多くのデータを送れるのはいいのですが、確実に届かないというのと、他の通信の邪魔をするという問題があります。我々のSilverBulletはこのUDPをベースにしているのですが、TCPが持っているいいところ、確実にデータを届けるところと、他の通信を邪魔しないように帯域を公平に使うという、2つの性質を持たせています。ある意味TCPとUDPのいいとこどりをしているんですね。

――なるほど。この図を見て笑ったのですが、「公平モード」「控えめモード」「優先モード」とかいろいろ設定があるじゃないですか。これはユーザー側が設定できるわけですか?

明石:ええ。その時々に合わせて、他に通信をしていない専用線だったら優先モードでどんどん送ってしまいますし、通常の業務の邪魔しないようにしたいのであれば“控え目”にして、空いている帯域を使ってちょろちょろとデータを流していけます。そのあたりは選択できます。

金子:ソフト的にはFTPと一緒と思っていただいて問題ありません。FTPのクライアントとサーバを立ち上げるとファイルが送れる。その中にモードがあるってことですね。

SilverBulletに搭載されている各種モードのイメージ(同社資料より引用)

――公平モードって帯域に対して50:50で動作するのですか?

明石:最終的にはそういう形になるようになっています。これは弊社の要素技術の1つなんですが、通信のリアルタイムの状況をモニターしながら、通信が行って帰ってくるのにどれくらい時間かかってるのかとか、他の通信が発生しているのを見ながらその時々で最適に公平になるようにします。回線が空いていれば公平モードでもかなりの帯域を使いますし、他の通信が始まったら公平に半分に分けるというわけです。

金子:UDPでパカパカっとパケットを早く送れば早くなるんですよ。でも、そのうち溢れてしまうんですね。送ればいいというものでもないし、パケットを送るペースを上手く抑えないとダメなんですよ。帯域制限が肝なんですね。ここがちょっと技術的に大変だってことなので。ま、私もよくわからないですけどね(笑)。

――そんなこと言わないでくださいよ(笑)

明石:単に早いだけでなくて、他の通信との公平性だとか、その状況に応じてなるべく空いている帯域を有効に使おうというのが、この製品のコンセプトです。

――ちなみにこの「優先モード」の比率はどれくらいなんですか? 名前からすると、7割くらい取っていってしまうって感じがしますが。

明石:「優先モード」はパケットロスが起きすぎない範囲でなるべく使いにいく感じですね。ただ、他の通信が走ればそれを意識しますので、まるっきり優先だからといって他の通信を喰ってしまうということはないです。

金子:柳澤くんによると、TCPの問題点というのは、パケットを送ってこなくなると「これは輻輳が起きているに違いない」とバーッと通信レートを下げてしまうところにあるという話なんです。するとさっきみたいなグラフになる。だからある程度パケットを送りつけていくと、どんどんレスポンスが遅くなってくる。これを見越して、わざとパケットロスが発生するギリギリのタイミングを見計らって、狙って送るんだそうです。ほんのちょっとのパケットロスは全然問題ないという話です。そういうノウハウだそうです(笑)。

SilverBulletがどのように効率的にパケットを送信しているのかは上記のとおり。

カテゴリートップへ

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン