技術から業務の利用シーンを考えてみる part2
こんにちは!おおはしりきたけです。前回はNotification、GestureRecognizer、localStorageといった技術がどういった利用シーンで利用できるのか考えてみました。今回はWebsocketがどういった使い方できるのかを考えてみたいと思います。
Websocket(Node + Socket.IO)
まずは、こちらの記事から
記事タイトル:Node + Socket.IO で簡単なチャットアプリの作成
投稿者:うえじゅん
Websocketとは?
そもそもWebsocketって何でしょう?Wikipadiaには以下のように書かれています。
WebSocket(ウェブソケット)は、コンピュータ・ネットワーク用の通信規格の1つである。インターネットの標準化団体であるW3CとIETFがウェブサーバーとウェブブラウザとの間の通信のために規定を予定している双方向通信用の技術規格であり、APIはW3Cが、WebSocket プロトコルはIETFが策定に関与している。プロトコルの仕様は RFC 6455。TCP上で動く。
誤解を恐れずに言えば、HTTPの双方向通信版と言えるでしょう。
AjaxやCommetと何が違うの?
似たような技術にAjaxやCommetといった技術があります。以下にそれぞれの技術について比較してみました。
Ajax | Comet | Websocket | |
---|---|---|---|
接続の継続性 | 取得に対する接続は1回毎 | Serverは応答を返すのを引き延ばすが、引き延ばせる時間に上限があるため再接続が必要 | 繋ぎっぱなし |
接続コスト | 高い | 超高い | 1回のみなので低い |
双方向性 | Client側からのみ | Server側から送信が可能 | Client/server側から送信が可能 |
リアルタイム性 | Server側に届いた情報は、Clientから取得しに行く必要があるため即時反映はできない | Server側からリアルタイム送信が可能 | Server/Clientからリアルタイム送信が可能 |
AjaxやCometは、Client/Serverでリアルタイム風な処理をするための疑似のリアルタイム技術になりますが、WebSocketは既存のネットワークを利用して本当のリアルタイム通信ができるようになりました。こちらの記事では、Websocketをより簡単に利用するためNode.jsとSocket.ioを使ってチャットアプリを作っています。
利用シーン
リアルタイム処理となるとチャットアプリがわかりやすいですが、業務でリアルタイム性が必要なシーンというのは、どういったものがあるでしょう?考えられるのは、複数拠点で会議をしている時のブレストをリアルタイムで行ったり、会議の議事録をリアルタイムで記述していき、会議終了時には議事録を作成完了させるといったことも可能です。
効果
今までだったら、1分に1回とか30秒に1回といった更新頻度だった場合、ちょっとした間が現場の熱量を下げてしまうということもあったと思いますが、リアルタイムになることにより現場の熱量が上がるといった効果はあると思います。また、こちらの記事にもある通り、音声データなども送ることができます。これを利用することによりリアルタイムセッションなど、エンターテイメントとしても色々な幅が広がるかと思います。
Socket.IO(iOS&Android)
次は、こちらの記事です。
記事タイトル: iOSアプリからnode.js+Socket.IOと双方向通信する
投稿者:平井 祐樹
記事タイトル: Androidアプリからnode.js+Socket.IOと双方向通信する
投稿者:袴田
利用技術
iOSでもAndroidでもSocket.IOが利用できます。こちらの記事は、Node.jsとSocket.IOのライブラリを利用し、iOSアプリ、Androidアプリから双方向通信を行えるという記事です。
利用シーン
スマートフォンを使うことにより、ジオロケーションを利用することができます。位置情報で利用できるようになるのは、天気、交通情報などが考えられます。特に交通情報はリアルタイムの情報が必要になります。例えば、雨の日のバスが時間通りに来ることはほとんどありません。冬の雨の日にバス停で30分近く待たされるなんてこともあります。バス会社がバスの位置情報をリアルタイムに配信することで、ユーザー側が適切な時間にバス停にたどり着くことができます。また、都内ではタクシーを停めるのも苦労するときがあります。そんな時、タクシーに乗りたいユーザーは、自分の位置情報を通知し、タクシー側は通知されてくる近場のユーザーをマッチングすることにより、タクシーとユーザーの距離も把握できるので、ユーザー側には、あと何分でタクシーが来るか、タクシー会社はどこか、ナンバーは何番かなどといった情報を通知することも可能です。
効果
配車情報をリアルタイムで的確に伝える事により、配車効率の向上やユーザーの利便性向上等が見込めますし、利用する端末も専用機器の必要がありません。配車センターとタクシー側といったシステムはあると思いますが、ここにユーザーが加わってくることで、よりリアルタイムな連携が行えます。
まとめ
今回は、Websocketをメインにどういった業務で利用できるかを考えてみました。Websocketでは常にClientとServerが接続している状態です。しかし、Serverのリソースは限りがありますので、接続維持できるClientの数も決まっています。その為には、Server側のインフラも工夫が必要になります。今までのように固定のServerマシンでは対応ができないので、クラウドが必須になってくることでしょう。弊社では、上記の技術をAWSで利用することが多く、実際に相性もいいと思います。Websocketを採用する場合は、インフラも含めて考える必要がありますね。
参考サイト
今回Websocketを調査するにあたり、以下のサイトを参考にさせていただきました。