リアルタイムWebとは?Javascriptがあれば簡単に出来るらしい注目のアレ

real_time_cat

real_time_cat

こんにちは、永橋です。

今日はリアルタイムWebについてお話します。

リアルタイムWebとは?

そもそもリアルタイムWebとはなんなのか?リアルタイムWebとは、情報の更新をリアルタイムに反映し、ユーザー同士がリアルタイムに交流するというWebの概念です。主にSNS、例えばTwitterやFacebookのことを指しています。

どんなところにリアルタイムWebが?

一昔前、よくCGIを用いたチャットプログラムが流行したのを知っているでしょうか。

当時のプログラムでは定期的にページを更新し、発言があってもなくても通信をするポーリングという技術、いわゆるPull通信というものが利用されていました。Pull通信というのは、クライアント側からサーバー側に情報の取得を要求する通信です。皆さんが使っているウェブブラウザでのネットサーフィンも、基本的にはPull通信を行っています。

現在Twitterの公式ページでツイートを取得していると、新規のツイートが発生した祭に、「◯件のツイートを取得」といった文が表示され、タップすると新しいツイートが取得できます。ウェブブラウザの更新ボタンを押さずとも最新の情報を取得できる。これがリアルタイムWebです。

また、Twitterは試験的にUserStreamという、ほぼ完全なリアルタイム通信を実現した機能を提供しています。この機能は専用アプリケーションクライアントで試すことができます。この機能はPush通信と言うものを利用しており、サーバー側がクライアント側に情報の有無を伝える通信です。

日本の携帯会社(DoCoMoやau、Softbankなど)のキャリアメールは、Push通信を行っています。そのため、メールを受信すると即座にその情報を通知してくれるのです。このPush通信こそリアルタイムWebの根幹といえるでしょう。

リアルタイムWebを実現するために

私達が簡単にリアルタイムWebを実現するために必要なものは、Socket.io、Node.jsです。

リアルタイムWebを実現するためにはPush通信が使われています。Push通信は、更新の都度サーバーとの接続と切断を行うPull通信と違い、サーバーとの接続を常時保ち続けます。情報の通信は無い状態ですが、サーバーとの通信がいつでもできるように通信の道だけ作っているということです。

この道を作るためには、Comet、Socket.io、WebSocketといったものを使います。導入が簡単なものはSocket.ioです。これをクライアント側に実装します。

サーバーに情報の有無を通知させる、つまり、Push通信を可能にするために必要なのはNode.jsです。これはサーバーサイドのJavascriptで、Javascriptが扱えれば比較的楽に実装することができます。これをサーバー側に実装します。

これでリアルタイムWebを実現する基盤は完成です。

実際に何ができるのか

リアルタイムWebを使って簡単にできるのは、LINEやSkypeなどに似た、リアルタイムチャットアプリケーションです。

およそ8年前には定期的に更新して情報を取得するという原始的な手法を用いていたチャットが、現在では簡単にシームレスなチャットを実装することができます。今後リアルタイムWebが発展すれば、他のWebアプリケーションの可能性も大きく広がるのではないでしょうか。

今彼が勉強中という、リアルタイムWebについて書いてもらいました。
内容が固いので、せめてキャッチ画像だけでも柔らかくモフモフに。
なんにも関係無いけどな!!

オカベ