pebbleからkeynoteを操作してみるよ

Keynoteのようなプレゼンテーションソフトを遠隔操作するアイテムは色々と販売されていますが、pebbleでできたらお得な気がする!

というわけで、pebbleからmacのkeynoteを操作するアプリの紹介です。pebbleアプリと言ってもストアには登録していません・・・。

登録するにしてもサーバー側が無いと使えないので・・・。

Pebble screenshot 2014 10 11 02 38 11

どういうことができるの?

pebbleの右側の上と下のボタンを使って、Mac上のKeynoteを進めたり戻したりできます。

何かに反応すればいいので、加速度センサのtap(えいっ、って時計を回したり降った時)に動くようにしたりできます。

どうやって使うの?

githubからcloneする。

まずはgithubから持ってきます。

[code lang=sh]
git clone https://github.com/planset/pebble-slidecontrol
[/code]

pebble

[code lang=sh]
cd pebble
pebble build
pebble install
cd ..
[/code]

インストールしたらスマートフォンのPebbleアプリでインストールしたアプリのSettingsを開き、Keynoteを動かすMacのIP:18888 を入力して保存します。

MacのIPが192.168.0.10の場合には、192.168.0.10:18888と入力します。

server

kyenoteを起動している端末でhttp_serverプログラムを起動します。

[code lang=sh]
cd server
./http_server
[/code]

またはポートを指定して起動します。

[code lang=sh]
./http_server 9999
[/code]

ポートはデフォルトでは18888です。こちらの起動ポートを変えた場合には、Pebble側のSettingsのポートも変更して下さい。

起動すると以下の様な表示になり、pebble側が正しく動いていればボタンを押すとnextやbackが表示されます。

[code lang=sh]
Starting server … 0.0.0.0:18888
next
back
[/code]

この状態でKeynoteを開き、プレゼンを開始してからPebbleのボタンを押すと、スライドを操作することができます。

中身どうなってんの?

pebble <-> Mac

PebbleKit JavaScript FrameworkからMac上で動かした簡単なhttpサーバーにアクセスしているだけです。

最初はpythonでwebsocketを使ったサーバーを作っていたのですが、誰かに使ってもらえたら使ってもらいたいなー、と考えたところ、python環境構築をするのは無理な気がしました(そういえばpy2exeみたいの最近触ってないなぁ・・・)
それで現在はgoで実行ファイルを作っています。
macなら動く・・・よね・・・?

Keynoteの操作

applescriptを使うと簡単に使うことができます。

[code lang=text]
on run eventArgs
if application "Keynote" is running then
tell application "Keynote"
set aF to frontmost
set aP to playing
if {aF, aP} = {true, true} then
show next
end if
end tell
end if
end run
[/code]

こんなスクリプトを next.scpt として保存して、

[code lang=sh]
osascript next.scpt
[/code]

という感じで実行すればページが1頁進みます。
戻す場合は、backです。

applescriptについては全然良くわかってない上に、一体どこで勉強すればいいのかもわかっていないのですが、こちらのサイト AS Hole(AppleScriptの穴) By Piyomaru Software がものすごく色々スクリプトを公開してくれているので、Macで何かを自動化したいときには参考になります。

たぶん、Mac上で行うほとんどのことはapplescriptで操作できそうな気がします。

まとめ

Keynoteを離れたところから操作したい場面は無きにしもあらずなので結構助かります。

あとは加速度センサでジェスチャ認識の処理を作りたいですねー。