こんにちは、サイオステクノロジー技術部 武井です。私は、マイクロソフトが実施しているテクニカルカンファレンス「Ignite」に参加するためにフロリダのオーランドということろに来ております。Igniteが実施している期間中に、「ほぼ」リアルタイムレポートをお届けしたいと思います。今回は「Adding interactivity to your apps with SignalR」について記載します。
このセッションは以下のような方向けです。
SignalRを使ってWebアプリケーションでリアルタイム通信を実現したい!!
SignalRとは?
SignalRとは、Webのリアルタイム通信を行うためのサービスです。リアルタイム通信が必要になるケースの代表的なものは、チャットサービスです。チャットを行っているユーザー同士のメッセージはリアルタイムで送受信される必要があります。
このリアルタイム通信を実現するためには、今まではオンプレミスやAzure上の仮想マシン上にnode.js等でWebScoketサーバーを構築しなければなりませんでした。SignalRはマネージドサービスですので、このようなインフラの構築・運用は必要ありません。開発者はよりコーディングに専念できるわけです。
デモ
本セッションでは、SignalRの機能を使ったアプリケーションのデモ、及びそのソースコードの簡単な解説を20分ほどでお壊れました。
デモでは、ブラウザを2つ起動して、片方のブラウザで飛行機を動かすと、もう一方のブラウザでもリアルタイムで同じ動きをするというものでした。
デモで紹介されたコードになります。C#で書かれています。
基本的なコーディングの流れは、他サービスと一緒で以下のようになります。
- Nu-GetでSignalRのSDKをインストールする。
- SignalRのサービスをDIする
- SDKを利用した実装を行う。
ちょっと見にくいのですが、上図に「Clients.All.SendAsync」と書かれていますので、全てのユーザー(ブラウザ)にメッセージを送る処理を意味します。つまり、デモでは、片方のブラウザの飛行機が動くと、他のすべてのブラウザに表示されている飛行機が動きます。
まとめ
本セッションは20分という短い時間のものでしたので、SignalRの基本的な部分だけしか触れておりませんが、他にもたくさんの有用な機能があります。Azure上で開発したWebアプリケーションでリアルタイム通信を行う場合、是非SignalRをご検討下さい。
さらに詳細な技術情報については、本ブログに掲載の以下の記事に記載されております。
Azure SignalR Service と Azure Functions を使用してサーバーレスなリアルタイムWebアプリ作成