Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
仕様策定中のプロトコルを Rust で書いてブラウザで動かしてみた
Search
yuki_uchida
June 25, 2024
5.1k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
仕様策定中のプロトコルを Rust で書いてブラウザで動かしてみた
【増枠】2024年Rust Webアプリ開発の現在
https://findy.connpass.com/event/319829/
で利用した発表資料です。
yuki_uchida
June 25, 2024
More Decks by yuki_uchida
See All by yuki_uchida
Media over QUICによる超低遅延ライブ配信について
yuki_uchida
0
560
Rustでマルチスレッドプログラミング! リアルタイム通信ではどのようにスレッドを立てるのか
yuki_uchida
8
8.6k
MoQとか勉強会#2 発表資料
yuki_uchida
2
3.5k
SkyWayが遭遇したWebRTC の可観測性に関する問題と開発者向け可視化サービス提供までの道のり
yuki_uchida
4
5.3k
技術発信を続けるためのTIPS
yuki_uchida
3
270
何かの技術の"専門家"になりたかったから技術調査チームを立ち上げてプロダクトに貢献した話
yuki_uchida
6
950
メソッドチェーンを使ってDataFrameの可読性と保守性を向上させよう
yuki_uchida
1
570
Media Over QuicTransportって知ってる?
yuki_uchida
0
780
WebRTCの歴史とこれから
yuki_uchida
0
1.6k
Featured
See All Featured
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
The agentic SEO stack - context over prompts
schlessera
0
940
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
600
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
310
A designer walks into a library…
pauljervisheath
211
25k
The Invisible Side of Design
smashingmag
301
52k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
910
Why Our Code Smells
bkeepers
PRO
340
58k
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!)