LINEの無料通話を支える技術的背景

Jungnam Gwock氏(以下、Gwock):みなさん、こんにちは。Jungnam Gwockと申します。本日は、LINEの無料通話について、特に最近のアップデートについてお話しします。

おそらくみなさんは、LINEが無料通話サービスを提供していることはご存知だと思います。そして多くの方はLINEの無料通話が好きであると思っています。

これまで我々はさまざまな機能を開発し、通話品質を上げようと努力してまいりました。今日はソフトウェアモジュールの図を使って、その詳細をご説明します。

まずはCall UIです。これは、ご覧のとおり、VoIPのクライアントモジュールを用いています。

このモジュールがVoIPサーバーと通信して、他のVoIPユーザーとつなぎます。このプレゼンでは、「VoIPプラットフォーム」という言葉をVoIPクライアントモジュールとVoIPサーバーを1つにまとめたユニットを表す用語として用います。

通話を開始する際、それから、通話のセットアップが終わったときにも、このVoIPプラットフォームがさまざまな処理をすることで、リアルタイムでのコミュニケーションを可能にします。私達は通話品質を向上するために、このVoIPプラットフォームを長年にわたり開発してきました。

例えば、メディアパケットのデリバリーポートがブロックされた場合、プラットフォームはTCPサーバーのポートの80番や8080番につなげようとします。このようなネットワークの迂回経路を使うことによって、UDPがブロックされたネットワークでも通話を開始することができます。

事実、さまざまな追加機能をニーズに応じて作ってきました。しかし、このVoIPプラットフォームのソフトウェアの構造にはそのような多くの機能を追加するための柔軟性がありませんでした。むしろ、(機能を追加することで)メンテナンスコストが増加しました。

このVoIPプラットフォームは寿命を迎えたと感じたので、これまでの知見を生かした新しいVoIPプラットフォームをゼロから作ることにしました。

新たな音声通話プラットフォーム「PLANET」

そこで、プロジェクトを開始しました。そのプロジェクトは「PLANET」と名付けました。このプロジェクトを通じて我々がやりたかったのは、より高い品質のリアルタイムコミュニケーションをサポートすることです。

プロジェクトのゴールは単純です。既存のVoIPプラットフォームを置き換えることで、通話の品質を上げるということです。たとえ時間がかかったとしても、この開発にはとても価値があると考えました。そのためには新しいVoIPプラットフォームをゼロから設計する必要がありました。

事実、このプロジェクトにはやるべきことがたくさんありました。たくさんありすぎて、今日ここだけではお話しすることはできません。ですのでまずは、プロトコルの観点における主な変更についてお話したいと思います。そして、その最新の変更によってメディアの品質がどのように変わったのかをご紹介します。

「SIP」については聞いたことがある方もいらっしゃるかもしれません。「SIP」プロトコルはIETFの標準になっているもので、長年にわたってコールセットアップのプロトコルとして使われてきました。

もちろんこれは電話会社だけでなく、VoIPサービスを提供している他の会社も使っています。

実際のところ、LINEの無料通話サービスはカスタムプロトコルを使っていたんですが、これはこのSIPプロトコルに基づくものでした。現実的に考えて、SIPの代わりとなるプロトコルはありませんでした。

しかし、我々の頭にはいつもこんな疑問がありました。「本当にこのプロトコルは、モバイルアプリにふさわしいんだろうか?」と。このトピックはとても重要で、そして時には悩ましいものでした。なぜなら、我々が提供するVoIPサービスはこのSIPを基にしてたからです。

なぜSIPが主流なのか?

この質問に答える前に、別の質問に答える必要があります。なぜSIPはここまで人気があるのでしょうか? 標準的なものだからでしょうか? なぜSIPなんでしょう?

おそらくその理由として、電話通信会社や多くのVoIPソリューションの会社は一緒に仕事をする必要があり、そして、多くの相互接続をする必要があるからだと考えています。

