成功する技術には、それぞれ機が熟す時というのがあります。何か(通常は外的事象)が起こり、それをきっかけとして有望なアイデアが現実のものとなり、それなしの暮らしは考えられないようになります。最近では、おそらく2007年のiPhoneの発売以降クラウドに起きた変化がまさしくその好例です。スマートフォンの登場によって、小規模デベロッパーが狙える巨大市場が生まれ、大手デベロッパーでさえパブリッククラウドインフラストラクチャへのアクセスなしには対処できない顧客層の急拡大が起こり得る事態となりました。両者とも、表層下の問題について心配することなく、すばらしいアプリケーションの構築に集中したいと考えていました。
昨年、新型コロナウィルス感染症の流行により、リアルタイムコミュニケーションにも同様の機会が訪れました。どんな組織にとっても、コミュニケーション能力は生命線です。2020年以前は、コミュニケーションの多くが世界中のオフィスの会議室で行われていました。しかし、昨年3月にこれが一変します。会議室が突然空になったのです。その後早18か月が経過しましたが、働き方の大変革は続いています。
Slack、Zoom、Teamsなどのリアルタイムコラボレーションツールが無ければやってこれなかったであろう組織が多いことは疑いの余地もありませんが、現在次々と登場しているコミュニケーションツールはあくまで氷山の一角に過ぎないと当社では考えています。周囲を見渡すと、爆発的なイノベーションが今まさに起ころうとしていて、それにより組織がリモートや少なくともハイブリッドの環境でコミュニケーションできるようになる気がしてなりません。
このようなことを心に留めながら、本日、CloudflareのReal Time Communicationsプラットフォームをご紹介できることを嬉しく思います。これは、次世代のリアルタイムかつインタラクティブなアプリケーションの開発をサポートするためにデザインされた新しい製品スイートです。一対一のビデオ通話や、グループオーディオ・ビデオ会議など、リアルアイムコミュニケーションの需要は高まるばかりです。
信頼性の高いスケーラブルなリアルタイムコミュニケーションプラットフォームを運営するには、大規模ネットワークの構築が必要です。すべてのユーザーが低遅延、低パケットロス、低ジッタで常時接続できるようにするには、ネットワークエッジを各地のユーザーからミリ秒圏内に置く必要があります。インターネットトラフィックの輻輳を回避してルーティングするためのバックボーン、一度に数千の参加者が接続してもサービスを提供できるよう効率的に拡張するインフラストラクチャ、さらにはメディアサーバーのデプロイメント、ビジネスロジックの書き込み、複数クライアントプラットフォームの管理も必要で、スムーズな運営を継続しなければなりません。Cloudflareはそのお手伝いができると考えています。
WebRTCを用いた既存の動画アプリとオーディオアプリの接続性を、Cloudflareのグローバルエッジネットワークを活用して向上させる「WebRTCコンポーネント」が、本日より利用可能になります。これには、何千(あるいは何万)もの参加者に対応するスケーリング機能が含まれ、攻撃に対するお客様の保護には当社のDDoS攻撃軽減システムを活用し、IPとASNに基づくアクセスポリシーもわずか数回のクリックで適用されます。
Real Timeはどのくらい「リアルタイム」か?
「リアルタイム」は一般的に、500ミリ秒未満で行われるコミュニケーションのことを指します。500ミリ秒未満というのは、世界をつなぐ光ファイバネットワークをパケットが移動する速度と同じ速さです。2021年時点では、リアルタイムのオーディオアプリや動画アプリはたいていWebRTCを使っています。WebRTCはオープンスタンダードとブラウザAPIのセットで、メディアとデータの両方をUDP上でどのように接続、保護、転送するかを定義するものです。今日私たちが使っているプライマリブラウザベースのコミュニケーションプロトコルHTTPと比べて、WebRTCは品質と柔軟性にすぐれた双方向性のコミュニケーションを提供できるようにデザインされました。しかも、WebRTCはブラウザでサポートされているため、ユーザーにはカスタムクライアントが不要で、開発者はそれを構築する必要がありません。必要なのはブラウザだけです。
重要なのは、組織における働き方変革が進むにつれて(もちろん当社でも)、タイムゾーンや地域をまたがるリアルタイムコミュニケーションのニーズが激増していることです。
実際にリアルタイムが重要になる場面は?
一対一の通話(例:FaceTime)。私たちは、従来の電話線を使ったコミュニケーションよりもほぼ瞬時のコミュニケーションに慣れてきています。そして、この時代の流れに逆行する理由はありません。
グループ通話や会議(ZoomやGoogle Meet)。わずか数秒でも遅延があると全員が同時に喋り出すという事態が発生します。
ソーシャルビデオ、ゲーミング、スポーツストリーム。ストリーミングで数コマが落ちたりバッファが入ったりしたために10秒遅れをとり、ゲームの決定的瞬間を見逃したといった事態は避けたいものです。
インタラクティブなアプリケーション。ブラウザ上の3Dモデリングや携帯電話上の拡張現実、ゲームストリーミングに至るまで、リアルタイムである必要があります。
リアルタイムアプリケーションについては、当社の総力を結集しても、まだ深く掘り下げるところまで行っていません。その理由は、リアルタイムアプリケーションの拡張は、たとえ数千人の規模であったとしても新しいインフラストラクチャパラダイムが必要となり、従来のHTTPベースの通信よりネットワークへの負荷が増大することなどです。
WebRTC コンポーネントの登場
本日、Cloudflareはクローズドベータ版の_WebRTCコンポーネント_の提供を開始します。これを使うことにより、一元化されたWebRTC TURNサーバーを運営するチームは、Cloudflareの分散型グローバルネットワークへ負荷を移し、信頼性を高め、より多くのユーザーに拡張し、インフラストラクチャの管理時間を短縮することができます。
TURN(Traversal Using Relays Around NAT (Network Address Translation))は、WebRTCのピアツーピアオリジンの実用面の欠点を補うためにデザインされたものです。WebRTCはかつて(今も!)ピアツーピアテクノロジーですが、実用面では、キャリアグレードNATや企業のNAT、ファイアウォールがあるために信頼性のあるピアツーピア接続の確立は依然として難しいままです。さらに、各ピアは自身のネットワークの接続性に制約されます。従来型のピアツーピアメッシュでは、参加者は他のすべてのピアからデータを受け取らなければならないため、ネットワーク接続がすぐに飽和状態になってしまいます。さまざまなデバイス(携帯電話、デスクトップ)とさまざまなネットワーク(高遅延の3Gから高速の光ファイバーまで)が混在した環境では、5つ以上のピアにスケールすることは極めて困難になります。
お客様自身のインフラストラクチャに代わりエッジでTURNサービスを稼働することにより、高い接続性を提供します。Cloudfalreは250都市以上に広がるエニーキャストネットワークを運営しており、お客様のユーザーがどこにいても、とても近い場所にあります。つまり、ユーザーはCloudflareのTURNサービスに接続すればCloudflareネットワークに良好な状態で接続できるということ。そしていったん接続が確立されれば、Cloudflareネットワークとプライベートバックボーンを活かしてお客様により優れた接続性を提供し、遠く離れた通話相手まで繋ぎます。
メリットはそれだけではありません。スケールについて心配する必要がないことも特徴です。WebRTCインフラストラクチャのスケールが難しいことはよく知られています。適切なロケーションに適切な容量が確保されていなければなりません。CloudflareのTURNサービスは自動的にスケールし、エンドポイントの数を増やしたければAPIを1回呼び出すだけで済みます。
WebRTCコンポーネントはもちろんCloudflareネットワーク上に構築されていますので、100Tbpsのネットワーク容量を活かしたDDoS攻撃対策のメリットもあります。今後は、わずか2回のAPI呼び出しで、スケーラブルでセキュアなプロダクショングレードのWebRTCリレーをグローバルにデプロイすることができます。
開発者本位のリアルタイムプラットフォーム
しかし、Cloudflareでよく言うように、私たちの仕事は「まだ始まったばかり」です。スケーラブルなマネージドTURNインスラストラクチャは、一対一や小グループの通話、そして特に独自のインフラを管理してきたが参加者が増えて瞬く間に状況が複雑化したチームのためにリアルタイムサービスを構築するうえで欠かせない構成要素です。
各クライアントが送受信するストリーム(WebRTC用語では「トラック」)の品質管理による通話品質確保についても、大規模イベント時に話者や配信者を決める許可システムについても、メディアエクスペリエンスに加えてサポートチャットやインタラクティビティを提供するシグナリングインフラストラクチャの構築についても、はっきり言えるのは「やることは山ほどある」ということです。
そこで、Cloudflareの今後の計画を少しご紹介しましょう。
低レベルのインフラストラクチャ、認証、承認、参加者の許可などを管理し構成する必要性を抽象化する、開発者本位のAPIです。ICE、ピア接続、メディアトラックといった複雑な事柄を学ぶ必要はありません。参加者、部屋、チャンネルといった観点で考えましょう。
Cloudflare for Teamsとの統合により、組織のアクセスポリシーに対応します。会社の対話集会(タウンホールミーティング)がリモートで行われる場合に最適です。
従来型HTTPストリーミングのクライアントに対する配信や、[Stream Live] ]を利用したオンデマンドの動画再生、Stream ConnectやWHIPなどの未来のプロトコルを使ったRTMPソースからの取り込みなど、あらゆる入力ソースと出力ソースの接続を容易にします。
Cloudflare Workersを経由する組み込み型サーバレス機能です。参加者関連の事象(入室、退室など)が発生次第Workersをトリガーすることや、Durable ObjectsとWebSocketsを使ってステートフルなチャットやコラボレーションのツールを構築することなど。
...そして、これは始まりにすぎません。
また、当社のRTCプラットフォームの構築に一役買いたいという野心的なエンジニアも探しています。インタラクティブな次世代リアルタイムアプリケーションの構築に興味のあるエンジニアの方は、ぜひご連絡ください!
当社と共に世界各地にもっと繋がりをに広げたいと考えるものの、既存の一対一のリアルタイム動画・オーディオプラットフォームを数百または数千以上のユーザーが同時利用できるまで拡張するのに苦慮しているという方は、WebRTC Componentsのクローズドベータ版をお申し込みください。特に、リアルタイム化を始めたばかりで、Cloudflareと繰り返し連携していきたいとお考えのチームとのパートナーシップを、楽しみにしています。