愛と勇気と缶ビール

ふしぎとぼくらはなにをしたらよいか

iPhoneをhtmlなプレゼンのリモコンにするための何か

会社で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触ったら色々変わっててびびった。