LabHub

ブログ

WebRTC & リアルタイム通信 2026 完全ガイド — LiveKit · Daily · Agora · Twilio · Pion · Mediasoup · Jitsi · Janus · AWS IVS · Cloudflare Calls 徹底分析

한국어English日本語

プロローグ — Programmable Video の死と新しい秩序

2024 年 12 月 5 日、Twilio が Programmable Video を正式に終了した。かつて WebRTC PaaS の代名詞だった製品が新規登録を止めたのが 2024-03、そして正確に 9 か月後、既存ワークロードもすべて切り捨てられた。移行を先延ばしにしていた数千のアプリが、四半期のあいだに LiveKit · Daily · Agora · Vonage · Dolby.io · Zoom Video SDK のあいだで新しい巣を探し回った。

その空白に誰が入ったかが、すなわち 2026 年のリアルタイム通信の地図である。

本稿はその地図を端から端まで描く。RTCPeerConnection の 1 行コードから、9 プラットフォームの比較マトリクス、AI 音声エージェントとの統合、そして韓国・日本市場の事情まで。


1 章 · WebRTC が実際にしていること — 3 本の脚

WebRTC は魔法ではない。3 本の脚で立つ標準である。

[Browser A]                                     [Browser B]
   |                                                 |
   |  (1) Signaling — どう出会うかを決める               |
   |     (WebRTC の規定外 — WebSocket・SIP・任意)        |
   +---->  Signaling Server(アプリ側で運用) <--------+
   |                                                 |
   |  (2) ICE — どこへ接続するかの候補を集める            |
   +---->  STUN(自身のパブリック IP・ポートを知る)       |
   |     TURN(NAT 越え失敗時にリレー)                    |
   |                                                 |
   |  (3) Media — 実際に映像・音声・データを流す           |
   +-----------------DTLS-SRTP で暗号化-------------- +
                (P2P または SFU/MCU 経由)

3 本の脚の役割を覚えておくと道具選びが楽になる。

3 本の脚のうち 1 本でも欠ければ通信は成立しない。PaaS が売っているのは、この 3 本を「動く束」にまとめる労力そのものだ。


2 章 · RTCPeerConnection — コア API をひとページで

ブラウザが露出する表面は意外に小さい。中心は 3 つのオブジェクトだ。

最小の双方向例(シグナリングは擬似コード)。

// 両側共通のセットアップ
const pc = new RTCPeerConnection({
  iceServers: [
    { urls: 'stun:stun.l.google.com:19302' },
    { urls: 'turn:turn.example.com:3478', username: 'u', credential: 'p' },
  ],
})

pc.onicecandidate = (e) => e.candidate && signaling.send('ice', e.candidate)
pc.ontrack = (e) => (remoteVideo.srcObject = e.streams[0])

const stream = await navigator.mediaDevices.getUserMedia({ video: true, audio: true })
stream.getTracks().forEach((t) => pc.addTrack(t, stream))

// caller
const offer = await pc.createOffer()
await pc.setLocalDescription(offer)
signaling.send('sdp', offer)

// callee
signaling.on('sdp', async (sdp) => {
  await pc.setRemoteDescription(sdp)
  const answer = await pc.createAnswer()
  await pc.setLocalDescription(answer)
  signaling.send('sdp', answer)
})

40 行ほどで 1:1 通話が立ち上がる。問題はここからだ。3 人、30 人、300 人へと増えた瞬間に P2P 網を維持するコストが爆発する。だから次章が必要になる。


3 章 · トポロジー — Mesh と MCU と SFU の違い

3 種類のトポロジーがあり、2026 年現場ではほぼすべてのグループ通話が SFU を採用する。

Mesh(N:N の完全グラフ)
   A <----> B
   ^  \  / ^
   |   \/  |
   |   /\  |
   v  /  \ v
   D <----> C
   上下リンク: peer ごと O(N)、合計 O(N^2)
   長所: サーバコスト ゼロ、E2EE が自然
   短所: 4〜5 人を超えるとクライアントの CPU・帯域が爆発

MCU(Multipoint Conferencing Unit — サーバがデコード・ミックス・再エンコード)
   A -+
   B -+- [MCU: decode -> composite -> re-encode] -> 1 本の映像 -> 全員
   C -+
   D -+
   長所: クライアントの帯域は 1 ストリーム、旧端末互換
   短所: サーバ CPU が非常に高い、E2EE 不可

