SkyWay vs. Twilio Video
目次
ビデオ通話サービスを構築するための API について調べているときに、SkyWay と Twilio Video を実際に試してみたので、それぞれの長所・短所などを書いていこうと思います。
それぞれの概要
SkyWay とは
NTT コミュニケーションズが提供している、音声・ビデオ通話プラットフォームです。2013年頃から無償サービスとして開始し、2017年に有償化したようです。
ただ、接続回数50万回/月まで、データ転送量500GB/月までなら無償なので、小規模なアプリなら無償で問題無いでしょう。
日本人エンジニアがサポートしてくれるところをメリットに感じる人もいるかもしれません。
Twilio Video とは
Twilio といえば、音声通話が圧倒的に有名だと思いますが、Twilio Video はビデオ通話のプラットフォームです。
音声と一緒で、完全従量課金です。
Twilio は、現在業績好調で、新型コロナの影響でビデオ・音声通話の需要も伸びていると思いますし、今後もさらに伸びそうな感じです。
機能・品質の比較
機能は正直言って、それほど大きな違いはありません。詳細は以下のページを参照して下さい。
- 機能 | SkyWay(アプリやWebサービスに、ビデオ・音声通話をかんたんに導入・実装できるSDK)
- Twilio Video | Video SDKs for iOS, Android, JavaScript and web-based video
品質は、両方ともそこまで変わらないか、若干 SkyWay が良いかなと思います。SkyWay は当然国内にサーバーがあるので、ビデオチャット参加者が全員日本在住の人であれば、メリットを享受できると思います。
値段の比較
公式ページは以下の通りです。
- 料金 | SkyWay(アプリやWebサービスに、ビデオ・音声通話をかんたんに導入・実装できるSDK)
- Twilio Video – Video SDKs for iOS, Android, and JavaScript
それぞれを詳しく見ていきます。
SkyWay
SkyWay は、無償プランと有償プランがあり、以下の範囲であれば無償プランで問題無いです。
- 接続回数50万回/月まで
- データ転送量500GB/月まで
有償プランは10万円/月の基本料金がかかり、データ転送料は40円/GBです。
データ転送量ですが、参考までに私が3人でビデオチャットを2時間くらいやって、転送量が5GBくらいでした(仮に有償プランであれば200円)。小規模なアプリなどであれば無償で収まると思います。
料金ページの「料金モデルケース(1時間あたり)」を見ると、通信量は結構少なく済むように見えますが、解像度やビットレートを明示的に落としたりしないと、こんなに小さな通信量にはならないと思います。(本ページ末尾に追記あり)
(ここから余談)ちなみに・・・以前の料金ページは「接続回数50万回まで、データ転送量500GBまで無料」という感じの表記でした。「/月」という部分が無かったので、てっきり累計で500GBに達したら10万円/月の有償プランに移行しなければいけないのか、と思って Twilio Video を調べ始めたという経緯があります。
Wayback Machine で確認しました。画面には 404 と表示されますが、ソースを見ると「500GBまで」という表記が確認出来ます。
https://web.archive.org/web/20200427143840/http://webrtc.ecl.ntt.com/pricing.html
Twilio Video
通信量では無く分単位の課金のため、分かりやすいです。
ビデオチャット部屋の大きさ、通信の仕方によって値段は異なります。一番安いのは Peer-to-peer Room で、SkyWay の mesh 方式に相当するものだと思ってますが、こちらは $0.0015/min/person です。
先ほどの3人でのビデオチャット例ですと、$0.0015 * 120分 * 3人 = $0.54 = 約60円です。SkyWay の半額以下です。
まとめると
基本的には無償プランで収まるなら SkyWay が良い。収まらないなら Twilio Video となると思います。
(値段という観点で)それ以外に SkyWay を選ぶ場面が無いかも色々考えてみました。SkyWay は人数では無く転送量での課金ですので、大人数だけど転送量が少ない、というケースでは、SkyWay を選ぶメリットがあるかもしれません。大人数向けのオンライン講義で、先生のみビデオ通話とか?
ただ、やはりどう考えても価格面では Twilio Video の方が有利です。
SDK、ドキュメント
どちらも JavaScript、iOS、Android の SDK があり、ドキュメントも問題無く揃っています。私自身は JavaScript SDK しか触っていませんので、以下、その観点で比較します。
SkyWay
シンプルなサンプルコードが何種類かあり、それらをすぐ動かす事が出来ます。また、それらをカスタマイズすれば、簡単にビデオ通話アプリが作れます。
skyway-js-sdk/examples at master · skyway/skyway-js-sdk
ただ、サンプルアプリは、見栄えがしょぼいので、その辺は自分で綺麗にする必要があります。あと、ベタな JavaScript ですので、React などに載せる場合は、大きく書き換える必要があります。
ドキュメントは、シンプルで分かりやすいです。JavaScript SDK にはそこまで多くのクラスも無いので、理解も容易です。
トップ | ドキュメント | SkyWay(アプリやWebサービスに、ビデオ・音声通話をかんたんに導入・実装できるSDK)
Twilio Video
React で作られたサンプルアプリがあり、見栄えも綺麗です。
ただ、その分複雑なので、API を理解したい場合は、API ドキュメントのサンプルコード片などを組み合わせてアプリを作っていく必要があります。
JavaScript SDK は機能豊富ですが、ドキュメントは結構複雑かつ分かりにくいです。
以下、わかりにくかったポイントです。
- JS SDK は v1 と v2 で大きく違うが、検索すると v1 のページが結構上の方に出てくる
- クラス階層が SkyWay に比べて複雑
- track, publication 等の概念の説明があまり無い
- イベント数も多い
- 発火タイミングに関する明確な説明が無い?
その他、使いにくかった点
SkyWay
認証機能を使用時に credential の TTL を設定するのですが、TTL に 600(秒)以下を指定するとエラーになりました。ドキュメントに記載は無いと思います(※)。
有料ビデオチャットを想定して、TTL で残り時間を管理したかったのですが、600以下を指定できないということは、残り5分を切ったところでブラウザを間違えて閉じてしまった場合に、再接続しようとしてもcredential が生成できない、という事態になってしまいます。結局、残り時間の管理は、自前の JS で実装することにしました。
TTL の最小値は、せめて、60か120くらいにして欲しかったです。
※検索したところ、swagger の yaml には記載されていました・・・
https://raw.githubusercontent.com/skyway/skyway-webrtc-gateway/master/api/api.yaml
Twilio Video
room の有効期限が最大で24時間のため、都度作り直す必要があるのが面倒でした。
Understanding Video Rooms – Twilio
例えば、各ユーザーが1つのビデオチャットの部屋を持てるようにする場合、今日部屋を作っても明日には使えなくなってるので、作り直す必要があります。
ビデオチャットを使う時間帯が9:00〜18:00とか決まっているのであれば、朝一で作り直せば問題無いですが、いつ使うか分からない場合、使う前に有効期間をチェックして、残り時間が短ければ作り直す必要があります。ただ、JavaScript SDK だと、部屋の有効期限を確認することが出来なさそうで、REST API を使う必要がありそうです。
なんでこんな面倒な事になってるんでしょうね。
まとめ:結局どちらを使うべき?
- SkyWay の無償プランで収まり、将来も超える可能性は無い -> SkyWay
- 利用者が全員日本国内在住で高品質が求められる -> SkyWay
- 規則等で、海外サーバーにデータを送るのはダメ -> SkyWay
- 日本語でサポートが無いと困る -> SkyWay
- それ以外 -> Twilio Video
という結論に至りました。
もう少し SkyWay の価格が安ければ、同じ日本企業ですし「SkyWay 良いですよー!」って宣伝しまくると思いますが、有償プランの基本料金10万円/月はエグいです。グローバル企業と国内企業の体力の差でしょうか。
追記: SkyWay の料金について
本記事を読んで下さったNTTコミュニケーションズの方から、料金に関して補足の情報を頂きました。ありがとうございます。まずはそのまま転載します。
> 有償プランは10万円/月の基本料金がかかり、データ転送料は40円/GBです。
SFU方式で接続した場合はSFUサーバを利用するのでその通りです。
しかし、Mesh方式で接続した場合はまずP2Pで接続しようとします。P2Pで繋がった場合、データ転送料は0円です。
一部のP2P通信ができないネットワークの環境のみ、通信のために中継サーバ(TURN)を利用し、その場合は転送料がかかります。
通信環境に依存しますが、P2P通信ができない割合は全体の10%程度です。
「料金モデルケース(1時間あたり)」では、この割合を加味しているため、ご想定よりも通信量が少なく見えているのかと思います。
通信料金体系が分かりづらく申し訳ございませんが、
より安価に提供するため、実際に利用したリソースに応じた課金という形式を取らせていただいています。
参考情報までに、TURNが使われる条件については以下FAQに掲載されています。
好意的に解釈しても、料金ページはかなり誤解を招く内容だと思います。
現実世界では「4人のうち10%の0.4人がTURNを使用する」という事はあり得ず、殆どの場合は4人のうち0人か1人がTURNを使用することになります。そして、TURNを使用する人が1人いる場合は料金モデルケースを大幅に超えてしまいます。
また、約10%がTURNを利用しているとのことでしたが、私が3〜4人のビデオチャットを、毎回異なるメンバーで3回試した限りでは、私を含めた8人のうち少なくとも3人がTURNを使用しているようでした。(全員自宅からの接続で、同一の社内LANなどではありません。)
「モデルケース」と記載するのであれば、その前提条件を記載しないと、あまり有用な情報では無いので、改善されることを期待します。
コメントを残す