会社でid:gfxさんがWebSocketを使って夢が広がるエクストリームなプレゼンをしてくれたので、海外の空気を読まずに作ってみました。
https://github.com/zentooo/SkyWalk
端的に言うと、Socket.IOを通じてリモコンとなるiPhone/Android(?) のブラウザでキャッチしたスワイプイベント(swipe eventというものはないので、実はtouch系でエミュレートしてるだけ)の情報をhtmlプレゼンの側に送っています。
プレゼン側jsでは/socket.io/socket.io.js/とcontroller.jsを読み込んだ上でswipeLeft, swipeRightなどのイベントをキャッチしてプレゼンの操作と結びつけます。
例えばこんなかんじ
document.addEventListener("swipeRight", prev, false); // prevは前のスライドに戻る関数 document.addEventListener("swipeLeft", next, false); // nextは次のスライドに進む関数 document.addEventListener("tap", showNext, false); // showNextは同スライド内の次の行を表示する関数
なんで右swipeを戻りで左swipeを進むにしているかは、普段iPhone/Androidを操作している時の指の動かす方向を考えればわかるとおもいます。
Socket.IOを使っているので、Socket.IO protocolを喋るサーバをローカルで動かして、同じ無線LANに接続したiPhoneから操作する、という使い方になります。
それじゃhtmlプレゼンなのにどこかに適当にupしてもうごかねーじゃねーか、っていう話もありますが、どこかにupしたものをみる場合は普通にクリックで次に進めるなりjkで移動したりするなりすればいいのです。
サーバ側はライブラリ化してなくとサーバアプリと密結合してますが、その辺はあんまり切り離す意味もないので。今はnodeな実装しか用意してないですが、そのうちPerlのPocketIOとかその他の言語分も用意するかもしれません。
てか、デモとかないとよくわかんないですねこれは。
あと、ひさしぶりにSocket.IO触ったら色々変わっててびびった。