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
610
Rustでマルチスレッドプログラミング! リアルタイム通信ではどのようにスレッドを立てるのか
yuki_uchida
8
8.7k
MoQとか勉強会#2 発表資料
yuki_uchida
2
3.6k
SkyWayが遭遇したWebRTC の可観測性に関する問題と開発者向け可視化サービス提供までの道のり
yuki_uchida
4
5.4k
技術発信を続けるためのTIPS
yuki_uchida
3
270
何かの技術の"専門家"になりたかったから技術調査チームを立ち上げてプロダクトに貢献した話
yuki_uchida
6
960
メソッドチェーンを使ってDataFrameの可読性と保守性を向上させよう
yuki_uchida
1
580
Media Over QuicTransportって知ってる?
yuki_uchida
0
780
WebRTCの歴史とこれから
yuki_uchida
0
1.6k
Featured
See All Featured
Designing for Performance
lara
612
70k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
Fantastic passwords and where to find them - at NoRuKo
philnash
53
4k
Building the Perfect Custom Keyboard
takai
2
900
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
560
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
490
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
HDC tutorial
michielstock
2
950
Ruling the World: When Life Gets Gamed
codingconduct
0
390
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
270
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
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!)