読者です 読者をやめる 読者になる 読者になる

bohemia日記

おうちハックとか画像処理、DeepLearningなど

myThingsとIFTTTの比較から考えるDIY文化とメーカームーブメント

はじめに

この記事は、myThings Advent Calendar 2015の9日目の記事です。

前日は、miyauchiさんのスマート鳩時計の作り方(スマート鳩時計の紹介&サーボモータ制御編)でした。 からくりで動く鳩時計を、スマートにしてしまった作品で、普通に欲しいですw

僕はいまこんな感じのおうちハックをしていて、その経験からこちらで述べたとおり、生活に直結するおうちハックでは完成度及び不具合が少ないことが重要と感じています。 自分で立てたサーバーが落ちたり、書いたコードにバグがあると、家に帰ってまでその対応に追われることになり、ゆっくり休めません。そこで主に既存のデバイスとmyThingsやIFTTTを使って構築し、品質の担保を行っています。

f:id:bohemian916:20151209223107j:plain

僕は比較的にこれらのサービスのヘビーユーザーだと思うのですが、主にハードウェアを駆使するおうちハッカー視点でmyThingsとIFTTTの比較や考え方の違いをまとめたいと思います。また以前書いたIoT・スマートホームのプラットフォームについてまとめてみたも参考ください。

myThingsやIFTTTの共通点について

基本的にどちらも、起きる条件と、起こす行動を組み合わせてレシピを簡単に作ることで、WEBサービスやデバイスを連携できるサービスです。使用している用語は少し異なります。

サービス名 起きる条件 起こす行動
myThings トリガー アクション
IFTTT This That

IFTTTは、IF This Then That の略で、「もしこれならあれをする」というそのままのサービスです。 どちらもとてもシンプルにレシピを作ることができるのが特徴です。

サービス形態

どちらもスマートフォンの両OSをサポートしていますが、IFTTTにはWEB画面があります。

サービス名 iOS Android WEB
myThings ×
IFTTT

複雑な条件の設定をするとき、レシピが多くなってきたときはWEB画面で管理できるIFTTTは便利だと思います。

チャンネル数

チャンネルの数はIFTTTが圧倒的すぎるので、比較しません。またサービス開始もmyThingsは間もないので、規模で比較するのはアンフェアかなと思います。正直多すぎて引きます。(IFTTTで連携できるサービスを全部調べてまとめたら、IoTマスターになれるかも・・・。今度やるかw )

トリガーの比較

IFTTTとmyThingsには、共通したチャンネルがいくつかあるので、比較してみます。

facebook

サービス名 myThings IFTTT
近況投稿 - New status message by you
ハッシュタグ付き近況投稿 - New status message by you with hashtag
リンク投稿 - New link post by you
ハッシュタグ付きリンク投稿 - New link post by you with hashtag
シェア シェアをしたら -
指定範囲内からの投稿 - Any new post by you in area
写真投稿 自分が写真付きの投稿をしたら New photo post by you
ハッシュタグ付き写真投稿 自分が指定のハッシュタグ付きの写真を投稿したら New photo post by you with hashtag
位置情報付き写真投稿 自分が位置情報付きの写真を投稿したら -
指定範囲から写真投稿 - New photo post by you in area
写真にタグ付けされた - You are tagged in a photo
プロフィールが変わった - Your profile changes

比較してみると、myThingsは写真にやたら偏っている。IFTTTは、ステータス、リンク、シェア、プロフィールなど幅広く取り揃えています。 よく見ると、なんでもいいので投稿したら、という項目がどちらにもないことに気づきました。

netatmo

サービス名 myThings IFTTT 備考
気圧が上がる - Air pressure rises above
気圧が下がる - Air pressure drops below
二酸化炭素濃度が上がる - Carbon dioxide rises above
二酸化炭素濃度が下がる - Carbon dioxide drops below
湿度が上がる - Humidity rises above 室内・室外
湿度が下がる - Humidity drops below 室内・室外
騒音レベルが上がる 一定以上の音量を感知したら Noise level rises above
騒音レベルが下がる - Noise level drops below
温度が上がる 室温が指定の温度以上なら Temperature rises above 室内・室外
温度が下がる 室温が指定の温度以下なら Temperature drops below 室内・室外
雨を検知 - Rain detected
雨が検知されない - Rain no longer detected
今日の降水量 - Today's rainfall measurement
前日の降水量 - Yesterday's rainfall measurement

IFTTTのほうはとても充実しており、はっきり言ってしまうと、現状ではnetatmoについては、myThingsはIFTTTの下位互換です。
ただまだ出たばかりなので、優先度の高い温度系と騒音を対応したのだと思います。今後の追加に期待です。 *1

Withings(体重計だけ)

サービス名 myThings IFTTT 備考
新しい計測 - Air pressure rises above
体重増加 - Body Scale - Weight measurement rises above
体重減少 - Body Scale - Weight measurement drops below
体重計測なし 最後の体重測定から一定の期間測定しなかったら

Withingsのトリガーはどちらも控えめです。APIでは体脂肪率がとれますし、空気の質も計測しているのでトリガーにあっても良さそうです。 *2

トリガー考察

全般的にIFTTTのほうが種類豊富で、細かく条件を設定できます。 しかしながら下位互換というわけではなく、myThingsにしかないトリガーがいくつかあります。 例えば、「最後の体重測定から一定の期間測定しなかったら」というトリガーはとてもよく考えられています。

スマート体重計は結局乗り続けないと、計測データが取れず、役をなしません。体重が増えてるかも・・と思ってなかなか体重計に乗らない日もあるかもしれません。前回の記事にも書きましたが、初めはIFTTTの新しい計測があったら照明を付ける、といったレシピを作り、帰ったら体重計に乗る習慣をつけようとしました。しかしながらこのレシピでは15分経たないと照明はつきませんでした。Withingsのトリガーがもともとリアルタイムに作られていませんでした。

