WebRTC: サーバのない世界でwebをつくり直す [Realtime Conf. 2013Real]

http://vimeo.com/77265280

1 comment | 0 points | by Jshiike 4年弱前


Jshiike 4年弱前 | ▲upvoteする | link

[Slide] https://speakerdeck.com/feross/webrtc-data-black-magic


しかし、23歳にして既にこのレジュメにあるようなアウトプットを連発しているFeross Aboukhadijehはすごいですね。その彼が、Realtime Conf. 2013で、WebRTCの現状と自らの新しいプロジェクトについて語っています。



1) 概要


Video/音声/データをブラウザ間のpeer-to-peerで直接やりとりできる


プラグインのインストールは不要


WebSocketスタイルのシンプルなAPI


2) 利用事例


リアルタイムチャット、ファイルシェア、遅延のないマルチプレーヤー対戦型ゲーム、分散DB、ダークweb?(p-to-pコミュニティ)、CDN


MozillaのFirst Person ShooterゲームBananabreadのデモページ


Sharefestでは、URLを相手側に教えるだけで、大容量のファイルのやりとりが簡単にできる。


スライドにある+PeerServerでは、ブラウザ間 & ブラウザのタブ間で、Server/Clientの関係をつくれるようです。


3) Data Channel


SkypeはNATの問題を回避するために最初の数年間相当の工数をかけた。NATのルーターが付与するローカルIPアドレスは世界から見えないようになっているので、ブラウザ側で自分のIPアドレスがわからず、相手側にどうすれば接続できるか伝えることができない。また、ルーターはincomingコネクションを受け入れることができないので、リクエストを送信してroutingテーブルを利用するしかない。これらの問題はWebRTC側で対応済なので、開発者はもう気にする必要はない。


誰と誰がpeer-to-peerでつながるかは、開発者側の実装次第だが、サーバが最初だけ仲介し、つながる相手を紹介する機能をSignalingと呼ぶ。(Signalingの一連のプロセスをスライドの絵を使って説明したVideoの場面)


Chrome & Firefoxが対応。IE (Skypeを担ぐMicrosoft)とSafari (FaceTimeを担ぐApple) がまだ参加してくれてないのは残念。


4) peerCDN


Ferossのプロジェクト


ブラウザキャッシュシェアリングサービス


scriptを貼付けるだけで簡単にはじめられる


既にCDNを利用していても、その手前でキャッシュするので、帯域コストを大きくさげられる。


サーバはトラッキング、peerの紹介、ファイルのハッシュをする。ほとんどのロジックはクライアント側で、いつpeerとつながるかという意思決定や、キャッシュの管理、ファイルを分割してつくり直す作業などをする。


もし、peerが悪いやつであった場合も、peer-to-peerの通信が始まる前に、サーバがBittorrentのようにファイルを分割しハッシュして送るので、事前に内容を把握できる。


ブラウザは自動的に外部のリソースをダウンロードしにいくところを、画像データを事前に捕捉しているのは、plaintext styleを使ったものすごい仕組みは、Mozilla Hackの記事を参照。


IPアドレスがわかってしまうのがまだ解決すべき問題。ひとまずは、それほどセンシティブでないコンテンツのサイトに利用するか。相手方がわかりづらいようにランダムなファイルを送信したり、Onion Routingを使えば、もしかしたら解決できる?


通信のラウンドトリップが、find peers -> signaling -> STUN server -> send/receive ICE candidates -> establish a data channel -> request file peaces & start receiving dataと、複数回必要になってしまうのが課題。画面で見えてない画像だけpeerCDNを使うという回避策はある。


"How do you access the browser cache?" "Trolling LocalStorage" "fill disk.com" "How about firefox?" "chromium"は時間切れでプレゼンをスキップしてるので、ご興味あればスライドを確認ください。


5) 課題


WebRTCはまだテスト用のフレームワークがなくて大変。バグをpeerCDNでばらまかないように注意しなくてはいけないし。自分がつくった仕組みは近日中にオープンソースで提供します。


Chromeはまだ32bitのアプリで、大きなバイナリファイルを扱うときはRAMを2G以上使わないようにしないと、out of memoryのバグがでる。100MBのRAIDバッファーを用意したら400MBのRAMをくってしまう。


6) 新しいアイデア


Bittorrrentをプラグインのないブラウザベースでつくろうと思っている。サーバがなく、トラックできないBittorrentになる。(Githubに作業中のコードがあります。)


* 「サーバがない」という意味の補足




[Oct. 2013] ワザノバTop25アクセスランキング



#webrtc

Back