# MoQ の配信リレー、自分専用に切り出せるって知ってた？

こんにちは、しぃちゃんだよ！配信まわりで面白いニュースを見つけたから、さっそく紹介するね！

## なにが発表されたの？

Cloudflare のブログで、Media over QUIC(MoQ)向けの新しいプロビジョニング API が発表されたよ。この API を使うと、自分専用の隔離されたリレーを作って、誰が配信(publish)できて誰が視聴(subscribe)専用かを、トークンで細かくコントロールできるようになるの。

MoQ は、メディア配信のための Publish/Subscribe 方式のプロトコルで、今は IETF で標準化が進められているところなんだって。Cloudflare は去年、330 都市以上に広がる自社ネットワークのすべてのサーバーを MoQ のリレーにして、プロトコルを試せるオープンなアクセスを無料で提供していたの。

## 今までどうだったの？

去年公開されたそのオープンリレーには、認証やアクセス制御の仕組みがなかったんだって。だから、プロトコルを試したり検証したりするにはよかったけど、本番のアプリケーションで使うにはちょっと心もとなかったの。「誰でも配信できて誰でも見られる」状態だと、プロダクションで安心して使うのは難しいよね。

## これで何が変わるの？

新しいプロビジョニング API では、「リレー」と「トークン」という 2 つのリソースが登場するよ。

- **リレー**: 自分のアプリケーションのストリームを、他のアプリケーションから切り離す隔離されたスコープ
- **トークン**: 個々のクライアントに対して、配信・視聴・その両方といった特定の操作を許可する認証情報

これによって、自分のアプリケーション専用の配信環境を、他と混ざらない形で用意できるようになるよ。しかもトークンには有効期限を設定したり、あとから失効させたりできるから、配信者用と視聴者用で別々の認証情報を発行して、必要なくなったら個別に無効化する、みたいな運用がしやすくなったの。

## 深く潜ってみよう

面白いのは、この隔離のやり方だよ。Cloudflare は専用のサーバーやコンテナを新しく用意しているわけじゃなくて、既存のグローバルネットワーク上に「隔離されたスコープ」を作っているんだって。ブログの中では、新しい Web サーバーを起動するというより「バーチャルホストを追加する」ような感覚、と例えられているよ。だからリレーを作ってもリージョンを選んだり負荷分散を意識したりする必要はなくて、すぐにグローバルで使えるようになるの。

API での作成もシンプルだよ。リレーはこんな感じで作成できるの。

```
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/moq/relays" \
  -H "Authorization: Bearer $API_TOKEN" \
  -d '{"name": "Production Relay"}'
```

追加のトークンは、リレーごとに発行できるよ。

```
curl -X POST https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/moq/relays/$RELAY_ID/tokens \
  -H "Authorization: Bearer $API_TOKEN" \
  -d '{"operations": ["subscribe"], "expires_at": "2027-01-01T00:00:00Z"}'
```

作成したリレーには、配信・視聴の両方ができるトークンと、視聴専用のトークンがデフォルトで用意されるみたい。ffmpeg で撮った映像を moq-pub に流し込んで配信者用トークンで配信し、視聴者は moq-sub に視聴専用トークンを渡して見る、といった使い方が紹介されているよ。ダッシュボードからでも、Media > Realtime > MoQ Relay の画面で名前を決めるだけでリレーを作れるの。

対応しているプロトコルバージョンは draft-14 と draft-16 で、draft-16 では新しく 2 つの機能が使えるようになったよ。

- **PUBLISH オペレーション**: 視聴者からリクエストが来る前に、配信者側からトラックを送り始められる機能。購読の連鎖を待つ遅延がなくなるの
- **SUBSCRIBE_NAMESPACE**: ある名前空間に含まれるすべてのトラックをまとめて購読リクエストできる機能。ライブ配信中に新しく追加されるトラックも対象になるんだって

現時点ではトークンによる権限管理はリレー単位で、配信者・視聴者を分ける粒度なんだけど、Cloudflare は IETF や MoQ コミュニティともっと細かい権限モデルを検討中なんだって。この仕組みは「MoQ CDN Provisioning」という Internet-Draft にもまとめられていて、Cloudflare だけの独自仕様じゃなく、複数の CDN で共通に使えるプロビジョニングモデルを目指しているみたい。

料金面では、この API は MoQ のベータ期間中は利用規模に関わらず無料で使えるんだって。ただし今後 API 自体は変わっていく可能性があるから、最新情報はドキュメントで確認してね、とのことだよ。

## まとめ

- Cloudflare が MoQ 向けの新しいプロビジョニング API を公開。自分専用の隔離されたリレーを作れるようになった
- 「リレー」でアプリごとにスコープを分離、「トークン」で配信・視聴の権限や有効期限を個別に管理できる
- 隔離は既存のグローバルネットワーク上で行われるから、リージョン選択や負荷分散を意識せずすぐ使える
- draft-16 対応で PUBLISH オペレーションと SUBSCRIBE_NAMESPACE が利用可能に
- ベータ期間中は無料。IETF の Internet-Draft をベースにした、CDN 横断で使える標準化も見据えた設計

すでに MoQ のオープンリレーを試していた人はもちろん、本番環境でライブ配信基盤を作りたいエンジニアのみんなにとって、要チェックのアップデートだよ！
