aptpod Tech Blog

株式会社アプトポッドのテクノロジーブログです

intdashによるリアルタイム通信【前編】― WebRTCだけじゃない映像伝送の選択肢

はじめに

Webアプリケーションでリアルタイムな映像通信を実装したい。ビデオ通話、遠隔支援、リアルタイム監視...。こうしたニーズは年々高まっています。

リアルタイムな映像通信を実装するとき、まず候補に挙がるのがWebRTCです。ブラウザ標準で使え、低遅延な双方向通信が可能で、実績も豊富。多くの開発者が最初に検討する選択肢でしょう。

ただ、産業用途で本格的に活用するには、追加の検討が必要になることもあります。本記事では、産業用途での検討ポイントを整理しつつ、intdashという選択肢を紹介します。

WebRTCという標準的な選択肢

WebRTC(Web Real-Time Communication)は、ブラウザ間で低遅延な双方向通信を実現するための技術です。P2Pによるダイレクトな通信が可能で、ビデオ会議、ライブカスタマーサポート、オンライン診療など、さまざまなユースケースで広く採用されています。

WebRTCの強み:

  • ブラウザ標準: 主要ブラウザでネイティブサポート、追加プラグイン不要
  • 低遅延な双方向通信: P2Pによる直接接続で、遅延を最小限に抑えた通信を実現
  • 豊富な実績: ビデオ会議ツールやオンライン診療など、多くのサービスで採用
  • SFUベンダーの充実: Twilio、Agora、時雨堂等、多くの選択肢

「標準規格だからベンダーロックインされない」という声もよく聞きます。確かにWebRTC自体はRFCで標準化されたプロトコルです。

産業用途での検討ポイント

WebRTCは汎用的で優れた技術ですが、産業用途で本格的に活用するには、追加の検討や工夫が必要になることがあります。

SFUの選定と移行コスト

WebRTCの接続方式:P2P vs SFU

WebRTCの「標準」が規定するのは、主にブラウザ間のP2P通信です。

P2Pは1対1の通信に向いていますが、参加者が増えると各端末の送受信負荷が急増するため、多人数での通信にはSFU(Selective Forwarding Unit)が必要になります。しかし、SFUは各ベンダーが独自に実装しており、ルーム管理、認証、録画といった機能もベンダーごとにAPIが異なります。

また、利用規模の拡大や新たな機能要件により、SFUベンダーの乗り換えが必要になることもあります。その場合、ベンダー固有のAPIに依存した部分は作り直しになるため、選定時には将来的な移行コストも考慮に入れておくと良いでしょう。

センサーデータとの統合

産業用途では、映像だけでなくセンサーデータも一緒に扱いたいケースがあります。たとえば、車両の走行映像とCANデータ・GPS、建設現場の監視映像とセンサー情報、製造ラインの映像と設備データ、といった組み合わせです。

WebRTCでこれを実現する場合、DataChannelを活用する方法があります。ただし、DataChannelはデータの送受信のみを提供するため、センサーデータの格納フォーマットや映像との時刻同期の仕組みは、自前で定義・実装する必要があります。

録画・解析システムの構築

「送信した映像を後から見返したい」「解析に使いたい」という要件も多いです。

WebRTCでは、録画や解析の機能は標準で提供されていません。SFUベンダーが録画機能を提供している場合もありますが、解析・可視化まで含めたシステムを構築する場合は、追加の開発が必要になることがあります。

intdashという選択肢

弊社が開発するintdashは、こうした産業用途のニーズを想定して設計された伝送プラットフォームです。

intdashの強み:

  • マルチモーダル対応: 映像、音声、センサーデータを統合して伝送可能
  • 大容量・低遅延: モバイル回線経由でも高頻度データを伝送可能
  • 時刻同期が標準装備: すべてのデータに共通の基準時刻でタイムスタンプ
  • 保存・解析・可視化まで一気通貫: サーバーに保存し、Data Visualizerでノーコード可視化・再生が可能

Webアプリからintdashを使う ― intdash-RTC SDK

intdashでWebアプリから映像・音声のリアルタイム通信を行う場合は、intdash-RTC SDKを使用できます。

intdash-RTC SDKは、intdashを用いたリアルタイムコミュニケーションを実装するためのSDKです。

intdashの通信クライアントをラップして利用することで、リアルタイムコミュニケーションの実装をWebRTCのようなシンプルなインターフェイスで実現できます。

intdash-RTC SDKは、3つのインターフェイスで構成されています:

  • MediaConnection: 接続の開始・停止
  • MediaSender: 映像・音声を送信
  • MediaReceiver: 映像・音声を受信

さらに、センサーデータの統合や録画・可視化といったintdashの機能も併せて活用できます。

実装の流れは以下のとおりです。シンプルなビデオチャットであれば、数十行のコードで実装できます:

// 1. intdashに接続
const iscpConn = await iscp.Conn.connect({ address, connector, tokenSource, nodeId })

// 2. メディア接続を設定
const mediaConnection = createMediaConnection(iscpConn, {
  video: { codec: 'H264', ... },
  audio: { codec: 'PCM', ... },
  receive: { sourceNodeIds: [相手のノードID] }
})

// 3. ローカルメディアを送信
const stream = await navigator.mediaDevices.getUserMedia({ video: true, audio: true })
await mediaConnection.sender.setLocalMediaStream(stream)

// 4. リモート映像を表示
mediaConnection.receiver.on('statechange', state => {
  if (state === 'running') mediaConnection.receiver.attach(videoElement)
})

// 5. 接続開始
await mediaConnection.start()

具体的な実装方法は後編で解説します。

ユースケース

intdash-RTC SDKは、以下のようなユースケースで活用できます。

  • ビデオ通話・遠隔支援: 作業者同士のリアルタイムコミュニケーション、技術支援
  • 遠隔監視: 現場の映像をリアルタイムで確認、必要に応じてセンサーデータも統合
  • データ収集: 映像とセンサーデータを時刻同期して収集・解析

おわりに

Webアプリでリアルタイムな映像通信を実現するとき、WebRTCは有力な選択肢です。ビデオ会議やライブ配信など、多くのユースケースで実績があります。一方で、産業用途においてセンサーデータとの統合や録画・解析が求められる場合は、追加のシステム構築が必要になることがあります。

intdashは、そうしたニーズに対応した、WebRTCとは異なるアプローチの映像伝送プラットフォームです。Webアプリから利用する場合は、intdash-RTC SDKを使うことで、シンプルなインターフェイスでintdashの機能を活用できます。

次回の記事では、intdash-RTC SDKを使った具体的な実装方法をサンプルコード付きで解説します。「実際どれくらい簡単なの?」という疑問にお答えしますので、ぜひご覧ください。

本ライブラリは現在お問い合わせベースでの個別提供となっています。ご興味のある方は、お気軽にお問い合わせください。