その点、myThingsの「最後の体重測定から一定の期間測定しなかったら」というトリガーは有用で、乗らなかったときにFacebookに投稿するというペナルティを与える使い方で、毎日乗るようになりました。IFTTTの後追いで同じトリガーを作るのではなく、ユースケースを考えて工夫されていると感じました。

登録チャンネル外の連携

登録されていない市販デバイスや自作デバイスを連携させる手段がどちらにもあります。

myThingsの場合

IDCFクラウド上のサーバーを立ち上げ、MQTTにてイベントを登録、発火させます。
IoTが流行りつつあるとはいえ、なかなかハードルが高いと思います。サーバーの利用料も気にしないといけませんし。 またそれで作ったとしても、15分に1回という発動タイミングなので、厳しいです。Hackeyを買って繋げようとしたら、リアルタイムに発動するのに毎回アプリの即時実行ボタンを叩かなくてはいけないことをしり、がっかりしました。

ただ15分の間隔をうまく使っているハックもあるようです。寝落ちしたらHueなどのデバイスで起こしてくれるもので、寝落ちしても15分は寝かせてくれる、といううまい使い方をしていました。

f:id:bohemian916:20151209213852p:plain:w400

IFTTTの場合

IFTTTには、Maker Channelというものがあり、発表されてからハックがとても捗りました。
トリガーのほうは、これを叩けば、というGetのリクエストを簡単に生成することができます。
アクションのほうもは、自由度が高くリクエストを生成できます。POST, GETはもちろん、PUT, DELETE, HEADなどのメソッド、jsonやurlencoded, plainなどボディの形式も選べて、OAuthでない限りほとんどのWebAPIに対応できるのではないかと思います。
便利なので、メーカーチャンネルからメーカーチャンネルという、認証チャンネルを介さない使い方をしてしまうほどです。 例えば、Hackey→IFTTT→IRKitという使い方で、鍵を回すと照明が付くということが簡単に作れてしまいます。

f:id:bohemian916:20151209214055p:plain

DIY文化、メーカームーブメントの浸透度の違い

こうした比較から思うのは、アメリカ人のDIY文化の強さです。アメリカでは、自分の家の価値を高めるため、生活しやすくするため、積極的に家をリフォームしたり、カッコイイと思うものを自分で作ってみたりと、自分で作る文化性がとても高いように感じられます。Maker Faireもアメリカ発祥ですし、Burning manもそうです。

なぜ日本ではDIYやMakerの文化が根付かず、アメリカがここまで強いかは諸説あると思います。 個人的には、多様な人々、多様な価値観、生活習慣があり、万人が便利だと思うものを作るのは難しいため 自分でカスタマイズしていく文化が強くなっていったことが理由としてあると思います。

こうした人にとって、変にカスタマイズされたものよりも、不完全でも自分で改良する余地が大きいほうが嬉しいです。 こういった文化だからこそ、幅広いチャンネル、トリガー、アクションを用意しているIFTTTが愛されているのだと思います。

f:id:bohemian916:20151209214607p:plain

myThingsへの期待と要望

もちろんこうしたものを直接日本人が受け入れられないのは分かりますが、挑戦していこうとするmyThingsは素晴らしいと思います。こうしたDIY, Makerの文化を広げていってくれることに期待しています。

現状でDIY文化がなかなかない以上、ユーザーを拡大するには、あまり考えなくてもすぐ使えるレシピやトリガーを作ることが必要かもしれません。各デバイスから得られる一次情報を加工して、二次情報として使いやすいトリガーにしてくれると嬉しいです。 例えばNetatmoの場合、花壇に水やりが必要か判断するために、「一定期間内の降水量が閾値よりも小さいとき」とか、家族や老人の見守り用に、「一定期間騒音レベルが閾値に達しなかったとき」などです。

とはいえ、メーカームーブメントやDIY文化を日本にも根付かせる観点から、過度に用意しすぎる方向にいかないことを願います。とにかく自由度が欲しいです。

というわけで、以下の2点を要望します。

リアルタイム性のあるMaker Channel

15分に1回はさすがに厳しいです。リアルの行動がちゃんとリアルにすぐ反映できるようにしたいです。
また、より簡単に自作デバイスもしくはAPIを持つ未登録デバイスが使えるようになるMaker Channelが欲しいです。

時間・場所制限

トリガーを発動する条件に制限を加えたいです。前から思ってるのですが、IFTTTじゃなくて、IF This and This and This Then That and That,くらいのサービスが欲しいです。 具体的には、

  • 寝ている夜中には時間帯には発動させない、といった時間制限
  • 自宅にいないときに発動させない、GPSによる場所制限

が欲しいです。こうしたサービスを一般向けのmyThingsじゃなくても、myThings Proみたいな月額料金制のMaker向けのサービスでもよいです。お金払います。

まとめ

myThingsはチャンネルやトリガーの幅がまだ狭い部分もあるが、ユースケースがよく考えられたトリガーがあります。また開発者向けにはまだまだ使いづらいところがあります。DIY, メーカームーブメントを日本で根付かせるためにも頑張って欲しいです。

明日のmyThings Advent Calendar 2015は、takuya-andouさんです。

*1:IFTTTと差別化するために、老人見守り用に「一定期間騒音レベルが閾値を超えなかったら」とか、花壇の水やり用に「一定期間内で降水量が閾値を下回ったら」とかどうですかね?

*2:IFTTTとの差別化に、「いついつまでに目標の体重まで減量できたら」とかできなかったらとかどうでしょうか?