仕様策定中のプロトコルを Rust で書いてブラウザで動かしてみた
by
yuki_uchida
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
仕様策定中のプロトコルを Rustで書いてブラウザで動かしてみた 2024年Rust Webアプリ開発の現在 NTTコミュニケーションズ株式会社 内田 裕貴
Slide 2
Slide 2 text
内田 裕貴(Ucchy) X: @yuki_wtz NTTコミュニケーションズに2019年に新卒入社 WebRTC Platform SkyWayでDevOps/Researchエンジニア Rustは自由研究で使ってるくらいで詳しくない 好きなもの ゲーム(League of Legends) コーヒー(中深煎) シーシャ メディア処理の技術 データサイエンス
Slide 3
Slide 3 text
今日話す内容 Media over QuicTransportについて Rustで書いてWebAssemblyで動かす 感想
Slide 4
Slide 4 text
Media over QuicTransport
Slide 5
Slide 5 text
HLSの安定性・WebRTCの低遅延性を 両立させるメディア配信プロトコル
Slide 6
Slide 6 text
HLSの安定性・WebRTCの低遅延性を 両立させるメディア配信プロトコル https://datatracker.ietf.org/meeting/interim-2023-moq- 08/session/moq
Slide 7
Slide 7 text
HLSの安定性・WebRTCの低遅延性を 両立させるメディア配信プロトコル QUIC/HTTP3/WebTransport などのモダンなプロトコルの上に構築されるプ ロトコル https://datatracker.ietf.org/meeting/interim-2023-moq- 08/session/moq
Slide 8
Slide 8 text
WebTransportについては こちらの記事を参照 Media over QuicTransportについては こちらのスライドを参照
Slide 9
Slide 9 text
Rustでプロトコルを実装して WebAssemblyでブラウザ上で動かす
Slide 10
Slide 10 text
Media over QuicTransport の構成
Slide 11
Slide 11 text
Media over QuicTransport の構成
Slide 12
Slide 12 text
moqt-core RustでMOQT Messageフォーマットやbytes文字列への相互変換処理を実装
Slide 13
Slide 13 text
moqt-core RustでMOQT Messageフォーマットやbytes文字列への相互変換処理を実装 https://datatracker.ietf.org/doc/draft-ietf-moq-transport/01/ 仕様には約15種類程度のMessageが存在
Slide 14
Slide 14 text
moqt-core RustでMOQT Messageフォーマットやbytes文字列への相互変換処理を実装 https://datatracker.ietf.org/doc/draft-ietf-moq-transport/01/ 仕様には約15種類程度のMessageが存在 MOQTはPubSubモデルを採用しており、 メディアはANNOUNCE -> SUBSCRIBEされる
Slide 15
Slide 15 text
No content
Slide 16
Slide 16 text
MOQT Messageフォーマットの定義
Slide 17
Slide 17 text
MOQT Messageフォーマットの定義 パケットのbytes配列 <-> Rust Objectの相互変換処理
Slide 18
Slide 18 text
moqt-client MOQT CoreをJavaScriptから呼びだせるようにブリッジ層の役割を担う
Slide 19
Slide 19 text
moqt-client MOQT CoreをJavaScriptから呼びだせるようにブリッジ層の役割を担う wasm-bindgenでJSからRustのコードを呼び出せる様にbind websysでRustからJS(WebブラウザAPI)を呼び出せる様にbind
Slide 20
Slide 20 text
No content
Slide 21
Slide 21 text
wasm-bindgenでjsからRustのコードを呼び出せる様に wasm-bindgenでjsからRustのコードを呼び出せる様に
Slide 22
Slide 22 text
wasm-bindgenでjsからRustのコードを呼び出せる様に wasm-bindgenでjsからRustのコードを呼び出せる様に web_sysでRustからWebブラウザAPIである WebTransportAPIを呼び出せる様に
Slide 23
Slide 23 text
frontend MOQT Clientのブリッジコードを呼び出してアプリケーションを実装
Slide 24
Slide 24 text
No content
Slide 25
Slide 25 text
No content
Slide 26
Slide 26 text
やってみた感想
Slide 27
Slide 27 text
やってみた感想 Client/Serverの両方でRustで書かれたMOQT Coreを呼び出すことで、MOQT Messageを二重実装しなくて済んだ
Slide 28
Slide 28 text
やってみた感想 Client/Serverの両方でRustで書かれたMOQT Coreを呼び出すことで、MOQT Messageを二重実装しなくて済んだ web-sysクレートを使ってブラウザAPIをRustから呼び出せる様にしたことで、js側 のコードが必要最小限になって済んだ
Slide 29
Slide 29 text
終わり X: @yuki_wtz (Follow me!)