ASP.NET SignalR によるクイズWebアプリ「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」
先日 9/14(土) に開催されたオープンソースカンファレンス 2013 Hokkaido、自分は CLR/H 枠で発表させていただいた。
発表内容は、この夏開催されたプログラマ向け宿泊イベント「
Code 2013 in 定山渓」の催物のひとつ、「コードクイズ大会」で使用した、司会者の進行のもとで大勢で同時参加するクイズWebアプリの実装の紹介。
その中でも、司会者による操作が即時に回答参加者のブラウザに伝播・反映されるという "リアルタイムWeb" 部分を支えるオープンソースライブラリ
ASP.NET SingalR
https://github.com/SignalR/SignalR
に焦点を当てた内容とした。
以下はその記録。
スライド & プレイ中の動画
発表に使用したスライドはこちら。
[
フレーム]
http://www.slideshare.net/jsakamoto/osc13-do
実際にプレイしている様子の動画はこちら。
[
フレーム]
司会者の操作が即時に回答者のブラウザに伝わって画面が切り替わったり、回答者が回答を選んだらダッシュボードに即時に反映されたり、
"リアルタイム" な様子
がわかるだろか。
セッション中の Twitter の様子は、早速に
@KatsuYuzu さんに Togetter にまとめて頂いた。
CLR/H #clrh84 in オープンソースカンファレンス2013 Hokkaido #osc13do
http://togetter.com/li/563894
ソースはオープンソースで公開。
サイト立てるだけなら Visual Studio も Windows OS も不要
このクイズWebアプリのソースコード一式は GitHub に GPL v2 で公開中。
https://github.com/jsakamoto/quiz-webapp
これを git clone して、お好みの ASP.NET 用 PaaS ( Windows Azure Websites や AppHarbor ) に git push し、SQL Server データベースも同じく PaaS 上で調達して、データベース接続のための設定まで行えば、「オレオレクイズサイト」があっというまにできあがる。
こうして「オレオレクイズサイト」を立ち上げるだけなら、
Visual Studio はおろか、Windows OS だって不要
だ。
PaaS のアカウントを持っていて、git が使える OS があれば MacOS でも Linux でもかまわない。
さらに PaaS の GitHub 連携使えば git さえ要らない。
Webブラウザだけで「オレオレクイズサイト」を構築できてしまう。
おまけにこの程度のアプリなら、各種 PaaS に用意されている「
無償プラン」内で済んでしまう。
フリーミアム戦略とはいえ、凄い時代になったものだ。
ちなみに ASP.NET 用の PaaS としては、Windows Azure Websites もキビキビ動いてかなりお勧めだが、たとえ請求は発生しなくても、アカウントの開設にあたりクレジットカードが必要。
これとは別の PaaS、「AppHarbor」は、無償枠だと Windows Azure Websites 程の機敏さがないものの、メールアドレスだけあれば 2分でアカウント開設できてしまうのが魅力だ。
[
フレーム]
まとめ
今日び、"双方向" "リアルタイム" な Web は珍しいものではないと思う。
facebook に搭載されているチャットメッセージなどもそうだ。
しかしそういったアプリを開発する側となると、SignalR のようなライブラリの支援がないと相当大変である。
ましてや "底辺にあわせて Long Polling で" と実装を割り切るならまだしも、SignalR のように実行環境に応じて Web sokect まで駆使するように自作するのは、もう現実的ではないだろう。
とにかく、SignalR のようなライブラリの出現によって、"双方向" で "リアルタイム" な Web アプリの実装の壁が格段に低くなったことは確かだ。
あとはこういった恵まれた環境の上で、どんなアイディアを浮かべるか次第である。
そして付け加えるならば、こうして構築したアプリを 0円スタートでインターネットに公開するサービスが存在することだ。
アイディア次第、アイディアを形にし、世界に公開できる敷居がどんどん下がり続けている時代。
今回のオープンソースカンファレンスでの発表を通して、SignalR というライブラリの存在を知っていただき、なにか素敵なアイディアを形にするのに役立てていただけたら、発表者冥利に尽きる。
"Learn, Practice, Share |> Fork, Commit, Pull Request."