Experience Prototypistのマルチリンガル子育て+プログラミングブログ

Design Thinking、語学(英語、中国語、韓国語)、日中マルチリンガル育児、littleBitsやRaspberry Pi, Arduinoを使ったExperience Prototypingネタ。

cloudBitを使ってデータを貯める・通知を飛ばす - その1 はじめに

littleBitsという(私と同じ or それ以上の世代ならご存知の)電子ブロックLEGOブロック版のようなガジェットがある。ブロックを組み合わせることにより、部品をハンダ付けしたり、ブレッドボード上に配置することなく簡単に電気回路を組んだり、(本当の強みはここなのだが)気に入らなければ、簡単に部品の組み換えができる優れ物だ。

littlebits.cc

 この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を含め、それぞれが魅力あるプラットフォームなので)。

scn.sap.com

ちなみに筆者は2015年6月現在、SAP社のナカの人ではあるものの、HANAやHCPのナカの人ではない。普段はデザイン思考を使ったワークショップを社内外で企画、ファシリテートしているのだが、もともとはコテコテのエンジニアなので、アイデア出しに留まらずクイックなプロトタイピング(ソフト+ハード)ラヴだったりする。

www.sapjp.com

前振りはこの辺りにして、その2からサンプルコードを交えて本題に入っていこう。