つまり、この関係性の中において、SIPには非常に大きな役割があります。SIPが標準として使われているため、企業は非常に明確なインターフェースを作ることができます。すなわち、SIPが互換性の問題を解決しています。

では、モバイルアプリの会社の場合はどうでしょう? モバイルアプリ開発者が、それぞれ開発している独自のサービス間で相互接続することができると思いますか?

例えば、私がLINEからAppleのFaceTimeに電話しようなんて思うでしょうか? そうは思いません。将来的にも、そうはならないでしょう。こういった状況を踏まえると、実はそこまで標準であるSIPに従う必要はないのではないかと思えました。

では、パケットサイズについてお話ししたいと思います。これはまた別の問題です。SIPのメッセージは、人が読めるテキストが含まれています。ですのでそのメッセージは、パケットサイズが非常に大きくなっています。

しかし、とくにモバイルネットワーク環境では、パケットが大きくなれば大きくなるほど、問題も増えていくのは明らかです。経験上、データの消費量が少ない、もしくはパケットサイズが小さいほうがモバイルネットワークには適しています。

なので、SIPをやめようと決断しました。そして、モバイルネットワークに適したコールセットアップのためのプロトコルを設計しました。その際、パケットサイズを減らし、ネットワークリソースの使用量を減らすことに焦点を当てました。

主要なプロトコルが3つあります。Cassini、Huygens、そしてBepiです。この3つですが、それぞれSIP、SDP、ICEのプロトコルを置き換えるものです。実際は、これらの新しいプロトコルは、既存のものと全く同じ役割を果たすものではありません。

例えばHyugensは、メディアコネクションの候補については検証せず、決まった許容量と最初のメディア属性だけを検証します。これらそれぞれのプロトコルの役割を再定義することで、パケットサイズを小さく、実装もより簡単になりました。

プロトコルごとのデータの消費量を比較する

プロトコルのそれぞれの細かいところのお話は少し複雑になってしまいますので、その話をするのはやめて、みなさんにご紹介したいものがあります。

既存の通話アプリと比較して、新たなプロトコルではデータ消費量がどれくらい変わるのか、実験しました。

この実験では、Wiresharkというツールをつかって、様々なVoIPアプリの呼び出し中および応答した際の携帯のパケットをキャプチャしました。そしてコールサーバと思われるサーバーへと送られた、もしくは、そのサーバーから受け取ったものだけをフィルタリングしました。そして、コールのセットアップ中のデータレートの最大値を比較しました。

こちらがその結果です。最初の2つのアプリのコールのセットアップ時のデータ消費量は100kbpsを超えています。これは多すぎますよね。実際には、すべてのデータが本当にコールセットアップ用だけに使われたかはわかりません。ただ、電話をしたとき、それから、電話を受けたときは毎回、これだけのデータ消費量が観測できました。

3つ目のアプリは、消費量は比較的少なくなっています。4つ目は、昔のLINEの無料通話です。コールのセットアップのパケットサイズはもともと最適化していましたが、やはりこれにも限界があるかなと思いました。というのも、SIPを使っていたからです。

そして最後に、この新しいプロトコルを使った場合のデータ消費量ですが、21kbpsのみでした。ご覧のとおり、消費量は一番少なくなっています。

これはつまり、コールのコネクションがつながるネットワーク(速度)の範囲が増加したことを意味します。たとえば、以前はつながりづらかった輻輳(ふくそう)状態においても、つながるかもしれません。

データの消費量を減らせば、単純にコールの接続品質が良くなるというわけではありません。リアルタイムのコールセットアップにもさまざまな変数があり、コールのセットアップの成功確率をあげるためには、こういった問題には個々に対応しなければなりません。

しかし、コールフローやデータの消費量を下げることができれば、こうしたネットワークの問題が起きるリスクもきっと下げることができるだろうと信じています。なので、このように新しく設計された、ネットワークにやさしいプロトコルにすることによって、通話の品質を上げ、コネクションを良くできると考えています。

