cloudBitを使ってノンプログラミングなIoTを実現する

littleBitsを使うことで、IoTワークショップ開催する場合でも、電子回路作りの部分は試行錯誤が自由にできるので、例えば4.5時間あれば、1.5時間で問題の観察(LOOK)、次の1.5時間でアイデア出し(THINK)、最後の1.5時間でプロトタイピング(DO)といった時間の使い方で、触れられる・動作する・体験が得られるところまでたどり着けます(アイデアを評価するのではなくプロトタイプから得られる体験を評価する)。
とはいえ、cloudBitを使う場合、ノンプログラミングではあまり複雑なことはできないのが難点です。例えば、[IFTTT](https://ifttt.com/)との連携でも、条件部に書けるのは、cloudBitへの入力が発生した場合、またはゼロになった場合の２種類に限られます。
![lbiot00.png](https://qiita-image-store.s3.amazonaws.com/0/19248/e275fdee-3284-4813-502a-76e8857e8573.png)

そんなわけで、もう少しだけ複雑なことがやってみたく、ノンプログラミングなIoT実装環境を作ってみました。

## 作ったもの
次の機能を備えたウェブアプリケーションです。
* cloudBitの管理(登録,削除)
* cloudBitから通知されたデータの表示
* ルール管理(特定のcloudBitからの値が条件を満たしたら、同じ/別のcloudBitに指定された値を送信する)

![lbiot01.png](https://qiita-image-store.s3.amazonaws.com/0/19248/9bf22354-c0d3-72e3-63f7-18a718b04355.png)

## cloudBitの管理
あらかじめ[Cloud Control](http://control.littlebitscloud.cc/)で登録しておいたcloudBitを本アプリケーションでも使用可能です。

![cloudBit Management](https://qiita-image-store.s3.amazonaws.com/0/19248/309b6cf8-8a58-db3b-c332-412fc3697642.png)

DeviceIDとTokenを指定して登録することで、当該cloudBitのOnline/Offline状態や、次に紹介するデータの表示、および、当該cloudBitへの値の送信テストが可能です。

## cloudBitから通知されたデータの表示
cloudBitから通知されたデータを表示します。先ほどのcloudBitの管理画面からcloudBit名をクリックすることで、当該cloudBitからの通知データを表示可能です。

(後でスクリーンショット入れます ... なんだか今日はcloudBit関連の調子が今イチ)

## ルール管理
特定のcloudBitから通知された値が条件を満たした場合(指定された数値より小さい、以下、等しい、以上、大きい)に、同じあるいは別のcloudBitに指定された値、または前述の通知された値をそのまま引き渡すことが出来ます。設定されたルールは即時反映されます。

![lbiot05.png](https://qiita-image-store.s3.amazonaws.com/0/19248/df7b19e7-8d76-fba1-9364-75a294a6a8f6.png)

## 実際のワークショップ
IoTワークショップを開催する際には、１グループ(5~6人)にcloudBitは2つ渡し、1つを赤のinput系bit(センサー)とつなぎ、もう1つを緑のoutput系bit(アクチュエータ)とつなぐような進め方が多いです。ときにグループをまたがってcloudBit同士が接続されるようなケースもあり、ステークホルダーをまたがってさながらエコシステムが構築されていく様子を見ることも少なくありません。

また、ワークショップで注意しているのは、littleBitsだけでプロトタイプを作らないでください、という点です。例えばスプーンにlittleBitsをつける等、現実社会に存在するものにセンサーやアクチュエーターがついたらどうなるのか、それを試作するためのツールがlittleBitsである、というナビゲーションをしてあげると、業務や暮らし、サービス等を変えるアイデアが出やすいかと思います。

## プロトタイピングの前と後で考え方が真逆に変わる
介護IoTワークショップを開催した時、介護士さんや介護を受ける方が身につけるウェアラブルをはじめとしたさまざまなアイデアが出てきました。

実際にプロトタイピングに入る前に、そもそも、参加者のみなさんはどんな人に介護を受けたいですか？という質問を３択でしたところ、「日本人介護士(費用高)＞外国人介護士(費用中)＞ロボット(費用安)」だったのが、プロトタイプを作ってもらい、実際の介護現場での使用例として、各グループから介護士役と介護される老人の役の２人に出てもらい、オムツ替えの実演をプロトタイプを装着した状態でやっていただいた後、先ほどと同じ質問をしたところ、「日本人介護士＜外国人介護士＜ロボット」と真逆の結果に変わってしまいました。

要は、人に汚れたお尻を見せてオムツ替えをしてもらう、という(一種、プライドを捨てることが必要になる)行為は文化や言語の理解が深い親密な関係の中で満足が得られる、というより、むしろ、よそよそしさ・一定の距離感があってこそ、遠慮なく安心してサービスが受けられる、という結論に体験を通じて至ったのでした(あとは動作の自動検出による業務報告の記録自動化とか、作業負荷・疲労の数値化による最適ローテーション自動作成といったアイデアなどがプロトタイプで検証されました)。

![プロトタイプ](https://qiita-image-store.s3.amazonaws.com/0/19248/0cfe5803-1b2b-ab64-c10a-e658c0e45ad1.png)

プロトタイプには力があります。アイデアがイケているイケていないの議論を進める前に、手を動かしてプロトタイプを作り、使った中で得られる体験を評価することが重要です。クイックプロトタイピングのツールとしてlittleBits、なかなか使い出がありますよ。

## 最後に
今回ご紹介したシステムは、これまでQiita上で説明してきた
* [HCPとcloudBitでIoT - 1.はじめに](http://qiita.com/mfunaki/items/cc3f6210bd0f72d34e54)
* [HCPとcloudBitでIoT - 2.cloudBitの情報取得](http://qiita.com/mfunaki/items/a11c32456cc3c1066fd9)
* [HCPとcloudBitでIoT - 3.cloudBitからの情報受け取り口](http://qiita.com/mfunaki/items/6b5b5f70dd8c87f43a88)
* [HCPとcloudBitでIoT - 4.受け取ったデータをDBに格納](http://qiita.com/mfunaki/items/f9ede4f2fdcf25b5ed25)
を元にしていますが、すでに１年以上が経過して、仕様の変更等でサンプルコードがそのまま動作しない箇所があったり、説明が途中で止まったままなっており、システム全体が未公開のままだったりするので、別途、github上で公開しておくようにします。