この記事はギークハウス新宿界隈 Advent Calendar 2017の10日目の記事です。前日はid:pontatanpoさんのギー宿と部屋(掃除)と私という記事でした。いいところを話す前に終わるという闇が深い記事でしたね。
さて、ギークハウス岩手三陸大船渡住人の種延です。過去にはギークハウス元住吉、ギークハウス新宿四谷、公園などに住んでいました。
今回は無職生活の質を高めたいなあという想いでFlicというIoTボタンでTogglというタイムトラッカーを切り替えられるようにしたという話を書きたいと思います。あとGoogle Homeもちょっと触れています。今の所個人用途ですがシェアハウスでも役立ちそうなので勘弁してください。
Togglとは時間管理の定番タイムトラッキングアプリです。使用感は一言で言うとログができるストップウォッチという感じのシンプルな設計ですね。ポイントはタイマーを押す前、タイマー稼働中、タイマー終了後のどのタイミングでも編集できるところかなと思います。
macOSのデスクトップアプリにはAutoTrackという機能もあるのですが、基本的には自分の任意のタイミングで手動でオンオフを切り替えることが基本となります。ライフログ関係は自動であるには越したことはないものの、僕は認知機能のエクササイズとしても使用しているところがあるので、自分が今何に時間を使おうとしているのかという意識を切り替えるという効果も期待しているので一概に悪くはないのかなと思います。(ちょうど不便益 benefit of inconvenience という記事がありました。)
基本的にはtogglを使用して大学の勉強やアニメの視聴時間、散歩とか運動の時間なんかを全て記録しています。うまいこと時間管理に関する自己効力感を得てこの記事のように使用をやめるのが理想ですね。
さて、togglですがどうしても使いづらい部分があります。それは明らかにPCでの使用を前提にしたUIで、AFKしている時の使用感はまだまだ不十分なところです。
Webサイトにも乗っている通り、万能なTime Trackerであると同時にEmployee Timesheetな訳なので、ホワイトカラーがパソコンの前に座っていることが前提なわけですね。
iPhoneアプリもリリースされているのですが、起動に数秒かかる(この辺はiPhone6のスペックによるところもありますが)のでタイマーのオンオフは日常的に使用するには少し負担が大きいです。
iPhone Appの使い辛さを解消してくれそうな、そしてTogglユーザーなら誰しもが欲しいと願うApple WatchのAppはリリースされていません。Twitterで少し検索をかけると次のようなやり取りが結構されています。
Unfortunately not, while we agree toggling from the Apple Watch would be really nice, it's not in our immediate plans.
— Toggl Track (@toggltrack) July 24, 2017
このやり取りを見てもTogglの開発チーム的にはモバイル場面での使用の優先順位は低いことがわかります。これはPricingを見れば明らかなように、やはりPCの前で仕事をする人達に向けて開発資源を優先的に投下するのはまあ仕方がないのかなあというところです。
というわけで、公式がモバイル環境をいい感じにしてくれることを期待してても時間がかかりそうなので、このあたりは自分でやるしかありません。幸い、TogglはAPIが公開されているのでなんとかなりそうです。
Apple Watch Appを自作するというのもなかなか面白そうですが、これは成長的課題になってしまって明らかに時間がかかると思うので今回はパスします。
最初に考えたのはボタンのような物理的なインターフェースで切り替えられると楽だなということです。
iPhoneでTogglを使う場合は、
とタイマーの切り替えまでに少なくとも5つのアクションが発生しています。
ボタンというインターフェースが優れているのは
と、アクションを激減させることができることですね。IoT端末として安物の中華泥端末でいいんじゃね?ということをよく言いますが、日常的に繰り返し使うものほどアクションをどれだけ減らせるかが浸透させるのに重要だと考えるのでやはりボタンで実現したいと個人的には思います。
前置きが長くなりました。色々いいIoTボタンないかなと探していたのですが、そこで見つけたのがFlicです。
一番惚れたポイントはClick, Double Click, Holdとボタンの押し方によって違うトリガーの発火が可能なところです。防水で場所を選ばないし、クリップで装着もできるのでこれはなかなか使い勝手が良さそうです。
FlicとTogglの連携についてはライフログを手軽に見える化:時間管理ツール「Toggl」とスマートボタン「Flic」という記事にわかりやすくまとまっています。Togglのさらに残念なポイントですがZapierには対応しているものの、IFTTTに対応していないところです。Zapierで実装する場合、オンオフを1ボタンで切り替えるためには一旦Togglのステータス判定を間に挟む必要があるので課金が必要なんですね。ちょっと色々いじったんですが直感的に設定しづらかったので諦めました。連携考えるなら文字通りToggleできるコマンドを用意して置いてもらえると嬉しいですね。
Indiegogoの人気プロダクトということもあって日本に輸入すると1ヶ月ぐらいかかったという記事も見ましたが、今は落ち着いているのか普通に一週間くらいで到着しました。
今回は記事にも紹介されていたNode.js製のflictogglを使用します。Herokuにデプロイして使用し、FlicからHTTPリクエストを飛ばすと現在のtogglのステータスを判定してオンならオフにオフならオンに切り替えます。
今回はいくつか変更を加えてからデプロイしました。
まず、Flic側の設定でレスポンスを表示することができるのですが、この際の表示があまり良くないので任意の文章に置き換えます。
それからflictogglで作成したTimeEntryについては、Preseneceというdescriptionがつくのですが、とりあえずiPhone版の挙動に寄せて、descriptionは空、後からわかりやすいようにflicタグをつけるようにしました。
Node.jsのAPI Documentを読みながら適当に書き換えたけどうまく動いてよかった…。
Flic側でHTTP Requestをアクションに設定します。flicの設定はペアリングした端末のAppから行います。今回はiPhoneです。
ここで一つ注目ポイントはそれぞれのボタンごとに複数のトリガーを発火させることができるというところですね。わかりやすくDouble Clickに複数追加してみました。
これはつまり、うんこをしたときに押したらTwitterにうんこなうとツイートし、部屋の照明が七色に光り出し、Spotifyでオーケストラが再生されるという素晴らしい体験が発生するボタンも作れるということです。
Heroku AppのURLにPOSTリクエストで飛ばします。BodyにapiToken=togglのAPIキー を入力します。画像では出てませんが、下の方にShow responseという項目があります。デフォルトのYESだとリクエストを送った時にプッシュ通知でレスポンスが表示されるのでそのままにしておきます。(flictogglのデフォルトだと{ status: 'success', message: 'Started' } という感じに表示されるので先の項目でここを任意の文字列に修正しました。)
カチカチ押してみます。まずはFlicのアプリがボタンを押されたことをサウンドかバイブレーションで教えてくれて、しばらくするとレスポンスがプッシュ通知で表示されます。
いいねぇ…。実際にTogglの方も切り替わっています。
これでボタンのワンプッシュでtogglを切り替える環境が出来上がりました。
さて、Flicはクリップが付属していてシャツとかに挟んでモバイルすることができます。これで一応外出中のトラックもできそうですが、僕の場合すぐに落として無くす可能性が高いです。
何かいい案はないかなあとふと自分の左手をみました。
僕の考えた最強のflic固定場所 pic.twitter.com/vNpFcuDigW
— たねのぶ (@mtane0412) December 7, 2017
ここに凶悪なウェアラブルが誕生しました。そんなところにつけるならWatch App作れよ!という感じですが今の僕にはこれが限界です。
Flicの iPhone / macOS アプリは母艦としての役割以外にも、TASKSやWidgetなどのソフトウェアボタンとしての機能もあります。せっかくなのでそっちからもHerokuにリクエスト飛ばしてオンオフできるようにしてみました。iPhoneもMacもそれぞれコントロールセンターのウィジェットとして登録することができます。
赤いボタンがtogglですね。もちろんFlicアプリの方からも発火できます。iPhoneではほぼ使わないだろうということで下の方に置いてるのでそのうち消すかな。
macOSはコントロールセンターにWidgetを追加できます。
コントロールセンターを右からヒョイっと出して押せばtogglの切り替えが可能です。もっとも、Mac上だとAlfredからコマンドラインを実行させるのがベターだと考えているのでそのうち環境作りしようと思います。
Google Home Miniきた pic.twitter.com/EqjLsHgMIS
— たねのぶ (@mtane0412) December 6, 2017
Google Home Miniをセールで入手しました。GoogleHome経由でIFTTTのWebhookからHerokuのflictogglにリクエストを飛ばしても当然切り替えが可能なので実装してみました。
今回はFlic用のものをそのまま流用しているので切り替えのみですが、Google Homeだと切り替えだけでなく大雑把にdescriptionとかを音声入力してワイルドカードに当てればあとで修正しやすくなるという絶大なメリットがあるのでそれ用のコードをこしらえたほうがいいかもしれませんね。
ちなみにダブルクリックとホールドに何入れようかな〜と考えていた時にGoogle Homeに話しかけて娘のおむつ交換を記録するという記事をみて、これはいいなと思いました。
というわけでFlicのダブルクリックとホールドにはそれぞれ無職(29男性)のおしっことうんこの記録をスプレッドシートに記録を取るようにしました。
赤ちゃんのオムツ交換記録記事を見て29歳無職の排泄記録を取るデバイスを稼働させてるけど捗るぞ pic.twitter.com/eYU8O2wfIP
— たねのぶ (@mtane0412) December 8, 2017
これは自分が行なっているライフログの中でも満足度がかなり高いです。時々見返しては多幸感を得ています。スプレッドシートなのでデータの利用もしやすくていいですね。
なお、Google Homeにうんちとかおしっことかいうとそっちでも記録してくれるようにしています。
AFK中のTogglの切り替えの時に毎回時間がかかってイライラしていたのが今ではワンプッシュで済むので効果がかなり絶大です。あとうんちとおしっこの記録も本来ならめちゃくちゃだるいのに今のところ100%記録できていますね。
今回は完全に個人用のデバイスにしましたが、Flicはシェアハウスに応用が効きそうなので色々作っていきたいです。
懸念するポイントとしては母艦をどうするかという問題で、Raspberry Piとかでええやろと思っていたのですが、一応Linux用のSDKのBeta版は公開されているものの、ちょっと調べた感じ動作するのに色々ハマりポイントがあるっぽい感じです。あとは接続台数と電波の具合で色々考慮しなければいけないかな。
それからFlic Hubというオフィシャルな据え置き型の母艦機がPre-Order中です。少し高いのですが、接続台数と結構な範囲繋がるよということを言っているのでちょっと期待しています。すぐには買えないのでまずはラズパイでしょうかね。
Rebuild.fmを聞いていたらちょうど同時期に@miyagawaさんもFlicを購入してたみたいでちょっと嬉しくなった。Episode196でFlicの話をしています。
プログラミングは別にフルスクラッチで何か作れるくらいの技術がなくても、優れたプロダクトとWebサービスやGithub上の便利なアプリケーションを利用できるだけのレベルでもかなり生活をハックできると思いました。色々簡単に利用できるようになっているので感謝ですね。
明日はギークハウス千葉大網白里管理人の@kbaba1001さんです。ぎーあみの今後に注目です。