今年試したスマートウォッチ

こんにちは。僕は id:side_tana

この記事は大学時代に同じサークルに入っていた人たちで書いているアドベントカレンダーの19日目の記事として書いています。(ここに18日の人の記事へのリンクを貼る)。

というわけで今年試したスマートウォッチを2個紹介します。

ひとつ目、GARMIN の VIVOACTIVE J HR です。GARMIN といえばカーナビとか船舶ソナーのイメージがあるかもしれませんが,スポーツ・ゴルフをターゲットにしたスマートウォッチも作ってます。あとサイクルコンピュータとかでよく採用されている通信方式にANTっていうのがあるんですけど、開発してるのはガーミン傘下の企業だったりします。多分そういうことだと思うんですけど、GARMIN のスマートウォッチはだいたいANTに対応している気がします(ちゃんとは調べてません)。

僕自身はANTでの連携を使ったことないのですが、自転車のケイデンスセンサと連携させたり*1、走るときにランニングダイナミクスポッドって機器を身に付ける*2 ことで、 接地時間バランスやストライド幅、上下動などを記録できる。

もちろん単体で使っても歩数やGPS、高度変化、心拍数みたいなものは一通り記録ができます。

バッテリーのもちは良くて、10日ぐらいは使えたきがする。うろ覚えなのはもう手元にないからです。

で、ここからが本題なんですが、GARMIN のサイコンやスマートウォッチでは Connect IQ というプラットフォーム(?) が使えます*3

apps.garmin.com

で、ConnectIQ端末向けのSDKが提供されていて、スマートウォッチ上で動くアプリケーションを自分で書くことができます(!!!)。

ConnectIQ App は Monkey C という言語で書くのですが、これはなんなんですかね、なんなのですか。まあなんか公式サイトには

As Italian and Spanish derive from Latin, Monkey C derives heavily from past languages. C, Java™, JavaScript, Python™, Lua, Ruby, and PHP all influenced the design for Monkey C. If you are familiar with any of those languages, Monkey C should be easy to pick up.

とか書いてあるので恐れることなくやっていきましょう。公式のドキュメントを見ながらいじってると2時間ぐらいで心拍数を取得してHTTPでPOSTするアプリケーションがかけます。エミュレータがあるのでPC上での動作確認は簡単。実機はPCにつなぐとストレージデバイスとして認識されるので、Finderで開いてから、それっぽいディレクトリにビルドしたアプリケーションパッケージをコピーすればOKです。素朴。

そして実機だとおもったように動きません。なぜか。ひとつには僕が iPhone ユーザだったためです。Vivoactive J HR から直接TCP/IPを使う事はできないので、Bluetoothで接続されている親端末にインストールされているアプリがプロキシしてくれるのですが、ここで普通のHTTPを使うとATSに引っかかるんですよね。そして何が起こるかというと iOS 上の GARMIN Connect App がクラッシュする。3月ごろに試した時の話なので、もう解決されているかもしれません。

もう一つあって、POSTに成功するのですがレスポンスが読めなくてこっちは完全に謎、、、当時6時間ぐらい調べてたんですがさっぱりでした。今思い返してみると、レスポンスが gzip とかだったのかもしれないですね。

という事でなかなかクセがあるのですが、開発ツールは一通り提供されているので頑張れば結構遊べるのでは? と思います。みんなも Monkey C で遊ぼうぜ。

次に紹介するのは Fitbit の Ionic です。GARMINとの違いでいうと、当然というか、ANT対応はないです。液晶はかなり細かくて表現力があります。バッテリーのもちは5日ぐらい。GPS歩数計などはほぼ同じ機能があり、運動記録もできますし、睡眠分析は GARMIN より詳しくしてくれます。ストレージが結構大きくて、2GBぐらいの音楽を入れることができます。音楽聴きながら走りたいこともあると思うのですが*4、そういう時、Fitbit Ionic を腕につけ、BluetoothのイヤフォンをつけるだけでOKということになります。

そして Fitbit Ionic も GARMIN と同じように自分でアプリケーションを開発できます。しかも JavaScript + SVG という特にウェブをやっている人だと手を出しやすい感じ。また全体のアーキテクチャとしては、スマートフォン側で動かすアプリケーション(Companion App と呼ぶ。JavaScriptで書いて、fitbit アプリ内で動作させる)と、Ionic上で動作するアプリケーションの二つのライフサイクルがあり、それぞれで使えるAPIが異なるので、お互いにMessagingしながら動作します。

また開発環境はブラウザ上で動作します。これが結構特殊で、この開発環境とスマートフォンとIonicは、それぞれ Developer Bridge と呼ばれる仕組みで相互に接続されます*5。ブラウザでプログラムをかき、ビルドボタンを押すと、すぐにスマートフォンとIonicにアプリがインストールされます。未来。

そしてスマートフォンとIonic場で動作したアプリケーションログはブラウザ上の開発環境で確認できます。未来、、、

f:id:side_tana:20171219015454p:plain

そんなわけでドキュメント見ながら2時間弱ぐらいカタカタするとすぐに Mackerel で心拍数を監視できるようになります。

f:id:side_tana:20171219012433p:plain

よかったですね。ちなみに基本的なアーキテクチャが同じなので、IonicもATSの制限は受けるのですが、こちらはちゃんとログに「httpsじゃないと通信できないよ」って出してくれます。親切。


開発について、手っ取り早く遊べるのは間違いなく fitbit なのですが、今の時点では全てがウェブで完結してしまっていることもあり、VCSやCIなどと連携させてしっかりした物を作るのは難しそうです。エミュレータは準備中と何処かで聞いたきがするので、期待したいですね。

それにしてもいろんなセンサが乗ったデバイスで簡単に遊べるのは夢が広がりますね。どうですか、やっぱり若い子はスマートスピーカの方が興味あるのかな、僕はもう健康のことしか考えられません。