Agora SDKは、Agoraが運営する通信網SD-RTNの上で、Webやスマートフォンのアプリに映像・音声通話やライブ配信を組み込むためのSDKです。シグナリングやメディア中継のサーバーをAgora側が持つため、開発者はチャンネルに参加してトラックを公開・購読するコードと、トークンを発行するサーバーだけを書きます。この記事では、Web SDK 4.x系での実装手順、本番向けのトークン発行、合計解像度で決まる分単位の料金と試算、課金区分を下げる設定、国産のSkyWayとの選び分けまでを公式ドキュメントに沿って整理します。
まとめ:Agora SDKは世界規模の通信網を分単位で借りる映像通話の部品
Agora SDKの役割は、映像通話のサーバー群を自前で持たずに、参加者1人あたりの利用分数だけで支払う形にすることです。月額の基本料は無く、毎月1万分の無料枠があります。現行のWeb SDKはnpmのagora-rtc-sdk-ngで、2026年10月時点の最新は4.24.9でした。
本番ではApp Certificateを有効にし、自社サーバーでトークンを発行してブラウザへ渡します。料金は「各参加者が購読する映像の合計解像度」で区分が決まるため、多人数の会議では受信側の解像度を絞る設計が費用を左右する仕組みです。海外拠点を含む通話や利用量が月ごとに大きく変わるサービスには向き、国内完結で契約窓口を日本語で揃えたい業務アプリでは、月額固定のSkyWayと見比べてから決めます。
Agora SDKの提供元とSD-RTNの通信網、Web SDK 4.x系の構成
Agoraの名前で検索すると、旧版のWeb SDKや廃止済みのパッケージを使った記事が混ざります。まず現行の範囲を押さえます。
200以上の国と地域を結ぶSD-RTNと日本での販売体制の経緯
Agoraの映像・音声は、自社の通信網SD-RTN(Software-Defined Real-Time Network)を通ります。公式ページは、200以上の国と地域をカバーし、遅延は400ms以下、稼働率は99.99%としています。いずれもベンダー自身の公表値で、測定条件は示されていません。社内資料に数値を転記するときは「Agora公表値」と注記してください。
日本での販売は、2020年6月の発表でブイキューブが独占再販パートナーとして提携範囲を広げ、販売・マーケティング・技術サポートを担うとされました。円建ての請求や日本語の窓口を求める発注側には、この経路があることを伝えます。ただし現在の契約条件は発表時点から変わっている可能性があるため、見積もりの前に窓口へ確認します。
agora-rtc-sdk-ngとagora-tokenの実装上の役割分担
ブラウザ側で使うのはagora-rtc-sdk-ngです。npmレジストリでは2026年10月13日に4.24.9が公開されていました。サーバー側でトークンを作るのはagora-tokenで、同じく2026年10月時点の最新は2.0.7です。以前のagora-access-tokenはnpm上で非推奨とされ、agora-tokenへの移行が案内されています。
検索で見つけたコードにAgoraRTC.createStreamやagora-access-tokenが出てきたら、旧版の記事です。現行版は「クライアント」「トラック」「チャンネル」の3つで組み立てる形に変わっているため、移植ではなく書き直しで見積もります。公式の実装サンプルはAPI-Examples-Webにまとまった形で掲載されていますので、実装時に参照してください。WebRTCそのものの仕組みはWebRTCのICE・TURNとSFU選定で扱っています。
Agora Web SDKでチャンネルに参加し映像を送受信する実装手順
公式のクイックスタートはAgora Consoleで作る一時トークンで始まります。動作確認には便利ですが、本番ではトークンサーバーが必要です。最初から本番の形で組みます。
App Certificateを有効にしてNode.jsでトークンを返すサーバー実装
トークンサーバーのガイドでは、Agora ConsoleでプロジェクトのApp Certificateを有効にし、App ID・App Certificate・チャンネル名・UID・ロール・有効期限からトークンを作ります。有効期限の上限は24時間です。Node.js用の実装はAgoraIO/ToolsのDynamicKeyで公開されており、npmのagora-tokenはその配布版です。次の例では、ログイン済みの利用者にだけトークンを発行する形で実装しています。
// npm i express agora-token
const express = require("express");
const { RtcTokenBuilder, RtcRole } = require("agora-token");
const appId = process.env.AGORA_APP_ID;
const appCertificate = process.env.AGORA_APP_CERTIFICATE; // ブラウザには渡さない
const app = express();
app.use(express.json());
app.post("/api/agora/token", (req, res) => {
const user = req.session?.user; // 自社のログイン処理で確認済みの利用者
if (!user) return res.status(401).end();
const channelName = req.body.channelName; // 予約IDなど、本人が入れるチャンネルだけを許す
const uid = user.agoraUid; // 利用者ごとに固定した32bit整数
const expire = 60 * 60; // 1時間(上限は24時間)
const token = RtcTokenBuilder.buildTokenWithUid(
appId, appCertificate, channelName, uid,
RtcRole.PUBLISHER, expire, expire
);
res.json({ appId, channelName, uid, token });
});
app.listen(8080);
引数の最後の2つは、トークン全体の期限と権限の期限です。ソースのコメントでは、権限の期限はトークンの期限を超えられないとされています。ロールはRtcRole.PUBLISHERで足ります。SUBSCRIBERは、Co-hostの認証をサポートに依頼して有効にしない限り、PUBLISHERと同じ権限として扱われるからです。視聴だけに制限したい場合は、ロールではなくクライアント側の役割と、チャンネル名の発行条件で絞ります。
createClient・join・publish・subscribeで映像送受信を実装
Web SDKのクイックスタートの流れに、上のサーバーから取ったトークンを当てはめた形です。Web SDKはHTTPSとhttp://localhostでしか動かないため、検証環境にもHTTPSを用意します。
// npm i agora-rtc-sdk-ng
import AgoraRTC from "agora-rtc-sdk-ng";
const res = await fetch("/api/agora/token", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ channelName: "consult-20261102-001" }),
});
const { appId, channelName, uid, token } = await res.json();
// 通話用途は mode: "rtc"(配信は "live" と host/audience の役割を使う)
const client = AgoraRTC.createClient({ mode: "rtc", codec: "vp8" });
// 相手の公開を購読して再生する
client.on("user-published", async (user, mediaType) => {
await client.subscribe(user, mediaType);
if (mediaType === "video") user.videoTrack.play("remote-video");
if (mediaType === "audio") user.audioTrack.play();
});
await client.join(appId, channelName, token, uid);
const mic = await AgoraRTC.createMicrophoneAudioTrack();
const cam = await AgoraRTC.createCameraVideoTrack({ encoderConfig: "720p_2" }); // 1280×720・30fps
cam.play("local-video");
await client.publish([mic, cam]);
// 退出時はトラックを閉じてからチャンネルを離れる
async function leave() {
mic.close();
cam.close();
await client.leave();
}
joinの引数はApp ID・チャンネル名・トークン・UIDの順で、トークン発行時のチャンネル名とUIDと一致しないと参加できません。user-publishedは映像と音声で別々に来るため、mediaTypeで分けて再生します。相手が配信を止めたときはuser-unpublishedが来るので、画面の枠を片付ける処理をそこに置きます。
token-privilege-will-expireで更新する24時間上限の運用
Web SDK 4.24.9の型定義では、トークンの期限30秒前にtoken-privilege-will-expire、切れた時点でtoken-privilege-did-expireが発火します。前者で新しいトークンを取り、client.renewToken()で差し替えれば通話は途切れません。
client.on("token-privilege-will-expire", async () => {
const r = await fetch("/api/agora/token", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ channelName }),
});
const { token: next } = await r.json();
await client.renewToken(next);
});
トークンサーバーのガイドによると、期限が切れても権限が残っている間はチャンネルに留まれますが、一度切断されると期限切れのトークンでは同じチャンネルに戻れません。窓口端末や見守りカメラのように長時間つなぐ用途では、この更新処理を最初から入れておきます。入れ忘れると、回線が一瞬切れただけで再接続できない障害になります。
Agoraの料金を合計解像度と標準分の換算で見積もる手順と試算
Agoraの費用は基本料ではなく、参加者ごとの利用分数で決まります。単価は「何を何本購読しているか」で変わります。
HDは1分を標準4分と数える解像度区分と毎月1万分の無料枠の換算
料金のリファレンスでは、各参加者が購読するすべての映像の解像度を合計し、その値で区分を決めます。音声と映像を同時に購読した時間は映像として数えられ、何も購読していなくてもチャンネル内の音声の利用時間は発生します。単価は料金ページの標準価格で、2026年11月時点の値です。
| 区分 | 合計解像度 | 標準分への換算 | 1,000分あたり |
|---|---|---|---|
| Audio | 映像なし | 1分=1分 | 0.99ドル |
| HD | 921,600以下(1280×720まで) | 1分=4分 | 3.99ドル |
| Full HD | 2,073,600以下(1920×1080まで) | 1分=9分 | 8.99ドル |
| 2K | 3,686,400以下(2560×1440まで) | 1分=16分 | 15.99ドル |
| 2K+ | 3,686,400超 | 1分=36分 | 35.99ドル |
無料枠は標準分で毎月10,000分です。HDの映像なら1分を4分と数えるため、実質2,500分ぶんにあたります。有料のパッケージを買うと無料枠は割引として価格に含まれ、別枠の1万分は付かないとされています。検証用のプロジェクトと本番用を分けて契約形態を決めてください。
1対1面談と4人会議の2パターンで購読解像度から月額を試算した結果
区分は合計解像度で決まるため、同じ720pでも人数が増えると単価が跳ねます。ここでは標準価格で概算し、無料枠と為替の変動は除いています。円換算は1ドル150円の仮定です。
| 利用パターン | 1人が購読する合計解像度 | 区分 | 利用分数(月) | 月額の概算 |
|---|---|---|---|---|
| 1対1面談30分×月2,000件、720p | 921,600(1本) | HD | 120,000分 | 約479ドル(約7.2万円) |
| 4人会議60分×月100回、全員720p | 2,764,800(3本) | 2K | 24,000分 | 約384ドル(約5.8万円) |
| 同じ4人会議、受信を640×360に絞る | 691,200(3本) | HD | 24,000分 | 約96ドル(約1.4万円) |
4人会議では、利用分数が1対1面談の5分の1なのに月額はほぼ同じです。720pの映像を3本受けると合計が2,073,600を超え、2Kの単価が掛かるためです。受信側を640×360に絞れば同じ会議が4分の1の費用に下がります。見積もりでは、人数と分数だけでなく「各参加者に何本の映像をどの解像度で見せる画面か」を要件として先に決めます。
多人数会議のデュアルストリームと受信画質の指定で課金区分を下げる設定
受信の解像度を下げる手段が、送信側のデュアルストリームです。送信者が高画質と低画質の2本を出し、受信者が相手ごとにどちらを受けるかを選びます。型定義では、低画質の既定は160×120・50Kbps・15fpsで、setLowStreamParameterで変えられます。
// 送信側:低画質ストリームを640×360で同時に出す
client.setLowStreamParameter({ width: 640, height: 360, framerate: 15, bitrate: 400 });
await client.enableDualStream();
// 受信側:発言中の1人だけ高画質(0)、他の参加者は低画質(1)で受ける
async function focusSpeaker(speakerUid, uids) {
for (const uid of uids) {
await client.setRemoteVideoStreamType(uid, uid === speakerUid ? 0 : 1);
}
}
発言者だけ720pで受け、残り2人を640×360にすると、合計は1,382,400でFull HDの区分です。全員720pの2Kと比べると、課金区分は1段下です。型定義の注記では、端末やブラウザが解像度を調整した場合は実際の解像度で課金されるとされています。設定値だけを信じず、検証環境のAgora Consoleで利用分数の内訳を一度確かめてから単価を見積もりに載せます。
Agora SDKとSkyWayの選び分けと採用を見送る条件
Agora SDKも、通話アプリの完成品ではなく、通信網と部品の提供です。この前提で、国産の候補と比べて採否を分けます。
海外拠点との通話と月ごとに変わる利用量でAgora SDKを採用する基準
採用するのは、海外の拠点や利用者と通話する案件と、利用量が月によって大きく変わるサービスです。SD-RTNは200以上の国と地域をカバーするとされ、月額の基本料が無いため、利用の少ない月は無料枠の範囲で収まります。該当する案件は、オンライン英会話、海外工場の遠隔立ち会い、イベント期間だけ使う配信などです。国内からの接続に限りたい場合は、AgoraRTC.setArea({ areaCode: "JAPAN" })で接続先のサーバーを日本の地域に絞れます。
条件は、受信の解像度を要件として決められること、利用者の認証とトークン発行を自社システムが持てること、ドル建ての従量課金を発注側の経理が受け入れられることの3つです。予約システムとの連携、トークン発行サーバー、録画の保管まで含めた映像通話の組み込みは、動画配信システム開発として要件定義から引き受けています。
国内完結の業務アプリと数百人規模の一斉配信でAgora SDKを見送る判断
見送るのは、利用者が国内に限られ、契約・請求・サポートを日本語と円建てで揃えたい業務アプリです。この場合は国産WebRTC SDKのSkyWayが候補になります。SkyWayは商用で月額110,000円の基本料が掛かる一方、通信料はGB単位です。上の1対1面談の試算ならAgoraは約7.2万円で、SkyWayの基本料より安く収まります。ただし稟議で「ドル建て・海外事業者」が通らない組織では、価格差より契約の通しやすさが採用を判断する際の決め手です。AWSを既に使っている組織ならAmazon Chime SDKの会議機能、SFUを自社で運用できるならLiveKitのクラウド版とセルフホストも比較に入れます。
もう1つは、数百人以上へ同じ映像を一方向に届ける配信です。Agoraのライブ配信では視聴者も分数課金の対象になるため、人数に比例して費用が増えます。双方向のやりとりが要らないなら、LL-HLS配信までのライブ配信構築のほうが構成も単価も素直です。社内会議の置き換えだけが目的なら、既製のWeb会議サービスを契約するほうが早く、SDKで作る理由はありません。
よくある質問
Agora SDKの導入を検討する段階で出てくる質問に、公式ドキュメントと料金ページの記述をもとに答えます。
Agora SDKは無料で使えますか?
毎月10,000分の無料枠があり、クレジットカードの登録なしで始められると料金ページに書かれています。ただし無料枠は標準分(音声の1分)で数えるため、HDの映像通話なら月2,500分ぶんです。2人で30分の面談なら約40回で使い切ります。検証や試作は無料枠の範囲で進められますが、商用の利用量を見込むなら従量課金の試算が要ります。
Agora SDKとWebRTCの違いは何ですか?
WebRTCはブラウザに備わった通信の仕組みで、使うにはシグナリング、STUN・TURN、多人数ならSFUのサーバーを自前で用意します。Agora SDKはこれらをAgoraの通信網SD-RTNが肩代わりし、開発者はチャンネルへの参加とトラックの公開・購読だけを書けばよい形にしたものです。サーバー運用の手間が消える代わりに、利用分数に応じた費用と、Agoraへの依存が生まれます。
Agoraのトークンの有効期限は何時間までですか?
トークンサーバーのガイドでは、有効期限の上限は24時間です。期限の30秒前にWeb SDKがtoken-privilege-will-expireを発火するので、そこでサーバーから新しいトークンを取り、renewTokenで差し替えます。期限切れのトークンでは切断後に同じチャンネルへ戻れないため、長時間の通話では更新処理が必須です。
Agora SDKはスマートフォンアプリでも使えますか?
使えます。Agoraの日本語の製品ページでは、Web以外にAndroid・iOS・Windows・Flutter・React Native・Unity向けのVideo SDKが案内されています。ブラウザで動かす場合、Web SDKはHTTPSでしか動かない点と、公式が最新の安定版のChromeを強く推奨している点を要件定義の段階で共有してください。
Agora SDKの料金はどう計算されますか?
参加者ごとの利用分数に、購読している映像の合計解像度で決まる単価を掛けます。921,600以下はHDで1,000分あたり3.99ドル、2,073,600以下はFull HDで8.99ドルです。720pの映像を3本受けると合計が2Kの区分に入り、15.99ドルになります。多人数の画面では、発言者以外を低画質で受ける設定で区分を下げられます。
関連記事
- SkyWayとは:国産WebRTC SDKで映像通話を組み込む手順と料金・TURN設計:月額固定と国内窓口で比べる国産の通話SDKです。
- WebRTCとは?P2Pの仕組み・ICE/STUN/TURNからSFU選定・実装・運用判断まで実装者向けに解説:Agoraが肩代わりする通信の仕組みを押さえられます。
- ボイスチャットの実装方法|WebRTC自作とVivox・Photon Voice等SDKの選び方【2026年10月】:音声だけの用途で他のSDKと比べる材料です。
- 動画配信システムとは?仕組み・配信方式と、ASP/自社開発の選び方を受託開発目線で解説:通話と配信を含めた動画システム全体の選び方です。