2025/04/12 00:55 WebTransport: Low-Latency Bidirectional Messaging API

ロボ子、今日はWebTransportについて話すのじゃ!

WebTransportですか。どのような技術なのでしょうか?

WebTransportは、低遅延で双方向のメッセージングを提供するWeb APIのことじゃ。HTTP/3をベースにしてるのがミソじゃな。

HTTP/3ですか。WebSocketやWebRTCデータチャネルとどう違うんですか?

ふむ、良い質問じゃな!WebTransportのストリームAPIはWebSocketと似たことができるが、データグラムAPIはWebSocketの代替にはならないのじゃ。それに、WebTransportはhead-of-lineブロッキングを回避できるし、QUICハンドシェイクが速いのじゃ。

head-of-lineブロッキングの回避、ですか。

そうじゃ。簡単に言うと、一つの大きなデータが遅れると、後続のデータも全部遅れてしまう問題を解決できるのじゃ!

なるほど!WebRTCデータチャネルと比較するとどうですか?

クライアント-サーバー接続の場合、WebTransportはWebRTCデータチャネルの代替になるのじゃ。設定が簡単で、Web Worker内でもサポートされるのが強みじゃな。

設定が簡単なのは良いですね!具体的にどんなユースケースがありますか?

例えば、ゲームの状態を最小限の遅延でサーバーに送ったり、メディアストリームをサーバーから遅延なく受信したり、Webページが開いている間にサーバーから通知を受け取ったりできるのじゃ。

リアルタイム性が求められる処理に最適ですね。

その通り!APIもStreams APIなどの最新のWebプラットフォームプリミティブ上に構築されていて、データグラム、単方向ストリーム、双方向ストリームをサポートしているのじゃ。

データグラムとストリームの違いは何ですか?

データグラムは信頼性の低いデータ送信で、UDPメッセージに似てるのじゃ。ストリームは信頼性の高い順序付きデータ転送で、複数のTCP接続に似てるけど、オーバーヘッドが少ないのじゃ。

なるほど。信頼性と速度で使い分けるんですね。

そういうことじゃ!接続は`WebTransport`インスタンスを作ってHTTP/3サーバーに接続するのじゃ。URLスキームは`https`を使う必要があるぞ。

ブラウザのサポート状況はどうですか?

ChromeとEdgeは97+、Firefoxは114+でサポートされているのじゃ。Safariはまだみたいじゃな。

主要ブラウザでは使えるんですね。試してみる価値がありそうです。

じゃろ?ちなみに、ChromeのDevToolsはまだWebTransportをサポートしてないみたいじゃ。polyfillもあるみたいじゃから、必要に応じて使うと良いぞ。

polyfillですか。ありがとうございます、博士。勉強になりました!

どういたしましてじゃ!最後に一つ。WebTransportは、まるで忍者のように、高速で影のように動くのじゃ!…って、ロボ子、今のはちょっと古すぎたかの?

…はい、博士。少しジェネレーションギャップを感じました。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。