SFU(Selective Forwarding Unit — サーバはルーティングのみ)
   A -> [SFU] -> B, C, D
   B -> [SFU] -> A, C, D
   ...
   長所: サーバ CPU が軽く拡張容易、simulcast/SVC で受信者別の画質
   短所: クライアント下りは O(N)、E2EE は Insertable Streams で別途

2026 年に新規構築されるグループ通話で MCU が出てくることはほぼない。SFU が標準で、100 人を超える観衆モードは SFU + HLS/LL-HLS · WHEP のファンアウトが一般的だ。LiveKit · Mediasoup · Janus · Jitsi Videobridge · Agora · Daily · Cloudflare Calls いずれも SFU。


4 章 · WebRTC NV — 標準はどこまで来たか

WebRTC 1.0 は 2021-01 に W3C 勧告となり、以降の新機能はすべて「WebRTC NV(Next Version)」の名で W3C WebRTC ワーキンググループと IETF RTCWEB で進められてきた。2026 年時点で実務に効く項目を挙げる。

2024 年まで「実験」だったものが、2026 年には一斉に普及標準へと進んだことが重要だ。


5 章 · コーデック — Opus は神、映像は政治

音声には事実上選択肢がない。WebRTC 標準必須コーデックは Opus。8kHz 音声から 48kHz 音楽まで、可変ビットレート、低遅延。音声 AI エージェントでも Opus がそのまま使われる。

映像は政治である。

2026 年の既定推奨は、音声は Opus 単一、映像は simulcast で VP9 + H.264、AV1 はオプション。画面共有は VP9 か AV1 がテキスト描画に強い。


6 章 · ICE · STUN · TURN — もっともよく壊れるところ

WebRTC 運用でもっとも頻繁に壊れるのが ICE 候補収集だ。社内ネットワーク・企業ファイアウォール・キャリアグレード NAT・IPv6 半適用環境では、STUN だけで足りないケースがよく出る。

オープンソース標準は coturn。PaaS は自前のグローバル TURN を運用し、一定 GB まで無料に含めるか、または別途課金する。Cloudflare TURN(2023 開始)が価格破壊役となり、他 PaaS の TURN 単価も下がった。


7 章 · 9 プラットフォームのひと言要約

2026 年の実務候補をひと言ずつ。

次章から各プラットフォームを詳しく見る。


8 章 · LiveKit — OpenAI Realtime API の標準 transport

LiveKit は 2021 年に始まったオープンソースプロジェクトで、2024 年に OpenAI Realtime API が最初の公式 SDK として LiveKit Agents を選んだことで事実上の標準を固めた。

3 つのレイヤがひとつの束として動く。

コア API は Room 中心。

import { Room, RoomEvent } from 'livekit-client'

const room = new Room({ adaptiveStream: true, dynacast: true })
room
  .on(RoomEvent.TrackSubscribed, (track, pub, participant) => {
    if (track.kind === 'video') document.body.appendChild(track.attach())
  })
  .on(RoomEvent.ParticipantConnected, (p) => console.log('joined', p.identity))

await room.connect('wss://your.livekit.cloud', token)
await room.localParticipant.enableCameraAndMicrophone()

adaptiveStream が受信側の描画サイズに応じて SFU に別の simulcast レイヤを要求し、dynacast が誰も見ていないトラックの送出を自動停止する。両機能ともクラウド帯域コストに直接効く。


9 章 · Daily.co · Daily Bots · Pipecat — AI 音声にいちばん滑らかなスタック

Daily は 2016 年からマネージド WebRTC を売ってきた会社で、2024 年に Daily Bots とオープンソースの Pipecat フレームワークを束ねて「AI 通話を最も簡単に作れる場所」のポジションを固めた。

代表的な 1 行呼び出し。

import DailyIframe from '@daily-co/daily-js'
const call = DailyIframe.createFrame({ url: 'https://yourdomain.daily.co/room' })
call.join()

createFrame が iframe を作り、Daily の UI をまるごと埋め込む。UI カスタマイズが必要なら createCallObject モードに落として全トラックを直接制御する。

価格は分単位課金で、Free 10,000 分/月、Scale プラン 600 USD/月 + 使用量。他 PaaS と違い帯域ではなく参加者・分基準なので、予測しやすい。


10 章 · Agora — グローバルと中国を同時にカバーできる事実上唯一の選択肢

Agora は 2014 年に上海/シリコンバレーで始まった会社で、SoftBank 傘下の SD-RTN(Software-Defined Real-Time Network)という自社グローバル網を運用している。4.x SDK で世界平均 first-frame-time 76ms、5G 環境のグローバル e2e 平均 100ms 未満を謳う。

