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
仕様策定中のプロトコルを Rust で書いてブラウザで動かしてみた
Search
yuki_uchida
June 25, 2024
3
3.2k
仕様策定中のプロトコルを Rust で書いてブラウザで動かしてみた
【増枠】2024年Rust Webアプリ開発の現在
https://findy.connpass.com/event/319829/
で利用した発表資料です。
yuki_uchida
June 25, 2024
Tweet
Share
More Decks by yuki_uchida
See All by yuki_uchida
Rustでマルチスレッドプログラミング! リアルタイム通信ではどのようにスレッドを立てるのか
yuki_uchida
8
6.7k
MoQとか勉強会#2 発表資料
yuki_uchida
2
1.7k
SkyWayが遭遇したWebRTC の可観測性に関する問題と開発者向け可視化サービス提供までの道のり
yuki_uchida
4
3.6k
技術発信を続けるためのTIPS
yuki_uchida
3
160
何かの技術の"専門家"になりたかったから技術調査チームを立ち上げてプロダクトに貢献した話
yuki_uchida
6
640
メソッドチェーンを使ってDataFrameの可読性と保守性を向上させよう
yuki_uchida
1
390
Media Over QuicTransportって知ってる?
yuki_uchida
0
550
WebRTCの歴史とこれから
yuki_uchida
0
1.3k
WebTransportのまとめと今後
yuki_uchida
5
1.5k
Featured
See All Featured
The Invisible Side of Design
smashingmag
299
50k
Optimising Largest Contentful Paint
csswizardry
37
3.2k
Making the Leap to Tech Lead
cromwellryan
133
9.3k
How GitHub (no longer) Works
holman
314
140k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
14
1.5k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2k
The Cost Of JavaScript in 2023
addyosmani
49
7.8k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Statistics for Hackers
jakevdp
799
220k
Faster Mobile Websites
deanohume
307
31k
Transcript
仕様策定中のプロトコルを Rustで書いてブラウザで動かしてみた 2024年Rust Webアプリ開発の現在 NTTコミュニケーションズ株式会社 内田 裕貴
内田 裕貴(Ucchy) X: @yuki_wtz NTTコミュニケーションズに2019年に新卒入社 WebRTC Platform SkyWayでDevOps/Researchエンジニア Rustは自由研究で使ってるくらいで詳しくない 好きなもの
ゲーム(League of Legends) コーヒー(中深煎) シーシャ メディア処理の技術 データサイエンス
今日話す内容 Media over QuicTransportについて Rustで書いてWebAssemblyで動かす 感想
Media over QuicTransport
HLSの安定性・WebRTCの低遅延性を 両立させるメディア配信プロトコル
HLSの安定性・WebRTCの低遅延性を 両立させるメディア配信プロトコル https://datatracker.ietf.org/meeting/interim-2023-moq- 08/session/moq
HLSの安定性・WebRTCの低遅延性を 両立させるメディア配信プロトコル QUIC/HTTP3/WebTransport などのモダンなプロトコルの上に構築されるプ ロトコル https://datatracker.ietf.org/meeting/interim-2023-moq- 08/session/moq
WebTransportについては こちらの記事を参照 Media over QuicTransportについては こちらのスライドを参照
Rustでプロトコルを実装して WebAssemblyでブラウザ上で動かす
Media over QuicTransport の構成
Media over QuicTransport の構成
moqt-core RustでMOQT Messageフォーマットやbytes文字列への相互変換処理を実装
moqt-core RustでMOQT Messageフォーマットやbytes文字列への相互変換処理を実装 https://datatracker.ietf.org/doc/draft-ietf-moq-transport/01/ 仕様には約15種類程度のMessageが存在
moqt-core RustでMOQT Messageフォーマットやbytes文字列への相互変換処理を実装 https://datatracker.ietf.org/doc/draft-ietf-moq-transport/01/ 仕様には約15種類程度のMessageが存在 MOQTはPubSubモデルを採用しており、 メディアはANNOUNCE -> SUBSCRIBEされる
None
MOQT Messageフォーマットの定義
MOQT Messageフォーマットの定義 パケットのbytes配列 <-> Rust Objectの相互変換処理
moqt-client MOQT CoreをJavaScriptから呼びだせるようにブリッジ層の役割を担う
moqt-client MOQT CoreをJavaScriptから呼びだせるようにブリッジ層の役割を担う wasm-bindgenでJSからRustのコードを呼び出せる様にbind websysでRustからJS(WebブラウザAPI)を呼び出せる様にbind
None
wasm-bindgenでjsからRustのコードを呼び出せる様に wasm-bindgenでjsからRustのコードを呼び出せる様に
wasm-bindgenでjsからRustのコードを呼び出せる様に wasm-bindgenでjsからRustのコードを呼び出せる様に web_sysでRustからWebブラウザAPIである WebTransportAPIを呼び出せる様に
frontend MOQT Clientのブリッジコードを呼び出してアプリケーションを実装
None
None
やってみた感想
やってみた感想 Client/Serverの両方でRustで書かれたMOQT Coreを呼び出すことで、MOQT Messageを二重実装しなくて済んだ
やってみた感想 Client/Serverの両方でRustで書かれたMOQT Coreを呼び出すことで、MOQT Messageを二重実装しなくて済んだ web-sysクレートを使ってブラウザAPIをRustから呼び出せる様にしたことで、js側 のコードが必要最小限になって済んだ
終わり X: @yuki_wtz (Follow me!)