「Full HD Voice」品質を実現するために

「Full HD Voice」という用語をお聞きになったことはありますか? この用語はずっと前から、電気通信の分野で使われてきました。Full HD Voiceというのは音声品質を表す言葉です。

他にも音声品質に関しては、ナローバンドやHD Voiceといった用語が存在しています。LINEの無料通話では、HD Voice品質という表現をこれまで使っていました。

こちらの画像を見ていただきますと、どの範囲の周波数情報がHD Voice、そして、Full HD Voiceに含まれているかがおわかりいただけると思います。LINEの無料通話ですが、先ほどお話ししたとおり、もともとはHD Voice品質を使っていました。Full HDになれば、より周波数の高い音が聞けるようになります。Full HD Voiceでは、周波数として8キロヘルツから約20キロヘルツまでの音が含まれるようになります。

しかし、みなさんからすれば、何が変わるのか疑問に思われるかもしれません。実際のところ、これらの違いには気付きにくいです。単純に言えば、その違いは音声がより明瞭になることだと言うことができます。しかし、実はそのような単純な問題ではありません。このセッションの後半では、それらの違いについてお話をさせていただきたいと思います。

この図は市場に出ているVoIPのアプリの音声品質の比較です。

ユーザーレベルで調査しましたが、おそらく、別の環境で調査したら違う結果になっていたかもしれません。最初の2つの人気のアプリはHD Voiceです。以前のバージョンのLINE無料通話もHD Voiceでした。

アプリCは、Super Wide Band VoiceすなわちSWBです。これはHDとFull HDの間ぐらいのものです。しかし、この3つ目のアプリCは、iOSかOS Xだけでしか使えません。

ご覧のように、最新のLINEの無料通話の音声品質は、テストをしたアプリの中で唯一Full HDの品質をカバーしています。

Full HD Voiceを聞くことはできるのか?

ここまでFull HD Voiceについてご紹介し、新しく開発したVoIPプラットフォームはFull HD Voiceの品質をサポートしているとお伝えしてきました。しかし、残念ながらここにいらっしゃるみなさんの多くは、Full HD Voiceを聞くことができません。なぜならば、音質というのは、デバイスのスペックに依存するからです。

スクリーンをご覧ください。

人がなにか話をしたとき、すべての周波数の要素が、その音声に含まれています。しかし、いくつかのマイクデバイスは低い周波数の要素しか通過させません。この実験を行ったデバイスでは、信号が12キロヘルツを超えるとカットされてしまいました。サンプリングレートは48キロヘルツだったにもかかわらず、です。ですので、出力信号はSuper Wide Bandに近くなっているわけです。

この制限は再生時にもあります。Full Bandの信号をスピーカーに送ったとしても、デバイスによっては、12キロヘルツを超えた周波数情報がカットされてしまい、ユーザーはSuper Wide Band品質程度のものしか聞けないというわけです。

なぜ携帯会社が高い周波数をカバーしないのかはわかりません。できればこれからは、より多くの携帯デバイスがFull Bandの録音や再生に対応してくれればなと願ってます。モバイルを作っているメーカーがこういったより高い周波数の音声の録音や再生をサポートするようになれば、おそらくユーザーのみなさんにとってもうれしいことだと思います。

以前のLINEと最新のLINEで、音声を比較するために、素材を用意しました。品質の違いをまさに感じることができます。

スピーカーはiPhoneです。そしてこのデバイスでは、やはり12キロヘルツ以上の信号がカットされています。よって、実際の信号はSuper Wide Band程度です。この環境はとても現実に近いものです。というのも、たいていのLINEの無料通話のユーザーは、この環境下で通話をしているからです。

では、聞いていただきたいと思います。1つは以前のLINE無料通話のもの。そしてもう1つは、新しいバージョンのもの、つまりFull HD Voice対応のものです。注意深く聞いてみてください。そして、違いを聞き分けてみてください。どちらがFull HDでしょうか? まず1番。

