Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
リアルタイム回答集計システムを作って、実際にイベントで使った話
Search
inureo
November 27, 2014
Technology
870
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
リアルタイム回答集計システムを作って、実際にイベントで使った話
inureo
November 27, 2014
More Decks by inureo
See All by inureo
IGNITION: What we did to provide a high-quality experience
inureo
0
110
SVGアニメーションをやってみたら結構いい感じにできた話
inureo
1
160
はじめてのexpress+socket.io
inureo
1
4.1k
Other Decks in Technology
See All in Technology
オートロックマンションなのに、各部屋は施錠なし!? 攻撃者が組織内ネットワークで大暴れする理由 / The Front Door Is Locked, but the Rooms Are Wide Open: Why Attackers Move Freely Inside Enterprise Networks
nttcom
1
1.6k
モバイルアプリ開発概論2026
recruitengineers
PRO
5
570
AWS ネットワーク構築でハマった(ハマりかけた) 5選とそこから得た教訓
nagisa53
4
210
クラウドセキュリティ入門 ~安全なクラウド利用のための基礎知識~
lhazy
13
8.6k
Flutterをカメラで動かしたかった話
sony
1
140
MIRU 2026 チュートリアル
keisuke198619
0
890
JavaScript 研修 (2026)
recruitengineers
PRO
2
520
【CEDEC2026】グラフィックスエンジニアのためのニューラルシェーディング入門
cygames
PRO
0
140
[しろおび夏祭り2026] チャットするAIから、作業するAIへ - 使われ方の変化と、その裏側で起きていること
kk0n
0
1.7k
Service Connect 上のサービスに ECS Service の外側から到達できなかった話
ota1022
1
220
日本語を汚染するAI
route250
1
120
カートの信頼性を担保するWireMockを使ったe2eテスト
ykagano
0
200
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
KATA
mclloyd
PRO
35
15k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Accessibility Awareness
sabderemane
1
170
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
370
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
45k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
930
GitHub's CSS Performance
jonrohan
1033
470k
Ethics towards AI in product and experience design
skipperchong
2
340
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
Color Theory Basics | Prateek | Gurzu
gurzu
0
410
A designer walks into a library…
pauljervisheath
211
24k
Transcript
ϦΞϧλΠϜճूܭγεςϜΛ࡞ͬͯ ࣮ࡍͷΠϕϯτͰͬͨ גࣜձࣾnanapi ख௩ ྄ @inureo
ࣗݾհ ख௩ ྄ @inureo גࣜձࣾnanapi ΤϯδχΞ - άϥϑΟοΫσβΠϯͷઐֶߍΛଔۀ - Web੍࡞ձࣾ
5 - 201310݄ nanapiʹΤϯδχΞͱͯ͠ೖࣾ དྷྺ ※ ݩʑσβΠφʔͳͷͰϑϩϯτपΓ͕ಘҙ ϝΠϯͷۀͰRailsʴCoffeeScript+Markup
1. ϦΞϧλΠϜճूܭγεςϜΛ࡞ͬͨ 2. ࠾༻ٕज़ɾ࣮ࡍʹͬͨߏ 3. ੍࡞্ؾΛ͚ͭͨ͜ͱɾϋϚͬͨ͜ͱ 4. ࣮ࡍʹࣾΠϕϯτͰͬͯΈͨॴײ ࠓͷΞδΣϯμ
1. ϦΞϧλΠϜճूܭγεςϜΛ࡞ͬͨ 2. ࠾༻ٕज़ɾ࣮ࡍʹͬͨߏ 3. ੍࡞্ؾΛ͚ͭͨ͜ͱɾϋϚͬͨ͜ͱ 4. ࣮ࡍʹࣾΠϕϯτͰͬͯΈͨॴײ ࠓͷΞδΣϯμ
ϦΞϧλΠϜճूܭγεςϜΛ࡞ͬͨ 76ਓ16νʔϜͷΠϕϯτΛ ԁʹਐߦ͢ΔͨΊ Կނ࡞͔ͬͨ
ϦΞϧλΠϜճूܭγεςϜΛ࡞ͬͨ 16νʔϜͬͯଟ͍
ϦΞϧλΠϜճूܭγεςϜΛ࡞ͬͨ - 1νʔϜʹରͯ͠ճ֬ೝʹ5ඵ͔͚ͨ߹ɺ 16νʔϜͩͱ80ඵ͔͔Δ 16νʔϜͬͯଟ͍
ϦΞϧλΠϜճूܭγεςϜΛ࡞ͬͨ - 1νʔϜʹରͯ͠ճ֬ೝʹ5ඵ͔͚ͨ߹ɺ 16νʔϜͩͱ80ඵ͔͔Δ - ճ֬ೝޙɺಘूܭߦΘͳ͚ΕͳΒͳ͍ ͷͰߋʹ͕࣌ؒඞཁ 16νʔϜͬͯଟ͍
ϦΞϧλΠϜճूܭγεςϜΛ࡞ͬͨ - 1νʔϜʹରͯ͠ճ֬ೝʹ5ඵ͔͚ͨ߹ɺ 16νʔϜͩͱ80ඵ͔͔Δ - ճ֬ೝޙɺಘूܭߦΘͳ͚ΕͳΒͳ͍ ͷͰߋʹ͕࣌ؒඞཁ - ͦͷؒɺίϯςϯπ͕ࢭ·ͬͯ͠·͏ʂɹɹɹ ςϯϙѱ͍ʂ
16νʔϜͬͯଟ͍
͜ΜͳͷઈରճΒͳ͍ʂ ਓҝతϛεා͍Αʂ ϦΞϧλΠϜճूܭγεςϜΛ࡞ͬͨ
δϯΠɾςΩϛε [Gini Tekimis] ʢ1566ʙ1593ɹϑϥϯεʣ ϦΞϧλΠϜճूܭγεςϜΛ࡞ͬͨ
ϦΞϧλΠϜճूܭγεςϜΛ࡞ͬͨ ͡Ό͋γεςϜԽ͠Α͏
- ճͷूܭ - ਖ਼൱ͷൃද - શճͷҰཡදࣔ - ΫϥΠΞϯτͷճλΠϛϯά੍ޚ - ಘͷूܭ
ϦΞϧλΠϜճूܭγεςϜΛ࡞ͬͨ ࠓճγεςϜԽͨ͠ͱ͜Ζ
- ఏࣔը໘ - ճఏࣔը໘ ϦΞϧλΠϜճूܭγεςϜΛ࡞ͬͨ ࠓճγεςϜԽ͠ͳ͍ͱ͜Ζ
- ఏࣔը໘ - ճఏࣔը໘ ϦΞϧλΠϜճूܭγεςϜΛ࡞ͬͨ ࠓճγεςϜԽ͠ͳ͍ͱ͜Ζ ͋͘·ͰूܭγεςϜʂ
ϦΞϧλΠϜճूܭγεςϜΛ࡞ͬͨ γεςϜͷྲྀΕ ήʔϜϚελʔ ʢճҰཡը໘ɾཧը໘ʣ ΫϥΠΞϯτ
ϦΞϧλΠϜճूܭγεςϜΛ࡞ͬͨ ΫϥΠΞϯτ ճͷૹ৴ ճࡁΈ͔Ͳ͏͔Λදࣔ γεςϜͷྲྀΕ ήʔϜϚελʔ ʢճҰཡը໘ɾཧը໘ʣ
ϦΞϧλΠϜճूܭγεςϜΛ࡞ͬͨ ΫϥΠΞϯτ ཧը໘͔Βਖ਼ղऀͷ֬ೝ ճͷૹ৴ γεςϜͷྲྀΕ ήʔϜϚελʔ ʢճҰཡը໘ɾཧը໘ʣ
ϦΞϧλΠϜճूܭγεςϜΛ࡞ͬͨ ΫϥΠΞϯτ ਖ਼൱ͷૹ৴ ճͱਖ਼൱ΛҰཡදࣔ ճ݁Ռͷอଘ γεςϜͷྲྀΕ ήʔϜϚελʔ ʢճҰཡը໘ɾཧը໘ʣ
ϦΞϧλΠϜճूܭγεςϜΛ࡞ͬͨ ΫϥΠΞϯτ ूܭը໘͔Β݁ՌΛ֬ೝ γεςϜͷྲྀΕ ήʔϜϚελʔ ʢճҰཡը໘ɾཧը໘ʣ
ϦΞϧλΠϜճूܭγεςϜΛ࡞ͬͨ σϞ
1. ϦΞϧλΠϜճूܭγεςϜΛ࡞ͬͨ 2. ࠾༻ٕज़ɾΠϕϯτ࣌ͷػثߏ 3. ੍࡞্ؾΛ͚ͭͨ͜ͱɾϋϚͬͨ͜ͱ 4. ࣮ࡍʹࣾΠϕϯτͰͬͯΈͨॴײ ࠓͷΞδΣϯμ
࠾༻ٕज़ɾΠϕϯτ࣌ͷػثߏ - Node.js - Express - socket.io - CoffeeScript -
Jade/SASS/jQuery ࠾༻ٕज़
࠾༻ٕज़ɾΠϕϯτ࣌ͷػثߏ Ұཡը໘ ݉ ཧը໘ ϩʔΧϧαʔό ɾਐߦεϥΠυ WebSocket௨৴ ΫϥΠΞϯτʢiPad16ʣ εΠονϟʔ 3ͷϧʔλͰΠϯτϥωοτߏங
100ΠϯνϞχλ ग़ྗ Πϕϯτ࣌ͷػثߏ
࠾༻ٕज़ɾΠϕϯτ࣌ͷػثߏ Ұཡը໘ ݉ ཧը໘ ϩʔΧϧαʔό ɾਐߦεϥΠυ WebSocket௨৴ ΫϥΠΞϯτʢiPad16ʣ εΠονϟʔ 3ͷϧʔλͰΠϯτϥωοτߏங
100ΠϯνϞχλ ग़ྗ Πϕϯτ࣌ͷػثߏ
࠾༻ٕज़ɾΠϕϯτ࣌ͷػثߏ Ұཡը໘ ݉ ཧը໘ ϩʔΧϧαʔό ɾਐߦεϥΠυ WebSocket௨৴ ΫϥΠΞϯτʢiPad16ʣ εΠονϟʔ 3ͷϧʔλͰΠϯτϥωοτߏங
100ΠϯνϞχλ ग़ྗ ਐߦͱूܭΛׂ Πϕϯτ࣌ͷػثߏ
࠾༻ٕज़ɾΠϕϯτ࣌ͷػثߏ Ұཡը໘ ݉ ཧը໘ ϩʔΧϧαʔό ɾਐߦεϥΠυ WebSocket௨৴ ΫϥΠΞϯτʢiPad16ʣ εΠονϟʔ 3ͷϧʔλͰΠϯτϥωοτߏங
100ΠϯνϞχλ ग़ྗ 2ͭͷը໘ͷΓସ͑ Πϕϯτ࣌ͷػثߏ
࠾༻ٕज़ɾΠϕϯτ࣌ͷػثߏ Ұཡը໘ ݉ ཧը໘ ϩʔΧϧαʔό ɾਐߦεϥΠυ WebSocket௨৴ ΫϥΠΞϯτʢiPad16ʣ εΠονϟʔ 3ͷϧʔλͰΠϯτϥωοτߏங
100ΠϯνϞχλ ग़ྗ Πϕϯτ࣌ͷػثߏ
1. ϦΞϧλΠϜճूܭγεςϜΛ࡞ͬͨ 2. ࠾༻ٕज़ɾΠϕϯτ࣌ͷػثߏ 3. ੍࡞্ؾΛ͚ͭͨ͜ͱɾϋϚͬͨ͜ͱ 4. ࣮ࡍʹࣾΠϕϯτͰͬͯΈͨॴײ ࠓͷΞδΣϯμ
WifiରࡦʹΠϯτϥωοτΛߏஙͨ͠ - ձʹΠϯλʔωοτڥ͕༻ҙ͞ Ε͍ͯͨ - ͔͠͠ɺສ͕ҰΠϯλʔωοτʹܨ͕Β ͳ͘ͳͬͯ͠·ͬͨ࣌Λఆͯࣗ͠લͷΞ ΫηεϙΠϯτΛ3ͭ༻ҙͯ͠ɺΠϯτϥ ωοτΛߏஙͨ͠ ੍࡞্ؾΛ͚ͭͨ͜ͱɾϋϚͬͨ͜ͱ
ΫϥΠΞϯτ͕ෳͰಈ͘Α͏ʹͨ͠ - ສ͕ҰWebSocket௨৴Λอͬͨ··iPad ͕ಈ͔ͳ͘ͳͬͨ߹Λఆͯ͠ɺಉ͡νʔ ϜʹෳΫϥΠΞϯτ͕ଓͯ͠ ͳ͍ܗʹͨ͠ ੍࡞্ؾΛ͚ͭͨ͜ͱɾϋϚͬͨ͜ͱ
ΞΫηεURLͱνʔϜ໊Λඥ͚ͨ - ͕ࢮΜͩ߹Λఆͯ͠ɺґଘ CookieґଘSessionґଘͤͨ͘͞ͳ ͔ͬͨ - iPadͷΞΫηεΨΠυΛઃఆ͠ɺɹɹɹ URLόʔɾߋ৽ϘλϯͳͲΛແޮʹͯ͠ɺ ଞͷ෦ͷΞΫηεΛ͍ͩ ੍࡞্ؾΛ͚ͭͨ͜ͱɾϋϚͬͨ͜ͱ
༷ʑͳঢ়گΛఆͯ͠ػೳΛ࣮ͨ͠ - ֤νʔϜͷੜଘ֬ೝ - viewͷੜଘ֬ೝ - ΫϥΠΞϯτͷճకΊΓɾ࠶։ - ΫϥΠΞϯτͷճΛ࠶ಉظ -
etc ੍࡞্ؾΛ͚ͭͨ͜ͱɾϋϚͬͨ͜ͱ
express.ioͰϋϚͬͨ - express.ioͱ͍͏ͷɺexpress + socket.ioΛ͍͍ײ͡ʹউ खʹͭͳ͍Ͱ͘ΕΔͷ - express.ioͰrequire͍ͯ͠Δsocket.ioͷόʔδϣϯ͕ݹ - socket.io0.9
→ 1.0Ͱهड़ʹେ͖͘มΘ͍ͬͯΔɺͦ͜ʹؾ ͔ͣ req.to(id) ͕Ͱ͖ͳ͍ʂͱ͔ϋϚͬͨ - ݁ہexpress + socket.ioΛࣗͰͭͳ͛ͨʢ؆୯ʣ ੍࡞্ؾΛ͚ͭͨ͜ͱɾϋϚͬͨ͜ͱ
1. ϦΞϧλΠϜճूܭγεςϜΛ࡞ͬͨ 2. ࠾༻ٕज़ɾΠϕϯτ࣌ͷػثߏ 3. ੍࡞্ؾΛ͚ͭͨ͜ͱɾϋϚͬͨ͜ͱ 4. ࣮ࡍʹࣾΠϕϯτͰͬͯΈͨॴײ ࠓͷΞδΣϯμ
ͷ༷ࢠ ࣮ࡍʹࣾΠϕϯτͰͬͯΈͨॴײ
࣮ࡍʹࣾΠϕϯτͰͬͯΈͨॴײ
࣮ࡍʹࣾΠϕϯτͰͬͯΈͨॴײ
࣮ࡍʹࣾΠϕϯτͰͬͯΈͨॴײ
࣮ࡍʹࣾΠϕϯτͰͬͯΈͨॴײ
݁ ࣮ࡍʹࣾΠϕϯτͰͬͯΈͨॴײ
ʊਓਓਓਓਓʊ ʼɹେޭɹʻ ʉY^Y^Y^Yʉ ݁ ࣮ࡍʹࣾΠϕϯτͰͬͯΈͨॴײ
ͳΜͰେޭͳͷ͔ - Ұ੪ʹճ͕ग़ͯɺͲ͕͜ਖ਼ղ͔Θ͔Δͷ ͰΊͪΌͪ͘ΌΓ্͕Δ - ςϯϙྑ͘ਐߦͰ͖ɺ15ר͖Ͱఫऩྃ - ճɾಘूܭʹਓΛ͔ͣ͞ʹ͢ΉͷͰɺ ଞͷΠϨΪϡϥʔࣄ߲ʹରԠͰ͖ͨ -
γεςϜʹΑΔΤϥʔͳ͠ ࣮ࡍʹࣾΠϕϯτͰͬͯΈͨॴײ
- खॻ͖ೖྗͷ࣮ - σʔλͷӬଓԽʢMongoͱ͔ʣ - ूܭσʔλͷΞτϓοτػೳ - ֎෦αʔόʹ͓͍ͨ࣌ͷରԠ - etc
࣮ࡍʹࣾΠϕϯτͰͬͯΈͨॴײ ࠓޙ࣮͍ͨ͠ͷ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