å®ã¯ãã£ã¨WebRTCãã¦ã©ãããã¦ããã®ã§å¤§å±çãªè©±ãæ¸ãã
WebRTCã«ã¤ãã¦ã®è©±ã社å åå¼·ä¼ã§ãã¦ãããè¦ã¦ãèªåãä½ããæ¸ãã¦ã¿ãããã¨æã£ããä½¿ãæ¹ãAPIã®è©³ç´°ã«ã¤ãã¦æ¸ãããè¨äºã¯å¤ããã大å±çãªè©±é¡ãæ¸ããè¨äºã¯ãã¾ãè¦ãããªãã®ã§ããã®ãããªè¦³ç¹ããå ¬ç¥ã«ãªã£ã¦ããæ å ±ãä¸å¿ã«æ¸ãã¦ãããã¨æãã
ãã話
- åã®WebRTCã®è§£é
- æ¢åã®éä¿¡æè¡ã¨ã®éã
- WebRTCã®ã·ã°ããªã³ã°ã®ç¹å¾´ç¹
- ä»ã®WebRTCã®æ å ±æº
- ä»ã®WebRTCã®å¦¥å½ãªä½¿ãé
ããªã話
- VoIPããã¤ã¹ã¨ã®ç¸äºæ¥ç¶ã®ããã
- 广çãªä½¿ãæ¹
- 广çãªã³ã¼ã
ã¨ã¦ãé·ãæ¬æ
WebRTCã¨ã¯ä½ãã¨ããã°ããã¨ãã°HTML5å¨è¾ºæè¡ã§ããã¨ãæ§ã
ãªè¦æ¹ãããããåã¯ãã¬ãã©ãã¼ã®ä¸çæãWebãã©ã¦ã¶ä¸ã«ç§»æ®ãããã¬ã¼ã ã¯ã¼ã¯ã ã¨èªèãã¦ãããWebRTCã¯ããµã¼ãã¨ã¯ã©ã¤ã¢ã³ããããªãä¸è§å½¢æ§é ãããã¯å°å½¢æ§é ãæ§æããã
ãããã¯ããã¤ã¦ã®IPé»è©±ã®ãããã³ã«ã§ããH.323ãSIPã彷彿ãããããããã®ãããã³ã«ã¨åãããã«ãWebRTCã§ã¯ã·ã°ããªã³ã°ãã£ãã«ã®ä¸ã§è½å交æãè¡ã£ã¦P2Pã¡ãã£ã¢ããã¼ã¿è»¢éã®ããã®ã»ãã·ã§ã³ã確ç«ãããããã«ãããã§ä½¿ãããNATè¶
ãã¨ãã¼ã«ãã³ãã®ä»çµã¿ããã¼ã¿ãã¡ãã£ã¢è»¢éã«ä½¿ããããããã³ã«ã¯IPé»è©±ã¨å
¨ãåããã®ãå©ç¨ããã
WebRTCã¨æ¢åã®ãã¬ãã©ãã¼ã®ä»çµã¿ã§æãç°ãªãç¹ã¯ãã·ã°ããªã³ã°ãããã³ã«ãè¦å®ããªãï¼ãã¨ãè¦å®ããï¼ã¨ããç¹ã ãããWebãã©ã¦ã¶ãåãã¦ããéä¿¡ãããã³ã«ï¼ç¾ç¶ã§ã¯HTTPãWebSocketï¼ä¸ãªãããããã®æ¹å¼ãç¨ãã¦ãæ§ããªããããã¾ã§ãå°ç¨ã®ROAPã¨ãããããã³ã«ãè¦å®ï¼ã¨å®è£ ãï¼ãã¦ãããã¨ããã£ãããé»è©±ã®ãããªé話ã®ã¦ã¼ã¹ã±ã¼ã¹ã«ãã対å¿ã§ããªããããJSEPã¨å¼ã°ããæ°ããªãããã³ã«ãå¥ã®ã¬ã¤ã¤ã§è¦å®ããããã¨ã«ãªã£ãã
WebRTCã®ã·ã°ããªã³ã°ã«ã¾ã¤ããJSEPã¯ããããã³ã«ã¨å¼ã°ãã¦ããã«ãé¢ããããSIPãªã©ã¨æ¯è¼ãã¦æ¥µãã¦APIã«è¿ããJavaScriptã¨éä¿¡ã¹ã¿ãã¯ã®éã«æã¾ãããããã³ã«ã ãã»ãã·ã§ã³è¨è¿°ã®äº¤æãICEã¨ã¼ã¸ã§ã³ãã®ã¹ãã¼ããã·ã³ã¯éä¿¡ã¹ã¿ãã¯ãå å ãããã©ã¦ã¶ã«ä»»ãããããã»ãã·ã§ã³éå§ï¼session initiationï¼ã¾ã§ã®ã·ã¼ã±ã³ã¹ã¨ã¹ãã¼ããã·ã³ã¯ããã°ã©ããå®å ¨ã«å®ç¾©ããªãã¦ã¯ãªããªãããã®è¦è¿ãã¨ãã¦ããµã¼ãã¹ã®ç´°ããªè¦ä»¶ã«åè´ãããããã¾ã§ã§ã¯ä¸å¯è½ãªãã¦ãã¼ã¯ãªæ§æã®ã¢ããªã±ã¼ã·ã§ã³ã®å®ç¾ãå¯è½ã¨ãªã£ãã䏿¹ã§ãå¤ãã®ãµã¼ãã¹äºæ¥è ã¯åç´ãªé話ãP2Pãã¼ã¿éä¿¡ãå®ç¾ã§ããã°ååãããããªããç¹°ãè¿ãã«ãªãããWebRTCã¯ãããªããããã³ã«ãã·ã°ããªã³ã°ã¨ãã¦ç¨ãã¦ããã¨ã許容ãã¦ãããããSIPã®ãããªæ¢åã®ãããã³ã«ãç¨ãã¦ãè¯ããJavaScriptã«ããSIPã®å®è£ ã¨ãã¦sipML5ãJSSIPãåå¨ãã¦ãããããããç¨ãããã¨ãã§ãããæ¨æºåããããããã³ã«ã«ãã ãããç¡ããã°ãã·ã³ãã«ã«è¨è¨ããã¦ãããããã¥ã¡ã³ããæ´åããã¦ããPeer.jsã®ãããªã©ããã©ã¤ãã©ãªãå®è£ ã®å¤§ããªå©ãã¨ãªãã ããã
WebRTCã¯ãã¾ã ã¾ã æ°ãããã¬ã¼ã ã¯ã¼ã¯ã§ãããã¾ã¨ã¾ã£ãæ å ±æºã¯æªã éããã¦ãããæ¥æ¬èªã«ç¿»è¨³ãããæ¸ç±ã§ã¯ããã¤ããã©ã¼ãã³ã¹ãã©ã¦ã¶ãããã¯ã¼ãã³ã°ã®WebRTCã®ç« ã«é©ãã»ã©å¹æçã«ã³ã³ãã¯ãã«ã¾ã¨ã¾ã£ãæ å ±ãæ²è¼ããã¦ãããããè±èªã®æ¸ç±ã§ãæ§ããªãã®ã§ããã°ãO'Reillyã®Real-Time Communication with WebRTC: Peer-to-Peer in the Browserãåå¨ãã¦ãããããã¾ãã«çãããããã«æãããWebRTC: APIs and RTCWEB Protocols of the HTML5 Real-Time Webã¯ãç¶²ç¾ æ§ããä»ããç§ã¦ããããæ å ±ããã¾ãã«æ´çããã¦ããªããããèªãã®ã«è¦å´ãããããããçè ãã¯æ¨æºåã«æ·±ãé¢ãã£ãã¡ã³ãã§ããã諸ã ã®çµç·¯ãç¥ãã«ã¯è¯ãæ å ±æºãããããªããæ°å¤ãã®ãã©ããã¸ã®åç §ã¯ã確å®ãã¦ããªãææ°ã®æ å ±ã追ãã®ã«å½¹ã«ç«ã¤ã ããã䏿¹ã§ãæ·±ãæè¡ã®è©±é¡ã§ã¯ééã£ãæ å ±ãæ£è¦ããããããã誤解ãçè§£ã®å¦¨ãã¨ãªããããããªãã¨æããããã®ä»ã«ãdiscuss-webrtcã®MLãªã©ã®ãããªæ¸ç±ä»¥å¤ã®æ å ±ãåèã«ããã®ãæ§ããªãããã¾ã¨ã¾ã£ãæ å ±ã¨ãã¦åç §ããã«ã¯ãã¾ãã«éå¤ã ãããæ®å¿µãªãããä»ããã«ãããç¨åº¦ã¾ã¨ã¾ã£ãããããæ£ç¢ºãªæ å ±ãå¾ãã«ã¯W3Cãããã¯IETFã®ãã©ããããæ¢ã«æ¨æºåãçµããRFCãèªãä»ç¡ãã®ãããããªããããããç¶ç¶çã«ææ°ã®ãã©ããã追ã£ããRFCãèªãã ãããè¡çºã¯ããã¾ãã«å¯¾è±¡ã¨ããæ°ã大ããããããã大ããªè¦å´ãä¼´ããå ´åã«ãã£ã¦ã¯ãææ°ã®å®è£ ã®åä½ã確èªããã ãã§ãã£ãããå©ç¨æ³ã確èªããã ãã§ååãªå ´åãããã ããããã®å ´åã¯ãGoogleã®æä¾ãããã¢ãµã¤ãã§ããappRTCã«ææ°ã®ãã©ã¦ã¶ããã¢ã¯ã»ã¹ãããããã®ã³ã¼ããèªããã¨ã广çã ã
ããã§ã¯ããã®ãããªãªã¢ã«ã¿ã¤ã éä¿¡ãå®ç¾ããWebRTCãã仿¥ã®Webä¸ã®ãµã¼ãã¹ã§æ´»ç¨å¯è½ãã¨ããã°ãæ£ç´ãªã¨ããããããåã°ãªãã¨ããã®ãç¾ç¶ã ãJavaScriptã®APIãè¦å®ããW3Cã®æ¨æºåã¯ããªãçµãããè¦ãã¦ããããå§åã¨ãªãã¾ã§ã¯ã¾ã ã¾ã æéããããããã§ãããããã«ããããã³ã«ãè¦å®ããIETFã§ã¯ãæªã ã«ãããªã³ã¼ããã¯ã«ã¤ãã¦æãã¦ããã¨ããå§æ«ã§ãããããããªãããWebã®åçµã¿ã§ãããããã¦ãå®è£ ã¯ææ¬²çã«é²è¡ãã¦ãããFirefoxã¨Chromeã§ã¯ããªãæ©ã段éããå©ç¨ãããã¨ãå¯è½ã¨ãªã£ã¦ãããï¼éã«èããã°ãã¯ãªã¼ã³ãªWindowsãMacãAndroidãiOSã§ã¯ä½¿ããªãã¨ãããã¨ã§ããããHTML5é¢é£æè¡ã«ãããã¡ãªãå°ç¨ã½ããã¦ã§ã¢ä¸è¦ãã¨ãã触ãè¾¼ã¿ã¯ä»ã®ã¨ããå®ç¾ããã¦ããªããâ¦ãï¼ããã§æ°ãã¤ããªããã°ãªããªãã®ã¯ããã¢å士ã®UAãåä¸ã¨ãªãå ´åæ¯è¼ç容æã§ããããç°ãªãUAéã§æ¥ç¶ããå ´åã§ã¯ãç¬ç¹ã®ãã¦ãã¦ãå¿ è¦ã§ãããããã®ãã¦ãã¦ã¯ããã使ãç©ã«ãªããªããªãå¯è½æ§ãé«ãã¨ãããã¨ã§ãããapprtcã®ä»æ¥ã®å®è£ ã観測ããã¨ããµã¼ãã®ã¬ã¤ã¤ã§ãã©ã¦ã¶ãå¤å®ãã¦å®è¡ããJavaScriptã®ã³ã¼ãã«å¤æ´ãå ãã¦ããããã ã ä»ã«ãé話ã¢ããªã±ã¼ã·ã§ã³ãå®ç¾ããã¨ãªãã¨ãå¿ ããå¾ åããã®åé¡ãä»ãã¾ã¨ããSkypeãªã©ã®ãã¤ãã£ãã¢ããªã±ã¼ã·ã§ã³ã¨éã£ã¦ããã©ã¦ã¶ã¯ããã¯ã°ã©ã¦ã³ãã§åä½ããè½åãæã£ã¦ããªãã ããã«ãã¢ãã¤ã«ããã¤ã¹ã®å ´åã§ã¯ã·ã°ããªã³ã°ãã£ãã«ã®ã³ãã¯ã·ã§ã³ãç¶æãããã¨ãããããªã¼æ¶è²»ã«å¤§ããªã¤ã³ãã¯ããä¸ããã ããããã®åé¡ã«å¯¾ãã¦W3Cã§Push APIã¨ãã¦è°è«ãé²ãã§ãããããã®ã´ã¼ã«ã¯é ãéãã§ããã
ã§ã¯ãç¾ç¶WebRTCãæ´»ç¨ãããµã¼ãã¹ãã¾ã£ããããããªããã¨è¨ãããã°ããããªãã¨ã¯ãªããå¿ ãåä¸ã®UIå士ãéä¿¡ãããå½¢æ ã«éãã°åé¡ãªãã®ã ãWWWã«ããã¦ãããªåæã¯ããããªãã¨æãããæ¹ãå¤ããããããªãããWebRTCã¯å¿ ããããã©ã¦ã¶ãç¨ããªããã°ãªããªããã¬ã¼ã ã¯ã¼ã¯ã§ã¯ãªããç¬èªã®ã½ããã¦ã§ã¢ã«ç¨ãã¦ãæ§ããªããWebRTCã®å ¬å¼ãµã¤ãã§ã¯ããã©ã¦ã¶ã«çµã¿è¾¼ãããã®WebRTCã®ã³ã¼ããµã³ãã«ãå ¬éããã¦ããããã®ã³ã¼ããµã³ãã«ã¯ãããããChromeã§ç¨ãããã¦ãããã®ã¨åæ§ã§ãå®å ¨ãªNATè¶ ãã®ä»çµã¿ã¨ãå種ã³ã¼ããã¯ãæã¤é«æ§è½ãªã¡ãã£ã¢ã¹ã¿ãã¯ãåãã¦ãããç¹ã«Androidä¸ã§åä½ããã¹ã¿ãã¯ã ç¨ããã°ãPushéç¥ãµã¼ãã¹ã§ããGCMã¨çµã¿åããããã¨ã«ãã£ã¦ãå¾ åãåé¡ã®è§£æ±ºãå¯è½ã§ãããæè¿ã§ã¯ãkindle fire ã®é話ã¹ã¿ãã¯ãWebRTCãç¨ãã¦ããã®ã§ã¯ãªããã¨ããåãåå¨ããå®ç¾æ§ã¯æ±ºãã¦ä½ããªãã ãããå®éã«å®è£ ãã¦è©¦ããã¨ããã3Géä¿¡ãç¨ããå ´åã«GCMã®éç¥ã«æ°ç§ããåæ°ç§ã®æéããããããLTEãç¨ããå ´åã§ã¯ããããã£ãªã¢ã®é話æ©è½ãããé«éã«çä¿¡ãéå§ãé話ã®å質ãè´æä¸ã§ã¯åªãã¦ããããã«æããã
以ä¸ãæãã¤ããç¯å²ã§æ¸ãã¦ã¿ãããWebéçºã«æºãã人ãã¡ã®æ å ±æºã®ä¸ã¤ã¨ãªãã°å¹¸ãã ããã®è¨äºã¯ããç¨åº¦çè§£ãé²ãã ã¨ã³ã¸ãã¢ã«åãã¦æ¸ããã¦ãããé£ããç¨èªããããããããªããå¯è½ãªéã䏿¬¡æ å ±ã¸ã®ãªã³ã¯ãå¼µã£ãã¤ããã§ããã®ã§ããã²æ´»ç¨ããããã
Webéçºè ã®ä¸æ¹ã§ããã¬ãã©ãã¼é¢ä¿ã®éçºè ã®é¢å¿ã¯ãã©ã¦ã¶ã¨æ¢åVoIPããã¤ã¹ã¨ã®ç¸äºæ¥ç¶ã§ã¯ãªãã ãããããããããã®ãããªãµã¼ãã¹å½¢æ ã®å®ç¾ã¯ééã³ã¹ãã®è¦³ç¹ããæ¥µãã¦é£ããã®ã§ã¯ãªããã¨èãã¦ãããWebRTCã¯ã¡ãã£ã¢è»¢éã«VoIPã¨å ¨ãåãæ¹å¼ãç¨ãã¦ããããç¸äºæ¥ç¶ã¯æ¯è¼ç容æã¨æããããããããªããããããªãããWebRTCã®å ¨ã¦ã®æ©è½ã«å¯¾å¿ãã¦ããæ©å¨ã¯æ» å¤ã«åå¨ãã¦ããªãã®ã§ãä½ããã®ã²ã¼ãã¦ã§ã¤ãå¿ è¦ã¨ãªããç¹ã«ãDTLS-SRTPã¯WebRTCã§å¿ ãç¨ããªããã°ãªããªããã¨ã¨ãªã£ã¦ããã«ããããããããã®å¯¾å¿ããã¤ã¹ã¯ã»ã¨ãã©åå¨ããªããæ´ã«ãDTLSã®å¾©å·ã¯å¦çè² è·ãé«ããããé«ä¾¡ã§é«æ§è½ãªã²ã¼ãã¦ã§ã¤ãè¦æ±ããããçµæçã«ãä½ãæ°ããªãµã¼ãã¹ãå®ç¾ããããã«ãæ¢åã®ããã¤ã¹ã使ãã¾ãããããSIPããã¤ã¹ã追å ããæ¹ãå®ä¾¡ã§é«æ§è½ã§ãããã¨ãã»ã¨ãã©ã ãããç¸äºæ¥ç¶ããã¦ã¾ã§ãµã¼ãã¹ãè¡ããã¨ãæå¹ã¨ãªãã±ã¼ã¹ã¯å°ãªãã ããããããããã®ãããªç¸äºæ¥ç¶ãè¦æ±ãããã¨ã³ã¿ãã©ã¤ãºã§ã®å©ç¨ã«ã¯FWééã®èª²é¡ãæ®ããã¦ãããWebRTCã®ã¡ãã£ã¢ããã¼ã¿ãã£ãã«ã¯ä¸ä½ãããã³ã«ã¨ãã¦UDPãç¨ãã¦ããããå¤é¨ã¨ã®UDPãã±ããã®ããã¨ãã許ãã¨ã³ã¿ã¼ãã©ã¤ãºåãFWã¯æ¥µãã¦ç¨ã§ããããã®ã¨ããæçµææ®µã¨ãã¦ã®TURNãéã®å¼¾ä¸¸ã¨ãªãå¾ãã¨ããæå¾ ãããããç¾ç¶ã§ã¯TURNã¯ãµã¼ããããã¢ã¸ã®ãããã³ã«ãUDPã«éå®ãã¦ãããããFWã«ç¹å¥ãªè¨å®ãæ½ãããã伿¥ãããã¯ã¼ã¯ã®DMZé åã«TURNãµã¼ããè¨ç½®ããçã®å¯¾çãå¿ è¦ã¨ãªãããã®ãããªèª²é¡ã¯ãæ¢ã«SIPã®ä¸çã§æ£ã è°è«ãããæ§ã ãªè£½åãå¸ä¸ã«æº¢ãã¦ããããã ãå¿ è¦ã¨ãªã£ã段éã§éå»ã®ç¥è¦ãWebRTCã«é©ç¨ã§ããããã«æºåããã¦ãããã¨ã¯æ±ºãã¦ç¡é§ã¨ã¯ãªããªãã ãããæ¢ã«ãã¬ãã©ãã¼è£½åã®è²©å£²åºæ¿ãæã£ã¦ããBROADSOFTãDialogicãªã©ã®ãã³ãã§ã¯ãæ¢å製åã«å¯¾ããWebRTCã®è½åã®è¿½å ã試ã¿ã¦ããã
æå¾ã«ãWebRTCã®ééå³ã¯èªç±ãªã·ã°ããªã³ã°ã§ããããããæè¡ã®çé«ã¨ãªãã¨åã¯èãã¦ãããä»å¾ããã©ã¦ã¶ã ãã«ã¨ããããªãããã¾ã¾ã§è¦ããã¨ã®ç¡ããããªãµã¼ãã¹ã®åºç¾ã楽ãã¿ã ã