(音声再生)

Gwock:次に2番です。

(音声再生)

Gwock:どちらがFull HDでしょうか? 実際のところはSuper Wide Bandですが、2つ目がFull HDでした。この音の違いをより分かりやすくするには、いろいろなものを調整する必要があります。ノイズや再生する空間、再生機器、それから壁の素材ですら音質に影響を与えます。

この部屋は、違いを聞き分けるにはあまりいい場所ではなかったかもしれません。しかし、音の品質の違いを感じていただくことができれば幸いです。また、こうした変更がLINEの無料通話を使うユーザー同士の距離を縮めることができればと願っています。

ビデオ通話のクオリティを上げる

続いて、ビデオ通話についてお話ししたいと思います。LINEのビデオ通話についても多くの変更点があります。ここでは、ビデオ通話の品質の改善についてお話ししたいと思います。

ビデオ通話の品質を改善するには、いくつかのファクターを考えなければいけません。そして、それらのさまざまなファクターのバランスを取らなければなりません。

まず、映像自体の品質が大切です。しかし、それはデバイスのカメラの性能とビデオコーディックによって変わってきます。ビデオ通話の間、電話のカメラは他の参加者へ送る映像をキャプチャし続けています。もちろん、カメラデバイスがより良くなれば、映像の品質はより良くなりますが、このファクターは私たちではどうすることもできません。なのでここでは、ユーザーはすばらしいカメラが搭載されたデバイスを使っていると仮定しましょう。

ビデオ通話の際、映像はビデオコーデックで圧縮されます。これが我々の分野ですね。一般的に、圧縮率が高くなれば、映像の品質は下がります。そのため、映像の品質を上げるためには、圧縮率を下げなければいけません。

ビデオ通話で行われている工夫

では、他のファクターである、ネットワーク最適化についても見てみましょう。ネットワーク最適化も非常に大切なファクターですが、技術的に難易度が高いです。良いネットワーク最適化は、映像の品質を維持しつつレイテンシーを削減するのにも効果があります。

ネットワーク最適化においては、パケットの送受信も監視しています。これはビデオエンコーダーにフィードバックされ、エンコーディングのターゲッティングレートを増減させます。

このネットワーク最適化の一番大切な役割は、ネットワークの輻輳の検知です。もしネットワークが輻輳状態になれば、ネットワークに送るデータを減らし、レイテンシーを低く保つことができます。もちろん、映像の品質は下がってしまいますが、ビデオ通話を継続することができます。

他のファクターについても見てみましょう。(ネットワーク)ロスに対するロバスト性もとても大切な機能です。ネットワークにおけるロスはリアルタイムコミュニケーションの妨げとなります。ネットワークのロスを緩和するテクニックはいろいろありますが、今回は2つの仕組みについて話したいと思います。それは「FEC」と「再送処理」です。

FEC、Forward Error Correction(前方誤り訂正)というのは、パケットのロスが起きようが起きまいが、パケットを修正する情報も同時に送る仕組みです。一方で、再送処理はパケットのロスが起きた際に、パケットを再び送るという仕組みです。FECはレイテンシーに対する要求が厳しい際に効果的です。しかしながら、より多くのデータを使います。したがって、データ送信のコストが高い場合には、再送処理が役立つでしょう。

ロスに対するロバスト性の観点から、以前のLINEと最新のLINEについて、それらの違いを表にまとめました。

再送処理は両方の場合で使われています。FECについては、Flexible FEC 技術を使っています。これは2次元パリティを用いてパケットを保護します。このFlexible FECは現在、IETFの標準化において、ドラフトの段階にあります。

我々の新しいVoIPプラットフォームには、繰り返し復号方式も含んだFlexible FECのすべての機能が実装されています。繰り返し復号方式を使うことで、ロスしたパケットの数が同じであっても、復元レートを高めることができます。