中国国内ワークロードを抱えるあらゆるグローバルサービスは、この時点で Agora を本気で検討することになる。他 PaaS は本土での安定運用が難しく、政府規制(ICP など)への対応経験も Agora がいちばん長い。

API は Channel モデル。

import AgoraRTC from 'agora-rtc-sdk-ng'

const client = AgoraRTC.createClient({ mode: 'rtc', codec: 'vp9' })
await client.join(appId, channel, token, uid)

const [mic, cam] = await Promise.all([
  AgoraRTC.createMicrophoneAudioTrack(),
  AgoraRTC.createCameraVideoTrack({ encoderConfig: '1080p_1' }),
])
await client.publish([mic, cam])

価格は分単位+画質別。1080p 映像が約 0.0099 USD/分、HD は 0.00399。グローバル・中国ルーティング費用は別途。他 PaaS より価格マトリクスは複雑だがボリュームディスカウントは厚め。


11 章 · Twilio Video の終了と移行先

2024-03-04、Twilio は Programmable Video の新規登録を停止した。2024-12-05、EOL。5 年間 WebRTC PaaS の事実上の標準だった製品が — Twilio Voice/Messaging は生き残ったが — 映像は死んだ。

公式移行ガイドが指したのは Zoom Video SDK だった。Zoom が移行パッケージとコード変換ツールを用意した。実際の市場はもっと分散した。

2025 年は移行の年であり、2026 年には上記 5 か所へトラフィックが分散して入ったことが市場データに表れた。


12 章 · Pion — Go で書かれた WebRTC スタック

Pion は Sean DuBois が 2018 年に始めた Go 製の WebRTC ライブラリだ。マネージドサービスではなく「Go から WebRTC を直接書けるようにする道具」。WebRTC を自前で実装すると決めたチームが最初に見る場所。

特徴。

代替として Rust 陣営には WebRTC-rs(2023 年開始、Pion API に近い形でポートしたもの)、C++ 陣営には Google の libwebrtc 本家がある。マネージド SFU を一から作る決定では、Pion・WebRTC-rs・libwebrtc のいずれかを選ぶのが自然。


13 章 · Mediasoup 3 — Router / Worker モデルの精髄

Mediasoup は José Luis Millán(元 SIP.js)が始めた Node.js + C++ の SFU ライブラリ。マネージドではなくライブラリ。自前で SFU を作るチームがいちばん選ぶ。

代表ユーザに Atlassian、Versatica、Whereby、LiveKit の一部などがある。マネージドを作るリソースのないチームが Mediasoup の上で自前 SFU を作り、その上に業務用ルームを乗せるパターン。


14 章 · Jitsi Meet — セルフホストの標準

Jitsi は BlueJimp が始め、2015 年に Atlassian が買収、2018 年に 8x8 へ移ったオープンソースの会議スタック。セルフホストで会議を立てるとき最も選ばれる束。

セルフホストの定石は docker-jitsi-meet 一式。1 つの VM に 1 コマンドで上がる。セキュリティ要件が高い政府・医療・教育で最もよく見る。


15 章 · Janus Gateway — モジュラーゲートウェイの精髄

Janus はイタリアの Meetecho が作った C ベースの WebRTC ゲートウェイ。SFU・MCU・SIP gateway・録画・配信・NoSIP をプラグインで差し替える構造。Jitsi が会議特化なら、Janus は「WebRTC を何かに接続するための汎用ゲートウェイ」に近い。

主要プラグイン。

Discord の音声チャンネル時代(2017〜2020)、Slack Huddle の初期、Microsoft Teams の一部分岐などが Janus またはそのフォークを使ったと公開されている。自由度が最も高く、運用難度も高い。


16 章 · AWS IVS Real-Time と Cloudflare Calls

マネージド SFU の最新の 2 軸はクラウド事業者から出てきた。

AWS IVS(Interactive Video Service) は Twitch のインフラを AWS 製品として借り直したもの。2020 年にライブ配信専用モードで出発し、2023-08 に IVS Real-Time が GA して多人数ホスト(stage)機能が加わった。

価格は Stage が 0.0149 USD/分/参加者、Channel は視聴時間 + エンコード時間で分割。

Cloudflare Calls(Realtime SFU) は 2023-11 にベータ、2024-09 に GA。1 行の価格表が衝撃だった。

この価格圧力が他 PaaS の値札を引き下げた。Cloudflare は Calls の上で WebRTC WHIP/WHEP ゲートウェイも合わせて運営している。


17 章 · OpenAI Realtime API · Claude voice · Cartesia · ElevenLabs — AI 音声の transport

