littleBitsという(私と同じ or それ以上の世代ならご存知の)電子ブロックのLEGOブロック版のようなガジェットがある。ブロックを組み合わせることにより、部品をハンダ付けしたり、ブレッドボード上に配置することなく簡単に電気回路を組んだり、(本当の強みはここなのだが)気に入らなければ、簡単に部品の組み換えができる優れ物だ。
このlittleBitsの各部品のことをbitと呼ぶ。bitは種別ごとに色分けされており、青はPower(電源)、赤はInput(センサやボタン等の入力系)、オレンジはWire(延長コード的な単純接続から、2入力を1入力にまとめる論理演算(ミックス)系など)、緑はOutput(光や音、振動、数字出力などの出力系)がある。
cloudBitはオレンジ色のWireに属し、赤bitの入力データをクラウドに送信したり、クラウドからイベントが上がると、データを受け取って次のbit(一般的には緑bit)に送ったりすることができる。
ただし、cloudBitのAPIのうち、cloudBit「から」データを受け取るAPIはsubscriptionという仕組みを取っている。ここでいうSubscriptionとは、何らかのデータが発生した時の呼び出し先URLをあらかじめlittleBits社のサーバに登録しておくと、実際にデータが発生した時に、cloudBitは(cloudBit内に埋め込まれたデータ送信先である)littleBits社のサーバにデータを送信し、littleBits社のサーバはあらかじめ登録されたURLをPOSTメソッドで呼び出す(その際、データやcloudBitに関わる情報、日時などはJSONフォーマットで送られる)という仕組みを取っている。
これは、一見すると回りくどく見えるかも知れないが、設定変更等により、データ受取先が変更になる場合であっても、cloudBit中の設定情報を変更することなく、littleBits社クラウド側の設定情報を変更すれば事足りる。タイムラグもまぁ、気にするほどでもなかろう。
したがって、cloudBIt APIを利用するためには、自分の(Web)アプリケーションは、外部から(=littleBits社クラウドから)アクセス可能な場所に存在している必要がある。ファイアーウォールの内側のPCでアプリケーションを動かしても、littleBits社のサーバからアクセスできず、したがって、何の通知を受け取ることもできない。
そうであれば、自分のアプリケーションはAzure上で動作させましょうか? Amazon EC2上で動作させましょうか?(そうすれば外部からアクセス可能な位置にアプリケーションを設置、動作可能)ということにもなろう。タダでIP reachableな場所にアプリ構築可能なアプリケーションサーバ、かつ(インメモリにデータを置き、高速な)SQLデータベースサーバを備えるSAP HANA Cloud Platform(HCP - Developer Licenseは無料)が私のお勧めである。
HCPを使ったIoTサンプルとしては、すでにRaspberry Piと連携した場合やTesselと連携した場合のサンプルコードがあるのだが、littleBits連携のコードはなさそうなのと、HCP連携にかぎらず、cloudBitを使った良さ気なサンプルコードは日本語・英語問わずそれほど見ないので、私の記事が少しでもお役立ちできればと考えている(まぁ、これとは別にラズパイやTesselで作ったアプリを日本語でご紹介したい気持ちは持ってます。littleBitsを含め、それぞれが魅力あるプラットフォームなので)。
ちなみに筆者は2015年6月現在、SAP社のナカの人ではあるものの、HANAやHCPのナカの人ではない。普段はデザイン思考を使ったワークショップを社内外で企画、ファシリテートしているのだが、もともとはコテコテのエンジニアなので、アイデア出しに留まらずクイックなプロトタイピング(ソフト+ハード)ラヴだったりする。
前振りはこの辺りにして、その2からサンプルコードを交えて本題に入っていこう。