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
630
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
970
メソッドチェーンを使ってDataFrameの可読性と保守性を向上させよう
yuki_uchida
1
580
Media Over QuicTransportって知ってる?
yuki_uchida
0
790
WebRTCの歴史とこれから
yuki_uchida
0
1.6k
Featured
See All Featured
[SF Ruby Conf 2025] Rails X
palkan
3
1.5k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
2
360
Scaling GitHub
holman
464
140k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
520
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Claude Code のすすめ
schroneko
67
230k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Agile that works and the tools we love
rasmusluckow
331
22k
Prompt Engineering for Job Search
mfonobong
0
520
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
Embracing the Ebb and Flow
colly
88
5.2k
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!)