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
1
830
リアルタイム回答集計システムを作って、実際にイベントで使った話
inureo
November 27, 2014
Tweet
Share
More Decks by inureo
See All by inureo
IGNITION: What we did to provide a high-quality experience
inureo
0
96
SVGアニメーションをやってみたら結構いい感じにできた話
inureo
1
150
はじめてのexpress+socket.io
inureo
1
4.1k
Other Decks in Technology
See All in Technology
Incident Response Practices: Waroom's Features and Future Challenges
rrreeeyyy
0
160
開発生産性を上げながらビジネスも30倍成長させてきたチームの姿
kamina_zzz
2
1.7k
SREによる隣接領域への越境とその先の信頼性
shonansurvivors
2
510
AWS Media Services 最新サービスアップデート 2024
eijikominami
0
190
The Role of Developer Relations in AI Product Success.
giftojabu1
0
120
TanStack Routerに移行するのかい しないのかい、どっちなんだい! / Are you going to migrate to TanStack Router or not? Which one is it?
kaminashi
0
580
マルチプロダクトな開発組織で 「開発生産性」に向き合うために試みたこと / Improving Multi-Product Dev Productivity
sugamasao
1
300
サイバーセキュリティと認知バイアス:対策の隙を埋める心理学的アプローチ
shumei_ito
0
380
エンジニア人生の拡張性を高める 「探索型キャリア設計」の提案
tenshoku_draft
1
120
[CV勉強会@関東 ECCV2024 読み会] オンラインマッピング x トラッキング MapTracker: Tracking with Strided Memory Fusion for Consistent Vector HD Mapping (Chen+, ECCV24)
abemii
0
220
TypeScriptの次なる大進化なるか!? 条件型を返り値とする関数の型推論
uhyo
2
1.6k
第1回 国土交通省 データコンペ参加者向け勉強会③- Snowflake x estie編 -
estie
0
120
Featured
See All Featured
BBQ
matthewcrist
85
9.3k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.2k
The Language of Interfaces
destraynor
154
24k
Side Projects
sachag
452
42k
The Invisible Side of Design
smashingmag
298
50k
Git: the NoSQL Database
bkeepers
PRO
427
64k
A Tale of Four Properties
chriscoyier
156
23k
Designing on Purpose - Digital PM Summit 2013
jponch
115
7k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
93
16k
Become a Pro
speakerdeck
PRO
25
5k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
370
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.3k
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
࣮ࡍʹࣾΠϕϯτͰͬͯΈͨॴײ ࠓޙ࣮͍ͨ͠ͷ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