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
540
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
Odyssey Design
rkendrick25
PRO
2
810
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Music & Morning Musume
bryan
48
7.4k
How to make the Groovebox
asonas
2
2.4k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
For a Future-Friendly Web
brad_frost
183
10k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
420
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
BBQ
matthewcrist
89
10k
What's in a price? How to price your products and services
michaelherold
247
13k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
700
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!)