1 min read

moqt-js を公開しました

MOQT (Media over QUIC Transport) をブラウザから利用するライブラリ moqt-js を OSS (Apache-2.0) として GitHubnpm に公開しました。また MOQT DevTools も合わせて公開しました。

moqt-js

moqt-js はブラウザから MOQT を利用できるプロトコルです。2026 年 1 月時点での最新仕様である MOQT draft 15 に対応しています。

ただ、これだけだと現実的に使えないので LOC (Low Overhead Container) と MSF (MOQT Streaming Format) にも対応しています。さらに高レベル API として WebCodecs API と MediaStream API を意識せずに利用できる仕組みも提供しています。

多くの仕組みに対応していますが、まだ 100% 対応ではないので、これから少しずつ対応を増やしていきます。

Vitest や Fast-Check を使ってしっかりテストをこなしていますし、今後は Playwright や Vitest Browse Mode も使ってテストを充実させていく予定です。

なぜ Wasm ではないのか

単にデバッグが大変だからです。また TypeScript (JS) だから性能が下がるということは基本的にありません。そもそも MOQT はプロトコルのパースとバッファリングがメインなので TypeScript で十分です。処理時間も基本的にエンコーダーやデコーダー処理の方が支配的です。時雨堂で提供するリレーサーバーは Python と Erlang/OTP になるので、Wasm の出番がないというのもあります。

MOQT DevTools

https://moqt-devtools.shiguredo.app/

MOQT をブラウザでも確認したいと思い、ブラウザ向けの開発ツールも作りました。中身は moqt-js をそのまま利用しています。ソースコードも moqt-js の devtools/ 以下にあります。

preact / signals / tailwind css / vite を利用して実装しており、とにかく軽く一通りの機能が試せるようになっています。開発用にサーバー証明書を base64 でエンコードしてハッシュした値を指定することもできるようにしてあります。

デバッグログや統計情報を沢山出力するようになっていますし、Copy URL で現在の設定を QueryString に反映して他の人に気軽に共有できるようになっています。

今後

Python で実装している MOQT Relay サーバーを気軽に利用できるようなサービスを提供予定です。今のところ Sora Labo に組み込むのが無難かな?と考えています。また moqt-js は認証周りの仕様が一切実装されていないのでそちらも実装していく予定です。

こつこつ情報も発進していきますので、興味がある人は時雨堂の Discord へ参加してみてください。https://discord.gg/shiguredo