blog.kur.jp

バイオリンと山、自転車をこよなく愛するkurのチラシの裏。たまには技術的なことを書いたりするかも知れません。

dlvr.itを用いて体重を任意のフォーマットでtweetする

さて、WithingsのWifi Body Scaleを購入したのは良いのですが、どうやってTweetするか?が問題です。もともとWithingsのWebサービスには計測した体重をTweetする機能が付いているのですが、これがあまり出来の良くない代物で、過去の体重との差分がわからない、ということ。増えているのか、減っているのか、Tweetの内容から読み取る事が出来ません。

幸いなことに、Withings社では、Wifi Body Scaleで計測した体重と体脂肪量について、GETやPOSTで取得するためのAPIを提供してくださっています。なので、このAPIを利用して計測した体重を取得し、Tweetするための仕組みを作ることにしました。

真っ先に思いつく方法は、cron等を使いサーバから定期的にWithings社のAPIをチェックし、更新があればtwitterのOAuthAPIを用いてTweetする方法なのですが、今回は、dlvr.itというWebサービスを使って実現することにしました。

dlvr.itとは、RSSを取得して、そのRSSをTwitterやFacebook、Linkedin等のソーシャルネットワークサービスに投稿するハブのようなサービスです。

dlvr.itが登録されたRSSを巡回し、中身を見てtwitterに投稿してくれると言うことは、RSSにアクセスがあった時点でWithings社のWebサービスのAPIから体重を取得し、更新があれば動的にRSSを生成するスクリプトを書くだけで、所望のシステムを実現することが出来ます。

以下では、その手順について書いておきます。

体重をJSONで取得する

体重を取得するためには、 [php] $json_data = file(http://wbsapi.withings.net/measure?action=getmeas&userid=[ユーザーID]&publickey=[アクセスキー]); $data = json_decode($json_data[0],true); [/php] とすれば良いです。こうすることで、data変数の中に体重などのデータが格納されます。

RSSを生成する

dlvr.itのRSSを取得する時に、Withings社のWebサービスのAPIから体重を取得しRSSを自動で生成します。 RSSを生成する時には、自分でがりがり書いても良かったのですが、PHPでATOM、RSS1/2フォーマットのフィードが超簡単に吐き出せる「FeedWriter.php」で紹介されているFeedWriterを利用しました。これを利用することでとても簡単にRSSを生成することが出来ます。

注意点としては、dlbr.itのサポートページにも書かれていますが、guidをきちんと設定してやることです。当初私は、guidを設定していなかった(RSSの仕様的には間違いではない)ため、dlvr.itでうまくRSSを認識してもらえませんでした。

dlvr.itの設定をする

作成したRSSを読み込み、Tweetする設定を行います。

体重計に乗る

体重計に乗ります。dlvr.itで設定したタイミングにもよりますが、dlvr.itがRSSを読みに来ると、最後に測定した体重をtweetするようになりました。あとは、痩せるだけです。