2024 年 10 月、OpenAI が Realtime API を公開した。中心的な変化は「GPT-4o が初めてテキストではなく音声として直接聞き、直接話す」ことだった。これ以前の音声エージェントは STT → LLM → TTS の 3 モデル直列だったが、Realtime は 3 段を GPT-4o の中にひとつにまとめた。

ここで決定的だったのが LiveKit。OpenAI が公式 SDK を LiveKit Agents で組んだ結果、LiveKit が事実上の標準 transport になった。WebSocket 直結も可能だが、本番運用ではほぼ全員 LiveKit Agents を経由して SFU に乗せる。

同時期に出てきた競合。

WebRTC の P95 e2e 遅延が 200ms 内に収まる条件で、AI 音声のユーザ体感遅延(話し終わり→次の発話開始)を 500ms 内に収めるのが 2026 年の標準目標になった。それを可能にしたのが WebRTC 標準 + 現代 AI モデルの組み合わせである。


18 章 · WHIP · WHEP — ライブ配信が WebRTC へ移ってくる

長らくライブ配信は RTMP push と HLS pull の組だった。エンコーダ(OBS)が RTMP でメディアサーバに push し、視聴者は HLS で pull。遅延は通常 6〜30 秒。

2022 年に IETF が WHIP(WebRTC-HTTP Ingest Protocol)と WHEP(WebRTC-HTTP Egress Protocol)の標準化を始め、その組を置き換え始めた。鍵はシンプルさにある。

この 1 回の POST のおかげで、ingest と egress が同じ WebRTC 上に統合された。遅延も 1〜3 秒水準に落ちる。

2026 年の対応状況。

RTMP は死んでいないが、2030 年頃には新規システムのほぼすべてが WHIP/WHEP へ移るというのが標準陣営のコンセンサス。


19 章 · 韓国と日本のリアルタイム通信市場

韓国・日本はグローバル PaaS に加えてローカル事業者が強い市場だ。

韓国 — NHN TalkN、NCP Real-Time Comms、KakaoTalk 音声

日本 — Skyway(NTT コミュニケーションズ)、Yahoo!Japan、NTT-X

日本は Skyway が固く、グローバル PaaS のシェアは韓国より低めだ。韓国はグローバル PaaS(とくに Zoom · Google Meet · Agora · LiveKit)の浸透が速い。


20 章 · 意思決定マトリクス — どこで何を使うか

2026 年 5 月時点のシナリオ別推奨。

このマトリクスは万能ではない。価格、チームの言語スタック、運用人員、データガバナンス、政府認証がすべて変数だ。それでも候補を絞る初手としては十分使える。


21 章 · 運用の落とし穴 — 実際に壊れるところ

マネージドでもセルフホストでも、運用で壊れる場所は似通っている。

運用マニュアルの標準は — 「P95 遅延、接続失敗率、TURN 使用率、端末別エンコーダフォールバック比率」の 4 つのグラフを常時掲示すること。


22 章 · セキュリティ — DTLS-SRTP、E2EE、ワークフロー

WebRTC の既定セキュリティは強い。すべてのメディアが DTLS-SRTP で暗号化され、鍵が SDP に露出しない。標準そのものに「暗号化オフ」のオプションは存在しない。

問題は SFU。メディアをルーティングするには DTLS-SRTP を 1 度解く必要があり、つまり SFU 運用者は平文メディアを見られる位置にいる。真の E2EE が必要なら、Insertable Streams / RTCRtpScriptTransform で SFU の前にもう一度暗号化する。

E2EE を有効にした瞬間に、サーバサイド録画・サーバサイド字幕・SFU トランスコードがすべて不能になる。このトレードオフは最初から設計に入れる。

その他に気を配るべきこと。


23 章 · 未来 — WebTransport · QUIC · クラウドゲーミング隣接

WebRTC の隣で、似た問題を別の方法で解く標準が育っている。

WebRTC が消えるわけではない。ただ「特定のワークロードでは WebRTC は重い」という認識が 5 年で固まり、その隣で WebTransport · MoQ が育っている。2030 年頃には、通話は依然 WebRTC、ライブ・ゲーム・メッセージは WebTransport · MoQ — そんな配置になる可能性が高い。


24 章 · 結び — ひと言の推奨

2026 年に新しくリアルタイム通信を始めるチームへ、ひと言で勧めるなら。

標準は安定した。道具は十分多様だ。残るのは — 自分たちのワークロードに合う束を選び、P95 遅延と運用グラフを常に画面に出しておくこと。


References

コメント

まだコメントはありません。

ログインするとコメントできます