我々はまた、ロスに対するロバスト性を改善するために、映像のストリーミング方式も変更しました。Temporal SVCは、Temporal Scalable Video Codingの略です。Pフレームの間に非参照フレームを含んでいて、もしパケットが損失した場合でも、次のフレームをIフレームなしでデコードすることができます。

もしかしたら、ご存知かもしれませんが、ネットワーク最適化もロスに対するロバスト性に関係しています。すでにお話したとおり、ロバスト性を向上させるためにとFECパケットをより多く生成すれば、送信するデータサイズもまた増加します。そして、ネットワークのレイテンシーも上がります。トラフィックの入力がさばけるビットレートを上回れば、いわゆるネットワーク輻輳が発生します。

ネットワーク最適化モジュールはこの状況を検知する必要があります。なぜなら、ネットワーク輻輳によってビデオ通話の品質がとても落ちてしまうからです。この時、もっとも効果のある対応は、ネットワークロスに対するロバスト性を下げることです。そうすることで、しばらくすればレイテンシーが減少し、輻輳を解決することが期待できます。

CCFSの役割

我々は、独自のネットワーク最適化アルゴリズムを考え、開発しました。これを「CCFS」と名付けました。CCFSは「Congestion Control based on Forward path Status」の略です。CCFSは、低いレイテンシーを維持しながら、フォワードパス上の利用できる帯域を見つけ出します。

そして、利用可能と推定された帯域をさまざまなメディアストリームに振り分けます。Audio、FEC Audio、Video、FEC Videoです。通話中は常にこういったさまざまなプロセスが継続的に実行されます。CCFSが輻輳を検知し、ネットワークのロスが多い場合は、帯域をVideoストリームとFECストリームに振り分けます。このように、利用できるネットワークリソースを最大化し、そして、ビデオ通話の品質を向上させます。実は、ネットワーク最適化は以前のバージョンのLINEにもすでに含まれていました。VideoにはGCCというものを使っていて、これはGoogleによって開発されたものです。

そして、AudioにはDownyを使っています。Downyは、我々のチームが開発しました。しかし、ゼロから新しく開発され、今はCCFSがすべての役割を担っています。既存のアルゴリズムはメディアの種類とは独立して動くので、利用可能な帯域の推定は不可能でした。

しかし、新しく開発したVoIPプラットフォームはCCFSを使って、利用可能な帯域の推定が可能です。そしてまた新しいプラットフォームでは、FECデータの利用方法についても考慮することができます。そして、それらの技術を使うことで、より上手にネットワークを利用することができます。

最新のLINEは、Full HDのビデオ通話を実行できます。ですが、Full HDのビデオ通話を行うには、いくつかの条件があります。

カメラデバイスが1080pの解像度に対応する必要があります。また、リアルタイムで処理できる性能が必要です。そして、ネットワークの状況が良好であれば、HDビデオ通話を実行することができます。

現実的には、モバイルデータのコストやレンダリングサイズなど、さまざまなファクターを考慮しなければいけません。ですので、現在はデスクトップでしかFull HDのビデオ通話を実行することができません。

ユーザーから学び進化していく

本日は、最新のLINEの無料通話についてお話をさせていただきました。まとめると、我々はSIPを使うのをやめ、コールのセットアップのための、よりモバイルネットワークに適した新しいプロトコルを開発しました。

また、Full HD Voiceの品質について話し、そして、どのようにしてビデオ通話の品質を上げたかというお話をしました。実際には、VoIPプラットフォームのコードをすべて変更しました。

我々は、LINEの無料通話を何年間も提供してきましたが、これは新たな始まりだと思います。私たちはユーザーの反応を細かく観察し、優先順位の高いものから応えていきます。ノイズがあるといった副作用がいくつかすでに報告されていて、それらの多くは予想していたものなので、すぐに改善のパッチをあてるつもりです。

ぜひもっと使っていただいて、みなさんからのフィードバックをお待ちしています。我々の新しい無料通話を、ぜひ体験してください。ありがとうございました。

(会場拍手)