2012年5月26日

WebSocketについて押さえておきたいもう一つの視点


下の記事を読んで「やっぱりMeteorはすごいな~!」と思った。
体感!JavaScriptで超速アプリケーション開発 -Meteor完全解説:第1回 Meteorをはじめよう|gihyo.jp
と同時に、最近よく目にする様になった WebSocket について気になりだした。

そこで色々検索して解説記事や入門記事を読んでみた。

http://warmcat.com/_wp/2010/11/01/libwebsockets-html5-websocket-server-library-in-c/


多くの記事はAjax, Cometなどの延長・改良版としてのWebSocketという視点で書かれていたのだけれども、その中で少し視点の異なる次の3つの記事が目に留まった。

Tender Surrender: WebSocketのバイナリメッセージを試したら、ウェブの未来が垣間見えた
『今後インターネットでスピードを追求していく上で、WebSocketはなくてはならない存在になるでしょう。リアルタイムなサービスを作る必要がなくても使われるテクノロジーになります。理由は大きく2つ。WebSocketの持つオーバーヘッドの削減と、データの圧縮という特徴です。』
『僕はインターネット上でWebSocketを使って流れるデータが、将来的に全部バイナリーになる可能性すらあるのではないかと思っています。』
『少し大げさに言うと、これはウェブにおけるパラダイムシフトになり得ます。ウェブで使われるプロトコルがHTTPからWebSocketに乗る何かしらのプロトコルに置き換わる可能性は、全くないとは言い切れないのではないでしょうか。』

telnet over WebSocketを作ってみた&その意味
『WebSocketが新しいバージョンとなりbinary frameが扱えるようになったことで、今までTCPで実現されていたすべてのプロトコルとお話しできるようになります。今まで悩まされていたNAT, Firewallなどを超えて、様々なサーバと繋いでみるのも楽しいかもしれません。』

こてさきAjax:WebSocketから、これからのWebを予想してみる
『結論から先に言うと、「WebSocketはWeb上に、個々のVPNを作る技術である」と僕は思っています』
『こうなってくると、Webは、単にWebページ(コンテンツ)にアクセスするための仕組みとは言えなくなります。むしろ、Webが基本のプラットフォームとなり、そこの上に個別のポリシーのネットワークが形成される。そして、ユーザーは、それらのネットワーク上を自由に行き来するという世界観で捉えるほうが妥当であると僕には感じられます。』

これら3つの記事を読むと、WebSocketとは単なる「より良いAjax」ではなく、インターネットの世界にもっと大きなパラダイムシフトをもたらす可能性を持ったものだと言う事が言えそうだ。

これは少ないオーバーヘッドでバイナリデータを扱える様になった事によるところが大きい。これによって今現在はTCP/UDPのポート番号で区別されている通信を全てTCPの80番と443番ポートで(FirewallやNATを越えて)流す事が可能になる。(WebSocketを使ったVNCクライアントはその良い例だろう。) これが普及すればアプリケーションの区別はもっぱらWebSocket内のサブプロトコルによって行われる様になるかも知れない。

つまり こてさきAjax さんが予想されている様にネットワークのレイヤが一つ上がった形でアプリケーションが動くという事になる。

それがもっと具体的にどういう意味を持つのかはまだはっきりとイメージ出来ないけれど、何だか楽しいことになりそうな気はしている。









.