SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Bluemixではじめてみよう! 「IoT→クラウド」データ活用アプリケーション開発(AD)

IoTセンサーデータから過去の気象データをもとに体感温度を求めてツイートするアプリケーションをつくる

Bluemixではじめてみよう! 「IoT→クラウド」データ活用アプリケーション開発 【第2回】

  • このエントリーをはてなブックマークに追加

Cloudantの準備

次は、「蓄積されたデータをもとに気温や湿度の平均値、不快指数を計算して定期的にTwitterへツイートする」アプリケーションの作成です。 ただしその前に、Cloudantに蓄積したIoTセンサーシミュレーターからのデータを検索するときに使用するインデックスと、過去の気象データを保存するための新しいデータベースを作成します。

インデックスの作成(IoTセンサーシミュレーターのデータ検索用)

Cloudantに保存したIoTセンサーシミュレーターからのデータを日付で検索できるように、インデックスを作成します。 「+」アイコンをクリックし、メニューから「New Search Index」を選択します。

「New Search Index」を選択
「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つ目のパラメータは、インデックスを作成するデータです。

「Create Search Index」画面で入力を終えた状態
「Create Search Index」画面で入力を終えた状態

新しいデータベースの作成

サンプルアプリケーションでは、過去の気象データから、IoTセンサーシミュレーターのデータから計算した気温、湿度の平均値や不快指数が、何年何月の日本のどこと同じかを求めます。 その過去の気象データをアプリケーションから利用できるように、もう1つデータベースを作成します。

気象データは気象庁のホームページからダウンロードできます。 ダウンロードしたデータをもとにExcelなどを利用してJSON形式のデータを作成し、Cloudantのデータベースにあらかじめ登録しておきます。

なお、気象庁の気象データには不快指数がありません。 そこで、今回は便宜的に月平均気温と月平均相対湿度から不快指数(整数値)を求めることにしました。 不快指数については、Wikipediaを参考にしてください。

不快指数の式
不快指数の式

では、画面右上の「Create Database」から新規のデータベースを作成します。 データベース名(例:meteorologicaldata)を入力して「Create」ボタンをクリックします。

Create Database
Create Database

新規のデータベースが作成されました。 続いて、「All Documents」の「+」アイコンからリストの「New Doc」を選択します。

「New Doc」を選択
「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)」です。

ダウンロードしたデータから作成したJSON形式のデータを貼り付ける
ダウンロードしたデータから作成したJSON形式のデータを貼り付ける

なお、今回は簡単に登録できる手作業によるデータ登録方法を紹介したましたが、実際の活用では一括でデータを登録するアプリを別途用意したほうがよいでしょう。

インデックスの作成(過去の気象データの検索用)

前項で作成した気象データのデータベースに対してもインデックスを作成しておきます。 設定方法は、IoTセンサーシミュレーターのデータに対してインデックスを作成したときと同じです。

「Search index function」には、次のJavaScriptを記述してください。 検索に使うフィールドは不快指数のフィールドを指定します(例:discomfort)。

function (doc) {
  index("discomfort", doc.discomfort);
}
過去の気象データの検索用のインデックスを作成
過去の気象データの検索用のインデックスを作成

これでCloudant側の準備が終わりました。 次ページから、用意したデータを利用してツイートするほうのアプリケーションを作成します。

IoTを始めたい方も・本格導入を検討中の方も:おすすめソリューションのご紹介

ビジネスのパフォーマンスを高めようとさまざまな業種・企業で、IoT活用を前提とするプロジェクトが動き始めています。ただし、検討を始めて最初に出てくるのは、こんな要望ではないでしょうか。

「最初は実験的にスタートしたいから、小さく簡単に素早く始めたい」
「実運用に移ったときには10万・100万単位のセンサ/デバイスに対応できるスケーラビリティも確保したい」

これにお応えできるサービス・製品がIBMにあります。ぜひ、下記の資料をご覧ください。(編集部)

次のページ
平均気温・湿度、不快指数を計算して定期的にツイートするアプリケーションの作成

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Bluemixではじめてみよう! 「IoT→クラウド」データ活用アプリケーション開発連載記事一覧

もっと読む

この記事の著者

吉田 武司(ヨシダ タケシ)

株式会社ソルクシーズ ソリューション部 所属。IBM Notes/Domino 一筋20年。2013年度、2014年度、2015年度IBM Champions for ICS(http://www.ibm.com/developerworks/champion/)に選出される。XPages Extensio...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9282 2016/04/04 02:08

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング