SmartTrainingでPebble対応してみました

はじめに

去年Kickstarterで勢いのあったPebble。即Backerになりました。
発売されたのは2013年1月くらいでしたが、なんだかんだで発送が遅れて入手できたのが2013年5月。とりあえず使ってみて、今まで使ってきたLiveViewやSmartWatch MN2と違った面でイイ感じだったのでSmartTraining対応してみました。

Androidアプリ
WatchApp


忘れても思い出せるようにメモしときます。

ユーザ的観点


抜群のバッテリーの持ちの良さ

今まで使ってきたsmart watchに比べると電池の持ち時間が圧倒的に長いです。
LiveViewとかMN2だと静かになるべく使わないようにしてギリ二日とかだったのが、PebbleだとGmailの通知1日50件くらい発行しても1週間経ってようやくバッテリー警告が出る感じ。警告出てから1日経っても干上がりませんでした。その後は試してないですが。とにかくバッテリー面の運用が楽です。

実用的な液晶

IS03に使われていたメモリ液晶と似たような雰囲気です。白黒しか表現できません。パッと見地味ですが、明るい場所で全く見えないMN2と比べると、直射日光下でもちゃんと見えるので実用的です。暗い場所ではバックライトONで見えるようになります。

不快なリストバンド

他のsmart watchと同様、通気性ゼロのゴム性のバンドです。梅雨時期に付けていると不快感100%です。しかも交換は不可。なんでこういうバンドにしちゃうんでしょうね。まぁ、耐久性は抜群なんだと思いますが。きっとHQのあるカリフォルニアの気候だとこういうバンドでも問題ないんでしょうね。

文字化けするビルトインアプリケーション

Phoneからの通知は全体的に豆腐に文字化けします。あとたまに生HTMLが表示されたりします。日本語を含むGmail通知はまともに読めた試しがありません。

開発者的観点


C言語

C言語(C++ではなく)にPebble独自のフレームワークを乗せた感じです。フレームワーク自体はサンプルが少ないながらもリファレンスは充実しているので使いやすいと感じました。また、標準的なC言語ライブラリが全て利用できるわけではありません。例えばmalloc、free、sprintf、mutexなどいくつかの機能が削られています。まぁ、利用可能なリソースが限られているので、シンプルに、軽いフットプリントで動くものを作れ、ということなんだと思います。

効率の悪い開発環境

開発環境はわりと貧弱です。エミュレータ/シミュレータがないため、実行するにはBluetooth経由で実機にアプリを転送後、実行する必要があります。開発環境に直接接続してブレークポイントを張ってデバッグといった贅沢なことはできません。また標準出力も利用できないので、私はデバッグログの代わりにバイブレート関数を呼んでバイブのパターンで期待する条件を通っているか確認しました。ちょっと複雑なものを作ろうと思うと大変そうです。
IDE的にはCloudPebble.netあたりを使うといい感じかもしれません。が、個人的にはやっぱりソースコードは手元に欲しかったので本格的には使いませんでした。


遅延のあるPhone〜Pebble間通信

Phone〜Pebble間の通信の遅延がわりとあります。かつ、遅延の大小が安定しません。数百ms〜数秒と結構バラバラです。リアルタイム性の高い通信をやろうと思ってもたぶん実現できません。送受信するデータサイズを小さくすると若干改善します。あと、予め用意した通信バッファを超えるとアプリが落ちます。頻繁(1秒間隔とか)に通信させるのは現実的ではないかもしれません。


悩ましいフォント

デフォルトで利用可能なフォントだと選択肢が少ないのでフリーのフォントを使ってみました。解像度が低いので、フォントによっては荒く見えてしまいます。とりあえず、SF square head condensedというフォントを使ってみましたが、満足はしていません。最終的にはフォント自作しかないかな、と考えています。

その他

書いたコードがどこで動くかがわかりやすいです。何を言いたいのかというと、NM2ではAndroid上で動くコードとSmartWatch上で動くコードがシームレスなため、書いたコードがどこで動くのかが判然としません。そのため、例えば何を書くと通信が使われ、結果的にバッテリーを消費するのかということを意識するのが難しいです。Pebbleだと、書いたコードはPebble上で動作し、通信するときはapp_message_out_send()する、といった感じで何をやったらバッテリー消費しやすいかの意識をしやすいため、より低消費電力なアプリケーションを作り易いのではないかと思います。

全体的に

今の技術レベルで無理をしていない実用的な良い製品だと思います。日本の夏を乗り越えられたら使えると思います。

ソースコード

初めて作ったコードなので質的にはどうかと思いますが、もっとPebbleが盛り上がってくれるといいなという期待を込めてソースコードを公開してみます。


コメント

このブログの人気の投稿

Joinノードを使う(その1)

Execノードを使う

Joinノードを使う(その4)