Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
WebTransportのまとめと今後
Search
yuki_uchida
December 11, 2020
Technology
5
1.4k
WebTransportのまとめと今後
WebTransport & WebCodecs meetup vol.0
で話したWebTransportについてのまとめと、今後の予想についてのスライドです。
yuki_uchida
December 11, 2020
Tweet
Share
More Decks by yuki_uchida
See All by yuki_uchida
Rustでマルチスレッドプログラミング! リアルタイム通信ではどのようにスレッドを立てるのか
yuki_uchida
8
6.4k
MoQとか勉強会#2 発表資料
yuki_uchida
2
1.2k
SkyWayが遭遇したWebRTC の可観測性に関する問題と開発者向け可視化サービス提供までの道のり
yuki_uchida
4
3.5k
技術発信を続けるためのTIPS
yuki_uchida
3
150
何かの技術の"専門家"になりたかったから技術調査チームを立ち上げてプロダクトに貢献した話
yuki_uchida
6
610
メソッドチェーンを使ってDataFrameの可読性と保守性を向上させよう
yuki_uchida
1
360
仕様策定中のプロトコルを Rust で書いてブラウザで動かしてみた
yuki_uchida
3
3.1k
Media Over QuicTransportって知ってる?
yuki_uchida
0
540
WebRTCの歴史とこれから
yuki_uchida
0
1.3k
Other Decks in Technology
See All in Technology
技術的負債を正しく理解し、正しく付き合う #phperkaigi / PHPerKaigi 2025
shogogg
7
1.8k
PostgreSQL Unconference #52 pg_tde
nori_shinoda
0
190
お問い合わせ対応の改善取り組みとその進め方
masartz
1
370
Why Go?
xpmatteo
0
130
移行できそうでやりきれなかった 10年超えのシステムを葬るための戦略
ryu955
2
290
技術好きなエンジニアが _リーダーへの進化_ によって得たものと失ったもの / The Gains and Losses of a Tech-Enthusiast Engineer’s “Evolution into Leadership”
kaminashi
0
200
パスキー導入の課題と ベストプラクティス、今後の展望
ritou
7
1.2k
OPENLOGI Company Profile for engineer
hr01
1
22k
Amazon EKS Auto ModeでKubernetesの運用をシンプルにする
sshota0809
0
110
Symfony in 2025: Scaling to 0
fabpot
2
180
ひまプロプレゼンツ 「エンジニア格付けチェック 〜春の公開収録スペシャル〜」
kaaaichi
0
110
ClineにNext.jsのプロジェクト改善をお願いしてみた / 20250321_reacttokyo_LT
optim
1
1.3k
Featured
See All Featured
Practical Orchestrator
shlominoach
187
10k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.5k
A Tale of Four Properties
chriscoyier
158
23k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
A Modern Web Designer's Workflow
chriscoyier
693
190k
We Have a Design System, Now What?
morganepeng
51
7.5k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
11
610
Automating Front-end Workflow
addyosmani
1369
200k
Facilitating Awesome Meetings
lara
53
6.3k
A better future with KSS
kneath
238
17k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.4k
Stop Working from a Prison Cell
hatefulcrawdad
268
20k
Transcript
WebTransportのまとめと今後 WebTransport & WebCodecs meetup vol.0
Intro 内田 裕貴(@yuki_wtz) Webとか自然言語処理とかが好き 最近はNWプロトコルとか映像音声処理に興味あり 2019年4月: NTT コミュニケーションズ入社 2019年6月: SkyWay
DevOpsチームに配属 2020年6月: WebTransportの調査開始 2020年9月: WebRTC Researchチームで活動開始
1. WebTransport記事のまとめと補足 2. WebTransportの最新動向 a. TPAC 2020 b. IETF 2020
3. いつ触るべきなの WebTransport a. 各ブラウザベンダの雰囲気 (Kranky geek 2020) b. 触ってみた所感 興味あればみてね https://qiita.com/yuki_uchida/items/d9de148bb2ee418563cf
1. WebTransportのまとめ 1. WebTransportとは? 2. どうしてWebTransportが出てきたの? 3. WebSocket/WebRTCとの違いのまとめ 4. QUICというプロトコル
1. WebTransport とは WebTransport とは・・・
1. WebTransport とは WebTransport とは・・・ WebSocketやWebRTCと同じ低遅延な双方向通信フレームワーク
1. どうしてWebTransportが出てきたの?
1. どうしてWebTransportが出てきたの? WebRTCやWebSocketには問題がたくさん・・・
1. どうしてWebTransportが出てきたの? - WebSocketのパフォーマンス問題 - WebSocketでは対応できないユースケース - WebRTCの複雑さ - WebRTCの柔軟性のなさ
WebRTCやWebSocketには問題がたくさん・・・
1. どうしてWebTransportが出てきたの? - WebSocketのパフォーマンス問題 - WebSocketでは対応できないユースケース - WebRTCの複雑さ - WebRTCの柔軟性のなさ
WebRTCやWebSocketには問題がたくさん・・・ => (実は)一部の事業者は苦しんでいた・・・
1. どうしてWebTransportが出てきたの? 一部の事業者って誰? - 映像配信 - クラウドゲーミング - IoTデータ などなど・・・
常に低遅延を目指したいサービス 何かいい技術は・・・
1. どうしてWebTransportが出てきたの? QUIC採用によるパフォーマンス問題解消 (HLoB) TCP/UDPの両ユースケースの対応 WebSocketのような低レベルAPIによる柔軟性 これならいける そこで考案されたのが・・・ WebTransport!
1. WebSocket/WebRTCとの違いのまとめ Server <-> Client (サバクラ) Peer <-> Peer (P2P)
TCP like WebSocket WebRTC UDP like ??? WebRTC 今までの双方向通信
1. WebSocket/WebRTCとの違いのまとめ Server <-> Client (サバクラ) Peer <-> Peer (P2P)
TCP like WebSocket WebRTC UDP like WebRTC...? WebRTC 今までは満たすことのできなかったユースケースを WebRTCなどを用いて頑張って満たしていた。 しかしWebRTCはそもそもP2Pを前提に策定されているため、 サバクラ型にはfitせず、複雑になってしまったりする問題も・・・
1. WebSocket/WebRTCとの違いのまとめ Server <-> Client (サバクラ) Peer <-> Peer (P2P)
TCP like WebSocket WebRTC UDP like WebTransport WebRTC そういったケースがWebTransportで!!! 映像配信・クラウドゲーミング・ IoTなどの低遅延が求められるアプリケーション の希望の光!!!
1. WebSocket/WebRTCとの違いのまとめ Server <-> Client (サバクラ) Peer <-> Peer (P2P)
TCP like WebSocket WebRTC UDP like WebTransport WebRTC そういったケースがWebTransportで!!! 映像配信・クラウドゲーミング・ IoTなどの低遅延が求められるアプリケーション の希望の光!!! そしてさらに・・・
1. WebSocket/WebRTCとの違いのまとめ Server <-> Client (サバクラ) Peer <-> Peer (P2P)
TCP like WebTransport WebRTC UDP like WebTransport WebRTC もともとWebSocketで満たしていたユースケースも WebTransportで!! WebTransportはTCPlikeなユースケースもUDPlikeなユースケースも満たせる ように策定されている。
1. WebSocket/WebRTCとの違いのまとめ Server <-> Client (サバクラ) Peer <-> Peer (P2P)
TCP like WebTransport WebRTC (RTCQuicTransport) UDP like WebTransport WebRTC (RTCQuicTransport) さらにさらに・・・ WebRTCにもRTCQuicTransportというものを作ろうという動きがあります。 (WebRTCではSCTPとDTLSというプロトコルが複雑かつ遅かったためです。これを QUICに置き換えようという動きです。 )
1. QUICというプロトコル この動きの背景には・・・ QUIC というプロトコルの策定が進んできていたのが影響しています 4年ほど時間を掛けて策定が進んできた QUICがfixに向けて動き出した。 QUICを採用しているWebTransportもそれに応じて進んできた
1. QUICというプロトコル QUICとは UDP上にTCPの色々なしくみ・TLSの機能などを 載せた新しいプロトコル 引用: https://datatracker.ietf.org/meeting/98/materials/slides-98-edu-sessf-quic-tutorial/ 過去策定された色々なプロトコルの反省を 踏まえて策定された Reliable
UDP... SCTP...
2. WebTransport最新動向 2020年 6月 : Google Chrome M84からWebTransportのOrigin Trialの開始 8月
: Google Chrome M86からWebCodecsのOrigin Trialの開始 10月: TPAC2020 WebTransport MTG 10月: QUICのラストコール 11月: IETF2020 11月: Kranky geek 2020(WebRTC conference)
2. WebTransportのOrigin Trial開始(2020 5~6月) 正確には QuicTransport(WebTransportの軽量版)が Google Chromeで Origin Trial
開始 Github Issueとか bugs.chromium.orgでバグが議論されたり重要な APIの変更が報告されたりする
2. WebCodecsのOrigin Trial開始(2020 8月) WebTransportはTCP/UDP両ユースケース対応 注目されるのは映像や音声などのメディアデータ コーデックの低レベルAPIを触れると嬉しいよねってこ とでWebCodecsが登場。 WebTransportとWebCodecsを組み合わせてビ デオチャットアプリを作ってみた記事もあげている
のでみてね https://qiita.com/yuki_uchida/items/b177ec07ac0379950e58
2. TPAC 2020 WebTransport MTG (2020/10) WebTransportがテーマのMTGがTPACで開 催された(初?) ユースケースの確認や上がっている issueに
ついての議論が行われた。 引用: TPACのスライドのリンク https://docs.google.com/presentation/d/1xx1MLjxY-ZiWQBxivJCITmvKrHdW3AMuz-DxDOr Acdw/edit#slide=id.g9d9162b157_1_588
2. QUICのラストコール(2020/10) WebTransportではQUICプロトコルを採用している。 およそ4年間かけて使用策定がすすめられてきたQUICがついにfix... ドラフトのversionは32 にまでなった QUICがコア技術となっている WebTransportも 使用策定がしやすく。 今後、策定はより進んでいくはず。
https://tools.ietf.org/html/draft-ietf-quic-transport-32
2. IETF 2020 WebTransport MTG (2020/11) WebTransportがテーマのMTGがIETFで開催。 TPACと同様にユースケースの確認や上がっているissueについての議 論が行われた。 引用:IETFのスライドのリンク
https://datatracker.ietf.org/meeting/109/materials/slides-109-webtrans-ietf-109-webtrans-wg-slides-03 WebTransportとQuicTransportの APIの統合が発表されたり (引数に与えるURLで内部で dispatchしてくれるように)
2. Kranky Geek 2020 WebRTC Conference (2020/11) Kranky Geek は
WebRTCがメインのテーマのカンファレンス WebTransportはWebRTC Next Versionとしても期待されているので、質問コー ナーでは多くWebTransportについての質問がよせられていた => その内容は次のセクションで
3. いつ触るべきなの WebTransport
3. いつ触るべきなの WebTransport 個人的な主観ですが・・・ 映像配信・クラウドゲーム・IoTなど、低遅延通信のパ フォーマンスがそのままサービスの価値に直結してしまう ような企業でなければ当分触る必要なし
3.a. 各ブラウザベンダの雰囲気 Google Chrome Safari Firefox Microsoft Edge 前向き 様子見
様子見 様子見 *) Kranky geek 2020で行われたブラウザベンダセッションより。 *) 各社が正式な声明を出しているわけではなく、ディスカッションを通して感じた個人的な解釈なのでご注意く ださい 低レベルAPIがないと実現できないユース ケースがあるので進めていくよ 特に言及なし 大企業にしか扱えない様な APIにならなな いかは不安だけど改善はもちろん賛成 柔軟性は素晴しいけど検証中の技術
3.a. 各ブラウザベンダの雰囲気 Google Chrome Safari Firefox Microsoft Edge 前向き 様子見
様子見 様子見 Origin Trial 実施中 具体的な開発計画なし 具体的な開発計画なし 具体的な開発計画なし *) Kranky geek 2020で行われたブラウザベンダセッションより。 *) 各社が正式な声明を出しているわけではなく、ディスカッションを通して感じた個人的な解釈なのでご注意く ださい
3.b. 触ってみた所感 WebTransport datagramがウリだが、WebRTCやHLSなどではサポートされ ている仕組みがまだまだ実装されていない - 再送処理 - 輻輳制御 etc...
=> 今まで既存の実装に頼っていた仕組みを自前で実装する必要が出てく る。そしてそれをうまくやってくれるライブラリもまだまだ出てきていない
3.b. 触ってみた所感 WebTransport datagramがウリだが、WebRTCなどではサポートされている 仕組みがまだまだ実装されていない - 再送処理 - 輻輳制御 etc...
=> 今まで既存の実装に頼っていた仕組みを自前で実装する必要が出てく る。そしてそれをうまくやってくれるライブラリもまだまだ出てきていない 低レベルAPIの宿命・・・(柔軟性は増すが扱うのが難しい )
3.b. 触ってみた所感 映像の様なデータを送る際に必要な、パケット分割や再送制御など、軽いも のは実装してみたが、色々なテクニックの塊なので、ここらへんを自作するの は結構大変。 => プロトコルに詳しくて自作できる様な人材と余裕がある企業なら今からで も動けるかも WebTransportとWebCodecsを組み合わせてビデオチャットを実装してみる」という記事でそこらへん を書いてます
https://qiita.com/yuki_uchida/items/b177ec07ac0379950e58
3.b. 触ってみた所感 UDPが通らないような場合のフォールバックもまだ策定中 - FallbackTransport(Http2Transport) => 現状だと結局fallbackとしてWebSocket(etc)使うことに・・・
3.b. 触ってみた所感 既存のライブラリを使用した場合にパフォーマンスに懸念が残る - WebSocketやWebRTCに比べてCPU使用率が高い - 各コードがまだパフォーマンスチューニングされていない (Origin Trial中なので当然ですが )
- ブラウザの実装 - ライブラリ - 軽く調べてみると、100byteもないデータを送信するために 3%もCPUがくわれた。 - 複数人に送信したい&映像のような大きなデータを送りたいとなった時にキツイかも - Macbook Pro(2.9 GHz 6コアIntel Core i9) - aioquicをquicTransportサーバーで使用
3. つまり・・・ まずはGoogle Chromeが進めている Origin Trialが順調に進み、パフォーマンスの調査やコー ドの最適化が行われ、各ブラウザベンダが実装するまでは実用段階にはない。 プロトコルに詳しく、UDP上に再送処理などのいろいろな仕組み・WebTransportサーバーを自 作できるパワーを持ち、通信のパフォーマンスがサービスの価値に直結するような企業でなけ れば使うのが難しいのが現状
=> とはいえ、2,3年後にはどうなってるかわかりません。 => ライブラリなどが充実してくるまで期待して待ちましょう(ウォッチしておくと技術的に優位に立 てるかも?)
おわり