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

こんにちは。僕は 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などと連携させてしっかりした物を作るのは難しそうです。エミュレータは準備中と何処かで聞いたきがするので、期待したいですね。

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

走った記

f:id:side_tana:20171127234219j:plainf:id:side_tana:20171127234224j:plain
土曜日。相変わらず心拍数160を狙って走る。今回はピタリとは行かず、という感じ。平均で160超えないと明らかに楽ということがわかった。あと走ってる間に向こう脛が痛くなるのが減った。

f:id:side_tana:20171127232637j:plainf:id:side_tana:20171127234057j:plain
月曜日。なんかペース早かった(いつも最初の1キロが遅めなのは信号と坂道のせい)。今回も心拍数は160を狙っていたけど後半割と超えてて大変って感じだった。走ってる途中、ちょっと足を伸ばして4キロぐらい走ってみよう、みたいな気持ちになったので雑にルート変えたら変な信号に引っかかってしまったので気をつけたい。

高校の時のマラソン大会が7kmで35分ぐらいだったので、そのぐらいのところを目指しつつ暑くなる前まで続けるのを目標としてやっていこうという気持ち。

fitbit ionic を買った*1
www.fitbit.com

SVGJavaScriptでウォッチフェイスやアプリが書けると聞いて思わず買ってしまった。そっちの話はテックの話を書いてるブログでそのうちちゃんと書きたい*2

せっかく面白グッズを買ったので使ってみようと思ってジョギングをしました。最後にジョギングみたいな活動したのは前世*3なので実に9年ぶり。

f:id:side_tana:20171118215117j:plainf:id:side_tana:20171118215121j:plain
1日目

これは1日めの様子。ペース感がつかめず雑に走ったらめちゃくちゃ苦しくなって破滅した。

f:id:side_tana:20171119234740j:plainf:id:side_tana:20171119234745j:plain
2日目

悔しかったのでまた走ったのがこちらで、今回は心拍160ぐらいを保てるように意識しながら走ったところ、意外とペースをちゃんと保てた。途中からだんだん向こう脛が張った感じになってきて苦しくなって、最後は歩いた。これぐらいの感じでちょっとずつタイムを縮めていきたい気がするけど、いつまで続くのか、今回が最終回かも、人生だって同じ、、、


今週見た映画:

飽きさせない展開と鮮やかな映像が良くて、音楽もよかった。

*1:日本では来年1月発売

*2:それはそうとして驚きの出来事があり既に少しだけ書いてます: Fitbit StudioにiPhoneが繋がらない場合に試すべき民間療法 - 無知を晒す

*3:高校時代

まとめ日記

  • しばらく日記書いてなくて書いてないこといっぱいあった
  • 映画見た
  • キャンプ行った
    • キャンプ用品レンタルっていうのがあって意外とキャンプできた
    • ヘリノックスの椅子買った
    • モンベルでハイキングシューズ買った
    • 安いヘッドランプ買った、最近のLEDかつボタン電池みたいなやつは小さくて軽くてすごい
    • 中古のフリース買った
    • アルミローテーブルもらったから冬もデイキャンプとかしたい
  • ハロウィンやってたから見物しながら帰った
    • なんか普段見ない風景が広がってて愉快な気分になった
    • みなさん思い思いに楽しんでいてよいですねという感じ
    • さすがに3年体験してるので心に余裕ができた
    • しかし人混みでモデルガン抜き身、長ものとかはやめて欲しい
      • というか銃刀法違反では???
    • ゴミのポイ捨てと歩きタバコも意外といた、人混みでしかいないのに空きカンが転がってきてワオって感じ
    • いいお車をお持ちの方がたくさんいらっしゃった(皮肉です)

27歳になった

2週間ぐらい前の話。バンドは組んでないので27クラブ入会資格はまだ満たしていません。

f:id:side_tana:20171025002104j:plain

これは今日作った鮭とキノコのホイル焼きです。美味しかったです。

そういえば久々にタイムズカーXのレンタル規約を確認したらいつの間にか25歳に年齢制限が下がっていたので*1いつでもポルシェでドライブ可能ということがわかりました。やりました。

アレはコレです。2年ぶりぐらいにほしい物リスト入れ替えたけど、欲しいものって改めて聞かれると結構難しい。

プレゼントに関するあれこれを書こうと思ったのですけど、この文脈で書くと「こういう風に選んでね」って感じになりそうなのでまたの機会に書きます。

*1:調べたら2015年の春には25歳になってたらしい、まじかよ

久々に自炊した

久々に自炊した。最近ツイッターでしばしば見かける常夜鍋ってやつ。

レシピ雑で,水と酒と出汁要員を煮立てから、手頃なサイズに切った肉とほうれん草、或いは小松菜を投入する。クックパッドとかで調べてもそういう感じだったからそういう感じっぽい。ポン酢とかにつけて食べる。

写真はないですが、概ね同じ画になると思うので適当にググったらいいと思う。

味はシンプルで安心する感じ。まだまだ研究が足りてない感じはあって,今回は出汁要員の火力が足りなかったのと,生姜とかレモン汁みたいな参加者の不在が影響してると思う。

あとは結構煮立たせてしまったのかも。とはいえ豚肉の臭みみたいなのはなかったのでそのあたりは問題なくて良かった。

京都なんか#3 の懇親会で、Goで構造体の値をどう呼ぶか困るみたいな話をしたのだけれど、懇親会ということもあって若干記憶が怪しく、もったいなかった。

「構造体型でメモリ確保した後のやつってなんて呼びますか、インスタンスって言っちゃいたくなるんですけどインスタンスではないじゃないですか?」

「なんだろ、構造体の値?」

「それだと構造体の要素の値っぽい?」

「foobar型の値みたいな?」

「エンティティとか?」

「それだと何も表現してなさそう」


「一方で関数の話をすると、レシーバが設定されている関数はメソッドって呼びたくなる」

「レシーバ設定されてるならメソッドって呼んでも怒られなさそう」

「しかしインスタンスと呼ぶとまずいよね」

みたいな話をした気がする。