35
みんなで同時プレイする クイズWebアプリで CodeQuizに挑戦! オープンソースライブラリで実現するリアルタイムWebアプリ オープンソースカンファレンス 2013 Hokkaido CLR/H プレゼンツ

ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

みんなで同時プレイするクイズWebアプリで

CodeQuizに挑戦!― オープンソースライブラリで実現するリアルタイムWebアプリ ―

オープンソースカンファレンス 2013 Hokkaido

CLR/H プレゼンツ

Page 2: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

At first...

• Twitter, facebook 等への SNS投稿歓迎

• ハッシュタグは #clrh84でよろしくおねがいします。

Page 3: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

Let me introduce myself.自己紹介させていただきます

Page 4: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

勉強会コミュニティ

CLR/H

Page 5: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

WhyCodeQuiz?なぜコードクイズ?

Page 6: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

勉強会コミュニティ & 宿泊イベント

Code 2013 in 定山渓

Page 7: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

QUIZ WEBAPP

Let’s Play!早速プレイ!

Page 8: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

http://goo.gl/Do4RLU

Page 9: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

https://github.com/jsakamoto/quiz-webapp

GNU GPL v2 License

Page 10: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

How does it work?仕組み

Page 11: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

ASP.NET

SignalRhttps://github.com/SignalR/SignalR

Apache 2.0 License

Page 12: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

SignalR Supported Transport

•WebSoket

•Server-Sent Events

•Forever Frame

•Long polling

Page 13: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

Let’s build it!作ってみよう!

Page 14: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

Express 2012 for Web

http://www.microsoft.com/visualstudio/jpn/

downloads#d-express-web

Page 15: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

How to implementation?実装

Page 16: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

Browser Server

Page 17: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

public class Hub1 : Hub{public void Foo(bool newState){Clients.All.Bar(newState);

}}

Browser Server

Page 18: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

public class Hub1 : Hub{public void Foo(bool newState){Clients.All.Bar(newState);

}}

Browser Server

Page 19: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

public class Hub1 : Hub{public void Foo(bool newState){Clients.All.Bar(newState);

}}

Browser Server

$(function () {var conn = $.hubConnection();var hub1 = conn.createHubProxy('Hub1');conn.start();

var state = false;$('#button').click(function(){

state = !state;hub1.invoke('Foo', state);

});});

Page 20: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

public class Hub1 : Hub{public void Foo(bool newState){Clients.All.Bar(newState);

}}

Browser Server

$(function () {var conn = $.hubConnection();var hub1 = conn.createHubProxy('Hub1');conn.start();

var state = false;$('#button').click(function(){

state = !state;hub1.invoke('Foo', state);

});});

Page 21: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

public class Hub1 : Hub{public void Foo(bool newState){Clients.All.Bar(newState);

}}

Browser Server

$(function () {var conn = $.hubConnection();var hub1 = conn.createHubProxy('Hub1');conn.start();

var state = false;$('#button').click(function(){

state = !state;hub1.invoke('Foo', state);

});});

Page 22: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

public class Hub1 : Hub{public void Foo(bool newState){Clients.All.Bar(newState);

}}

Browser Server

$(function () {var conn = $.hubConnection();var hub1 = conn.createHubProxy('Hub1');conn.start();

var state = false;$('#button').click(function(){

state = !state;hub1.invoke('Foo', state);

});});

Page 23: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

Browser Server

public class Hub1 : Hub{public void Foo(bool newState){

}}

$(function () {var conn = $.hubConnection();var hub1 = conn.createHubProxy('Hub1');conn.start();

var state = false;$('#button').click(function(){

state = !state;hub1.invoke('Foo', state);

});});

Page 24: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

public class Hub1 : Hub{public void Foo(bool newState){Clients.All.Bar(newState);

}}

Browser Server

$(function () {var conn = $.hubConnection();var hub1 = conn.createHubProxy('Hub1');conn.start();

var state = false;$('#button').click(function(){

state = !state;hub1.invoke('Foo', state);

});});

Page 25: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

$(function () {var conn = $.hubConnection();var hub1 = conn.createHubProxy('Hub1');

hub1.on('Bar', function (newState) {alert(newState);

});

conn.start();});

public class Hub1 : Hub{public void Foo(bool newState){Clients.All.Bar(newState);

}}

$(function () {var conn = $.hubConnection();var hub1 = conn.createHubProxy('Hub1');conn.start();

var state = false;$('#button').click(function(){

state = !state;hub1.invoke('Foo', state);

});});

Browser Server

Page 26: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

$(function () {var conn = $.hubConnection();var hub1 = conn.createHubProxy('Hub1');

hub1.on('Bar', function (newState) {alert(newState);

});

conn.start();});

public class Hub1 : Hub{public void Foo(bool newState){Clients.All.Bar(newState);

}}

$(function () {var conn = $.hubConnection();var hub1 = conn.createHubProxy('Hub1');conn.start();

var state = false;$('#button').click(function(){

state = !state;hub1.invoke('Foo', state);

});});

Browser Server

Page 27: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

$(function () {var conn = $.hubConnection();var hub1 = conn.createHubProxy('Hub1');

hub1.on('Bar', function (newState) {alert(newState);

});conn.start();

});

public class Hub1 : Hub{public void Foo(bool newState){Clients.All.Bar(newState);

}}

$(function () {var conn = $.hubConnection();var hub1 = conn.createHubProxy('Hub1');conn.start();

var state = false;$('#button').click(function(){

state = !state;hub1.invoke('Foo', state);

});});

Browser Server

Page 28: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

$(function () {var conn = $.hubConnection();var hub1 = conn.createHubProxy('Hub1');

hub1.on('Bar', function (newState) {alert(newState);

});conn.start();

});

public class Hub1 : Hub{public void Foo(bool newState){Clients.All.Bar(newState);

}}

$(function () {var conn = $.hubConnection();var hub1 = conn.createHubProxy('Hub1');conn.start();

var state = false;$('#button').click(function(){

state = !state;hub1.invoke('Foo', state);

});});

Browser Server

Page 29: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

https://github.com/sample-by-jsakamoto/SampleOfSignalR

GNU GPL v2 License

Page 30: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

Let’s Publish It!ネットに公開してみよう!

Page 31: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

AppHarborhttps://appharbor.com/

Page 32: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

Git

Page 33: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

Conclusionまとめ

Page 34: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

SignalR is useful & wonderful!

• Webアプリで、Webサーバー側からブラウザへ呼び出しを発射できる

• Long Poling からWebsocket まで、通信技術を意識しないでできる

• サーバー側環境とか相手先デバイスとか関係なくできる

• 通信のための設定とか不要でできる

• すべてSignalRが実行時に環境に応じて最適にやってくれる

Page 35: ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」

Learn, Practice, Share.

&

Fork, Commit, Pull request.

Thank you!