Cloudantの準備
次は、「蓄積されたデータをもとに気温や湿度の平均値、不快指数を計算して定期的にTwitterへツイートする」アプリケーションの作成です。 ただしその前に、Cloudantに蓄積したIoTセンサーシミュレーターからのデータを検索するときに使用するインデックスと、過去の気象データを保存するための新しいデータベースを作成します。
インデックスの作成(IoTセンサーシミュレーターのデータ検索用)
Cloudantに保存したIoTセンサーシミュレーターからのデータを日付で検索できるように、インデックスを作成します。 「+」アイコンをクリックし、メニューから「New Search Index」を選択します。
「Create Search Index」画面が表示されるので、「_design/」欄に「index」、「Index name」欄にIndex名(ここではindexByTimestamp)を入力してください。画面下段にある「Type」欄では「keyword」(トークン化なし)を選択してください。
「Search index function」には、次のJavaScriptコードを記述します。
function (doc) { index("timestamp", doc.timestamp); }
index
関数の1つ目のパラメータは、インデックスを照会するときに使用するフィールド名です。 2つ目のパラメータは、インデックスを作成するデータです。
新しいデータベースの作成
サンプルアプリケーションでは、過去の気象データから、IoTセンサーシミュレーターのデータから計算した気温、湿度の平均値や不快指数が、何年何月の日本のどこと同じかを求めます。 その過去の気象データをアプリケーションから利用できるように、もう1つデータベースを作成します。
気象データは気象庁のホームページからダウンロードできます。 ダウンロードしたデータをもとにExcelなどを利用してJSON形式のデータを作成し、Cloudantのデータベースにあらかじめ登録しておきます。
なお、気象庁の気象データには不快指数がありません。 そこで、今回は便宜的に月平均気温と月平均相対湿度から不快指数(整数値)を求めることにしました。 不快指数については、Wikipediaを参考にしてください。
では、画面右上の「Create Database」から新規のデータベースを作成します。 データベース名(例:meteorologicaldata)を入力して「Create」ボタンをクリックします。
新規のデータベースが作成されました。 続いて、「All Documents」の「+」アイコンからリストの「New Doc」を選択します。
新規データとして、過去の気象データからサンプルアプリケーション用に加工したJSON形式のデータを貼り付けます。1件のデータは次のような内容になっています。
{ "_id": "07675560228950c3d8374c4092256841", "_rev": "2-80df6c02cae197b66fc0ad6da3db66f7", "discomfort": 18, "temperature": -15.2, "humidity": 56, "year": 2011, "month": 2, "place": "富士山", "min": -26.2, "max": -3.7 }
_idは、デフォルトで表示されているものを利用します。 このとき、_idの最後に「,」(カンマ)を付けるのを忘れないようにしてください。 _idは、ユニークになるようにすれば、任意に設定することも可能です。 _revは、保存すると自動で作成されるので入力する必要はありません。
上記データの意味は、「2011年(year)2月(month)の富士山(place)は平均気温マイナス15.2℃(temprature)、平均湿度56%(humidity)、不快指数18%(discomfort)、過去最低気温マイナス26.2℃(min)、過去最高気温マイナス3.7℃(max)」です。
なお、今回は簡単に登録できる手作業によるデータ登録方法を紹介したましたが、実際の活用では一括でデータを登録するアプリを別途用意したほうがよいでしょう。
インデックスの作成(過去の気象データの検索用)
前項で作成した気象データのデータベースに対してもインデックスを作成しておきます。 設定方法は、IoTセンサーシミュレーターのデータに対してインデックスを作成したときと同じです。
「Search index function」には、次のJavaScriptを記述してください。 検索に使うフィールドは不快指数のフィールドを指定します(例:discomfort)。
function (doc) { index("discomfort", doc.discomfort); }
これでCloudant側の準備が終わりました。 次ページから、用意したデータを利用してツイートするほうのアプリケーションを作成します。
IoTを始めたい方も・本格導入を検討中の方も:おすすめソリューションのご紹介
ビジネスのパフォーマンスを高めようとさまざまな業種・企業で、IoT活用を前提とするプロジェクトが動き始めています。ただし、検討を始めて最初に出てくるのは、こんな要望ではないでしょうか。
「最初は実験的にスタートしたいから、小さく簡単に素早く始めたい」
「実運用に移ったときには10万・100万単位のセンサ/デバイスに対応できるスケーラビリティも確保したい」
これにお応えできるサービス・製品がIBMにあります。ぜひ、下記の資料をご覧ください。(編集部)