ユーニックス総合研究所

  • home
  • archives
  • webrtc-girlfriend

WebRTCで彼女は出来るのか?

  • 作成日: 2020-11-30
  • 更新日: 2023-12-24
  • カテゴリ: IT

WebRTCで彼氏/彼女はできるのか?

コミュニケーションをリアルタイムで行わないと彼氏/彼女が出来にくいといわれています。
リアルタイムなコミュニケーションには人間の温かさが含まれていて、話している人々は情を通わせてそれは恋愛に発展します。

Webでそのようなコミュニケーションを取るにはどうしたらいいのでしょうか?
Webで彼氏/彼女を作るには?

そのための技術が「WebRTC(ウェブ・アールティーシー)」と呼ばれる技術です。
この記事ではWebRTCについて↓を解説します。

  • WebRTCとは?
  • WebブラウザとJavaScript
  • WebRTC API
  • シグナリングサーバーとは?
  • スタンサーバーとは?
  • ターンサーバーとは?

WebRTCとは?

WebRTCとは「Web Real-Time-Communication」の略です。
文字通りWebRTCとは、Webでリアルタイムなコミュニケーションを行うための技術です。

仲介を必要とせずに、Webブラウザで遠方のユーザーとビデオ通話や音声通話、データの交換などを行えます。
つまりこれは「Peer To Peer(ピア・ツー・ピア)」ということです。
人から人へのコミュニケーションがリアルタイムになり、それに必要なのはネット回線とWebブラウザだけだということになります。

必要なソフトウェアはWebブラウザだけなので、パソコンに新しくプラグインやソフトウェアなどをインストールする必要もありません。
あなたが普段から使っているWebブラウザを使うだけで、このリアルタイムなコミュニケーションを行うことが可能になります。

WebRTCを使うと複数人でのビデオ通話を行うアプリや、複数人で音声チャットを行うアプリを作ることが出来ます。
これからIoTの時代が加速していく中で、このリアルタイム性が求められる技術というのは増えていくと予想されます。

WebRTCは↓の要素で構成されます。

  • WebブラウザとJavaScript
  • WebRTC API
  • シグナリングサーバー
  • スタンサーバー
  • ターンサーバー

WebブラウザとJavaScript

WebRTCを利用した開発はWebブラウザで実装されているJavaScriptを使って行います。
WebブラウザにはWebRTCを利用するためのAPI(WebRTC API)が実装されており、開発ではそれらのAPIを使って開発を行います。

2020年現在においてChromeやFireFoxなど主要なブラウザでWebRTCがサポートされています。

WebRTC API

WebRTC APIはICE(Interactive Connectivity Establishment)という仕組み、つまりフレームワークを利用して実装されています。
ICEはウェブブラウザ―をピア(ユーザー)と接続することを可能にします。
ピアからピアの接続はファイアフォールなどの障害物があるために容易には実現できません。
しかし、これらを解決するのがICEの仕事です。
ICEはシグナリングサーバーやスタンサーバー、ターンサーバーを使ってピアからピアへの接続を実現します。

シグナリングサーバーとは?

シグナリングサーバーとはWebRTCによるピア・ツー・ピア接続で、自身と相手のネットワーク接続の情報の交換を助けてくれるサーバーのことです。
WebRTCでは最初の段階でシグナリングサーバーに問い合わせを行い、通信相手の候補を検索します。
そして通信相手の候補が見つかったら「オファー・アンサー」という方式を使って相手と通信を開始します。
オファー・アンサーとは自分の要件と相手の要件がマッチするか解決する通信のことで、たとえば「こっちはこの動画コーデックに対応してるよ~」とオファーを送り、相手から「こっちはこの動画コーデックだけだよ~」などのアンサーを受け取るというものです。
その結果が否定的であれば通信は実現できないので、失敗することになります。

シグナリングサーバーでのデータのやり取りはSDP(Session Description Protocol)というデータフォーマットでやり取りされます。
これは通信の内容のことで、これを見ればWebRTCが何をやっているのかわかります。

スタンサーバーとは?

スタンサーバーとはWebRTCによるピア・ツー・ピア接続を確立するときに、自分のパブリックなIPアドレスを教えてくれるサーバーです。
また、それと同時にスタンサーバーから自分のNAT内部にアクセスできるかどうかも応えてくれます。
「スタン」とはSession Traversal Utilities for NAT (STUN)のことです。

NAT(Network Address Translation)とはプライベートなIPアドレスとパブリックなIPアドレスを双方向に変換する技術です。
NATにはセキュリティ対策としての役割もあり、一種のファイアウォールとしても機能します。

NATを超えることを「NAT越え」などと表現します。
スタンサーバーから返ってくるIPアドレスが、自分の知っているものと違っていたら、自分はNATの中にいることになるので、相手からのデータの受信はNAT越えが必要なことがわかります。

ターンサーバーとは?

ターンサーバーとはWebRTCによるピア・ツー・ピア接続の時に、クライアント同士の間に立って通信を仲立ちしてくれるサーバーのことです。
「ターン」とはTraversal Using Relays around NAT (TURN)のことです。
ターンサーバーを使った疑似的な双方向通信を行うことで、Symmetric NATなどの制限を回避することが出来ます。
Symmetric NATとは一部のルーターがかける制限で、過去に接続したことがあるピアからしか接続を受け付けないというものです。

ターンサーバーはWebRTCのために生まれたものではなく、VoIPやネットゲームの世界から流れてきたものです。
ネットゲームの世界ではWebRTC以前からピア・ツー・ピアなゲーム対戦が実現されていましたが、それがやっとWebにもやって来たとということですね。

ターンサーバーを使った通信はオーバーヘッドが発生します。

おわりに

WebRTCを使えばビデオ通話や音声通話で気になるあの人と親密になることも可能です。
WebRTCを使ったWebアプリを開発して世の中の少子化の解消に貢献してみましょう。
これからの時代はWebRTC婚が流行ること間違いなし!

🦝 < 給料半年分のデータだよ

🐭 < あら、巨大ね

🦊 < ネット全体の通信量からすればほんのわずかさ

参考