...

はじめてのNode-RED ハンズオンテキスト Bluemix勉強会@Co-Edo 日本アイ・ビー・エム株式会社 クラウド・ソフトウェア事業部 エコシステム・デベロップメント

by user

on
Category: Documents
496

views

Report

Comments

Transcript

はじめてのNode-RED ハンズオンテキスト Bluemix勉強会@Co-Edo 日本アイ・ビー・エム株式会社 クラウド・ソフトウェア事業部 エコシステム・デベロップメント
IBM Cloud
Bluemix勉強会@Co-Edo
はじめてのNode-RED ハンズオンテキスト
日本アイ・ビー・エム株式会社
クラウド・ソフトウェア事業部 エコシステム・デベロップメント
2015/08/2ゆ updated
1
© 2015 IBM Corporation
IBM Cloud
ハンズオン アジェンダ
1. Bluemixの基本操作
2. Node-REDでHello World
3. Node-REDでWatson連携アプリを作成
4. Node-REDでDBアクセス
4. Node-REDでIoTアプリを作成
2
© 2015 IBM Corporation
IBM Cloud
Bluemixの基本操作
3
© 2015 IBM Corporation
IBM Cloud
IBM Bluemixへのログイン
■Webブラウザを起動し、下記URLより Bluemix にログインします。
使用するブラウザは「Firefox」推奨です。
http://bluemix.net
■右上部の「ログイン」をクリック。
■IBM ID(メールアドレス)とパスワードを⼊⼒し、「サインイン」ボタンをクリック。
4
© 2015 IBM Corporation
IBM Cloud
IBM Bluemixへのログイン
■Bluemixの ダッシュボード の画⾯が表⽰されればログイン完了です。
5
© 2015 IBM Corporation
作業する地域を確認する
Bluemixは「米国南部」と「英国」の2つの
データセンターで稼動しています。
上部右端の人の形をしたアイコンを
クリックするとメニューが表示され、
作業する地域を選択できます
本資料では「⽶国南部」を使うことを
想定しています
6
© 2015 IBM Corporation
[補足] 「米国南部」選択時のポップアップへの対応方法
米国南部を選択した際に、スペースを作成するように指示するポップアップ・ウィンドウが
表⽰された場合は、任意の名前を⼊⼒し、作成をクリックしてください。
本資料では
スペース名として
「dev」を使用します
7
© 2015 IBM Corporation
Web-DBシステムの構築
Bluemix上に下の図のようなWeb-DBシステムを構築してみましょう。
コードを実⾏するAppサーバーとしてNode.js、DBサーバーとしてSQL Databaseを
使用します。
Webアプリ
サーバー
データベース
サーバー
ルーター
IBM Bluemix
8
© 2015 IBM Corporation
アプリケーション実⾏環境の構築 (1/3)
1.上部メニューの”カタログ”にて、作成するアプリケーションの実⾏環境を選択します。
ランタイム カテゴリから、Node.js による JavaScriptの実⾏環境を選択します。
2.アプリケーション名とホスト名を指定して“作成”ボタンをクリックします。
任意の名前を指定します。
重複しているとエラーに
なるのでユニークな名称を
指定してください
9
© 2015 IBM Corporation
アプリケーション実⾏環境の構築 (2/3)
3.アプリケーションのステージングが開始され、30秒ほどで完了します。
これだけの手順で Node.js の実⾏環境が構築できました。
10
© 2015 IBM Corporation
アプリケーション実⾏環境の構築 (3/3)
4.それでは作成したインスタンスにWebブラウザでアクセスし、サンプルとして
⽤意されたスターター・コードを実⾏してみましょう。
URLリンクをクリックすると、作成された Node.js 上でJavaScript のスターター・
アプリケーションが動いていることが確認できます。
このようにBluemixを
使用するとクイックに、
簡単に、アプリケーションの
実⾏環境をセットアップ
することができます。
11
この例では、http://Node012.mybluemix.net/にアクセスしています
© 2015 IBM Corporation
サービスの追加 (1/4)
1. 上部メニューの”ダッシュボード”をクリックし、作成したアプリケーション
(資料ではNode012)をクリックします。
2. アプリケーションの概要ページが
表示されます。
“サービスまたはAPIの追加”をクリック
します。
12
© 2015 IBM Corporation
サービスの追加 (2/4)
3. Bluemixのカタログページが表示されます。
このカタログでアプリケーションと連携させたいサービスを選択します。
先ほど作成した Node.js の実⾏環境に SQL Databaseのサービスを
追加してみましょう。 SQL Databaseのアイコンをクリックします。
13
© 2015 IBM Corporation
サービスの追加 (3/4)
4. アプリ欄に先ほど作成したNode.jsのアプリ名が設定されていること、
プランとして「Free Beta」が選択されていることを確認して「作成」ボタン
をクリックします。 サービス名はデフォルトのままでOKです。
アプリケーションの再ステージを確認する
ダイアログボックスが表示されますので、
「再ステージ」ボタンをクリックします。
14
© 2015 IBM Corporation
サービスの追加 (4/4)
5. 左側のメニューから”概要”をクリックします。
SQL Databaseサービスが
追加されたことを確認して
ください。
たったこれだけの手順で、
クラウド上にWeb-DBシステム
を構築することができました。
15
© 2015 IBM Corporation
アプリケーション実⾏環境のクラスタ化 (1/4)
最後に仕上げとして、Node.jsを3台に増やしてみましょう。
1. 左側のメニューから「SDK for Node.js」をクリックします。
16
© 2015 IBM Corporation
アプリケーション実⾏環境のクラスタ化 (2/4)
2. ここで実⾏環境のリソース変更が可能です。
インスタンス : 3、メモリー : 384MB と指定して「保存」をクリックします。
再ステージ後、リソースが拡張されていることを確認してください。
17
© 2015 IBM Corporation
アプリケーション実⾏環境のクラスタ化 (3/4)
ここまでの手順で、クラウド上に下の図のようなWeb-DBシステムができました。
Node.jsのサーバーを3台並べて負荷分散を⾏っています。ユーザーからの
リクエストは、自動的に3台のNode.jsのいずれかにルーティングされます。
Webアプリ
サーバー
データベース
サーバー
ルーター
IBM Bluemix
18
© 2015 IBM Corporation
アプリケーション実⾏環境のクラスタ化 (4/4)
3. リソースは拡張することはもちろん、縮退させることも可能です。
元の状態に戻してみましょう。インスタンス : 1、メモリー : 256MB と
指定して「保存」をクリックします。
再ステージ後、リソースが縮退されていることを確認してください。
19
© 2015 IBM Corporation
IBM Cloud
Node-REDでHello World
20
© 2015 IBM Corporation
IBM Cloud
What is Node-RED?
ハードウェアデバイス、API、オンラインサービスを連携させて、ロジックを作成できるフローエディター
WebブラウザベースのUI
Bluemixでなくても
node.js で稼動
使用可能です
• 軽量
機能をノードという単位で
カプセル化して利⽤
独自ノードの作成・追加可能
Bluemixの様々なサービスを簡
単に利⽤可能
21
© 2015 IBM Corporation
IBM Cloud
Node-RED インターフェース
シート
表示情報の
切り替え
キャンバス
デプロイ実⾏
ノード
処理フロー
ノードパレット
22
Node情報ウィンドウ または デバッグコンソール
© 2015 IBM Corporation
IBM Cloud
Node-RED 操作方法
④Deployを選択
Node-RED画面
①ノードを選択し
ドラッグ&ドロップ
②ノード間を接続
③ノードプロパティ設定
23
© 2015 IBM Corporation
IBM Cloud
Node-RED ノードの操作方法
コネクタが右
•イベントの起動
イベント起動条件を満たした
とき、情報を右のノードに送
信する。
コネクタが左右
•データの処理
左からデータを受信。
変換/分岐などの処理を⾏
い、結果を右のノードに送信
する。
コネクタが左
•イベントの終了
左からデータを受信。
外部アプリの起動/DB保存
などの処理を⾏い、フローを
終了する。
フローの左から右⽅向に処理が流れる
24
© 2015 IBM Corporation
IBM Cloud
Node-RED環境の作成
■本資料ではBluemixの米国のデータセンターを
使用することを想定しています。
右上部の「地域」をクリックし、「米国南部」を選択。
もし「スペースの作成」というウィンドウが
表示された場合は、任意の名前(dev等)を
指定してスペースを作成してください。
■上部メニューから「カタログ」をクリック。
■最上段の「ボイラープレート」カテゴリから
「Node-RED Starter」を選択。
25
© 2015 IBM Corporation
IBM Cloud
Node-RED環境の作成
■アプリ名とホスト名を⼊⼒します。
実際にはアプリ名を⼊⼒フィールドに⼊れると、ホスト名も同じ名前が指定されます。
既に同じ名前のホストが存在する場合エラーとなりますので、他の人と重複しなそうな
名前を指定してください。
■「作成」ボタンをクリックすると、Node-REDの環境作成が始まります。
完了までしばらくお待ちください。
26
© 2015 IBM Corporation
IBM Cloud
Node-RED環境の作成
■ステージングが完了したら
作成した環境にアクセスしてみましょう。
Node-REDのリンクをクリックします。
■Node-REDが起動すればOKです。
赤いボタンを
クリックする
27
© 2015 IBM Corporation
IBM Cloud
Node-REDでHello World – Step1
■まずは処理を開始するノードを作ってみましょう。
左側のパレットから「inject」ノードを中央のキャンバスに
ドラッグ&ドロップします。
ドラッグ&ドロップ
■キャンバスにドロップした「inject」ノードをダブル
クリックして設定画面を開きます。
一番上のPayloadを「blank」を選択します。
イベントの起動を⾏うだけで、次のノードにデータは
送信されません。
「OK」をクリックします。
28
この数字を
転記する
© 2015 IBM Corporation
IBM Cloud
Node-REDでHello World – Step1
■次にメッセージの表示内容を定義するノードを
作ってみましょう。
パレットから「template」ノードをキャンバスに
ドラッグ&ドロップします。
ドラッグ&ドロップ
■「template」ノードをダブルクリックして設定画面を
開きます。
もともと⼊⼒されている⽂字列を削除し、
「Hello World!!」など、任意の⽂字列を
⼊⼒してください。
「OK」をクリックします。
29
© 2015 IBM Corporation
IBM Cloud
Node-REDでHello World – Step1
■受け取ったデータを表示するノードを用意します。
左側のパレットから「debug」ノードをキャンバスに
ドラッグ&ドロップします。
ドラッグ&ドロップ
■ノードの横にあるコネクタをクリック&ホールドし、3つのノードを線で繋ぎます。
この部分を掴んで引っ張る
30
© 2015 IBM Corporation
IBM Cloud
Node-REDでHello World – Step1
■これでHello Worldを表示するフローが完成しました。
それでは実際に動かしてみましょう。
右上の「Deploy」ボタンをクリックします。
■画面上部に「Successfully Deployed」の文字が表示されればOKです。
(この文字はすぐに消えます)
■実⾏結果を確認してみましょう。
右上の「debug」タブを選択します。debugノードに流れてきたデータはこのコンソールに表示されます。
injectノードの左側にあるボタンをクリックすると処理が起動します。
Hello World!! の⽂字列がdebugコンソールに表示されれば成功です。
取得できる情報はスマホの機種によって
異なる場合があります。
この部分をクリックすると処理がスタート
31
© 2015 IBM Corporation
IBM Cloud
Node-REDでHello World – Step2
■作成したフローを拡張してみましょう。
Hello Worldの⽂字列をWebページに出⼒
してみます。
左側のパレットから「http」ノードをキャンバスに
ドラッグ&ドロップします。
ドラッグ&ドロップ
■「http」ノードをダブルクリックして
設定画面を開きます。
URLとして「/hello」と⼊⼒します。
このパスにWebブラウザでアクセスすると
Hello Worldの⽂字列が表⽰されます。
32
© 2015 IBM Corporation
IBM Cloud
Node-REDでHello World – Step2
■「template」ノードは先ほど作成したノードをコピーします。
ノードをクリックして選択し、Ctrl + C でコピーできます。
templateノードをコピーします
■パレットから「http response」ノードをキャンバスにドラッグ&ドロップします。
ドラッグ&ドロップ
33
© 2015 IBM Corporation
IBM Cloud
Node-REDでHello World – Step2
■3つのノードを線で繋ぎます。
■これでHello WorldをWebに表示するフローが完成しました。
それでは実際に動かしてみましょう。
右上の「Deploy」ボタンをクリックします。
■Webブラウザの新しいタブを開きます。
Node-REDフローエディタのURLの
末尾の「red/#」を削除し、代わりに
「hello」と⼊⼒してWebページに
アクセスします。
(例)
https://node-red.xxx/red/#の場合は、
https://node-red.xxx/hello を開きます。
Hello WorldがWebブラウザに表示されました!
34
© 2015 IBM Corporation
IBM Cloud
Node-REDでHello World – Step3
■あらかじめtemplateノードに書かれた⽂字列だけでなく、任意の⽂字列を表⽰できるように
してみましょう。 そのためには変数を使用します。
まずはURLリクエストパラメータで、⽂字列を変数として渡す⽅法を試してみます。
■Step2で作成したフローをコピーします。
Shiftキーを押しながらノードをクリックすると
フロー全体が選択されます。
フローごとコピーします
■右端のhttpノードの設定画面を開き、URLとして「/hello2」と⼊⼒します。
■中央のtemplateノードの設定画面を
開き、表示内容を修正します。
{{name}}さん、はろーわーるど!!
と変更しました。
35
© 2015 IBM Corporation
IBM Cloud
Node-REDでHello World – Step3
■左側のパレットから「function」ノードを
キャンバスにドラッグ&ドロップします。
functionノードには JavaSctiptで
コードを書くことができます。
ドラッグ&ドロップ
フローごとコピーします
■「function」ノードをダブルクリックして
設定画面を開きます。
⼀⾏目に
msg.name = msg.payload.name;
と⼊⼒します。
⼆⾏目はそのままでOKをクリックします。
36
© 2015 IBM Corporation
IBM Cloud
Node-REDでHello World – Step3
■ノードを下の図のようにつなぎ直します。
線を削除するには、クリックで線を選択してDELETEキーです。
■これでURLのパラメータで変数の値を受け取って、Webに⽂字列を表⽰するフローが完成しました。
それでは実際に動かしてみましょう。
右上の「Deploy」ボタンをクリックします。
37
© 2015 IBM Corporation
IBM Cloud
Node-REDでHello World – Step3
■Webブラウザの新しいタブを開いて、以下のURLにアクセスしてみましょう。
https://node-red.xxx/hello2?name=佐藤
Node-REDエディタのURLです
name変数の値として「佐藤」という⽂字列を渡しています
■これでURLのパラメータで変数の値を受け取って、Webに⽂字列を表⽰するフローが完成しました。
パラメータで渡した名前がWebブラウザに表示されました!
38
© 2015 IBM Corporation
IBM Cloud
Node-REDで
Watson連携アプリを作成
39
© 2015 IBM Corporation
Watson Q&Aサービスの追加
1.上部メニューの”ダッシュボード”から、
先ほど作成したNode-REDのアプリ
ケーションを選択します。
2.「サービスまたはAPIの追加」を
クリックします。
40
© 2015 IBM Corporation
Watson Q&Aサービスの追加
3. カタログページに遷移します。
Watsonカテゴリの「Question and Answer」をクリックします。
4. 「使用」をクリックします。
41
© 2015 IBM Corporation
Watson Q&Aサービスの追加
5. アプリケーションの再ステージの確認がありますので「再ステージ」をクリックします。
6. ステージングが完了すれば準備OKです。
リンクをクリックして、Node-REDにアクセスします。
これで Node-RED から WatsonのQ&A
サービスが利⽤できるようになります。
42
© 2015 IBM Corporation
Node-REDでWatsonアプリを作成
■Node-REDが起動します。
Sheet 1に先ほど作成したフローが残っている方は別シートを追加します。
上部の「+」(プラス)ボタンをクリックします。
新しいシートが開きますので、ここで処理フローを作成してみましょう。
43
© 2015 IBM Corporation
Node-REDでWatsonアプリを作成
■Watsonに質問を投げて、その回答を受け取るフローを作ってみましょう。
左側のパレットから、以下の4つのノードをキャンバスにドラッグ&ドロップして配置します。
inputカテゴリ
functionカテゴリ
outputカテゴリ
IBM_Watsonカテゴリ
injectノード
debugノード
44
templateノード
Q and Aノード
© 2015 IBM Corporation
Node-REDでWatsonアプリを作成
■順に各ノードの設定を⾏っていきましょう。
■injectノード をダブルクリックして設定画面を開き、Payloadで「blank」を選択します。
OKをクリックします
45
© 2015 IBM Corporation
Node-REDでWatsonアプリを作成
■functionノード にはWatsonに投げる質問⽂を⼊⼒します。
ここでは例として「Which is the best hotel to stay in Okayama?」とします。
OKをクリックします
46
© 2015 IBM Corporation
Node-REDでWatsonアプリを作成
■Q and Aノード ではWatsonのコーパスを指定します。
Corpusで「Travel」を選択します。
OKをクリックします
47
© 2015 IBM Corporation
Node-REDでWatsonアプリを作成
■debugノード は変更なしでOKです。
■4つのノードを下記のように線で繋ぎます。
■それでは実⾏してみましょう。
右上の「deploy」をクリックします。
48
© 2015 IBM Corporation
Node-REDでWatsonアプリを作成
■injectノードの左端部分をクリックすると、処理が開始されます。
templateノードに書かれた質問文がWatson Q&Aサービスに投げられ、その結果が
右端のdebug画面に表示されます。
debugタブを選択
ここをクリック
Watsonからの回答が表示されれば成功です!
Node-REDを使⽤すると、⼀⾏もコードを書かずにWatson Q&Aサービスを利⽤できます。
49
© 2015 IBM Corporation
Node-REDでWatsonアプリを作成 Web編
■次にWatsonからの回答をWebページに表示するようにフローを編集してみましょう。
■左側のパレットからfunctionノードをドラッグ&ドロップで追加します。
functionカテゴリ
functionノード
■設定画面を開き 1⾏目に「context.global.answer = msg.payload;」と追記します。
2⾏目は変更なしでOKです。
50
© 2015 IBM Corporation
Node-REDでWatsonアプリを作成 Web編
■追加したfunctionノードが、Q and Aノードとdebugノードの間に入るように線を繋ぎます。
これでWatsonからの回答が”context.global.answer”という変数に代入されました。
続いて、その回答をWebページに表示するフローを作ってみましょう。
51
© 2015 IBM Corporation
Node-REDでWatsonアプリを作成 Web編
■Watsonからの回答をWebページに表示するフローを作ってみましょう。
左側のパレットから、以下の4つのノードをキャンバスにドラッグ&ドロップして配置します。
inputカテゴリ
functionカテゴリ
functionカテゴリ
outputカテゴリ
httpノード
functionノード
52
templateノード
http responseノード
© 2015 IBM Corporation
Node-REDでWatsonアプリを作成 Web編
■順に各ノードの設定を⾏っていきましょう。
■httpノード をダブルクリックして設定画面を開き、URLに「/wat1」と⼊⼒します。
OKをクリックします
53
© 2015 IBM Corporation
Node-REDでWatsonアプリを作成 Web編
■functionノードをダブルクリックして設定画面を開き、
1⾏目に「msg.payload = context.global.answer;」と追記します。
2⾏目は変更なしでOKです。
OKをクリックします
54
© 2015 IBM Corporation
Node-REDでWatsonアプリを作成 Web編
■templateノードをダブルクリックして設定画面を開き、
1⾏目に「<h1>Watsonさんの回答</h1>{{payload}}」と⼊⼒します。
OKをクリックします
55
© 2015 IBM Corporation
Node-REDでWatsonアプリを作成 Web編
■http responseノード は変更なしでOKです。
■4つのノードを下記のように線で繋ぎます。
■それでは実⾏してみましょう。
右上の「deploy」をクリックします。
56
© 2015 IBM Corporation
Node-REDでWatsonアプリを作成 Web編
■先程と同様、injectノードの左端部分を
クリックすると、処理が開始されます。
Watsonからの回答がdebug画面に
表示されていることを確認します。
■Webブラウザの新しいタブを開きます。
Node-REDフローエディタのURLの
末尾の「red/#」を削除し、代わりに
「wat1」と⼊⼒してWebページに
アクセスします。
(例)
http://node-red.xxx/red/#の場合は、
http://node-red.xxx/wat1 を開きます。
Watsonからの回答がWebブラウザに表示されました!
57
© 2015 IBM Corporation
Node-REDでWatsonアプリを作成 Web編
■Webブラウザから質問⽂を⼊⼒できるようにしましょう。
これまで作成したフローから、再利⽤できる部分をコピーして新しいフローを作成してみます。
■Shiftキーを押しながら先程作成した2つ目のフローをクリックします。
このフローのすべてのノードが選択されます。
■「Ctrl」キーと「C」キーを同時に押してコピーし、「Ctrl」キーと「V」キーでペーストします。
キャンバスの適当な場所をクリックすると、コピーしたフローが配置されます。
フローをコピーします
58
© 2015 IBM Corporation
Node-REDでWatsonアプリを作成 Web編
■左端のhttpノードをダブルクリックし、URLを「/wat2」と変更します。
■2番目のfunctionノードをクリックして選択し、「Delete」キーを押して削除します。
■3番目のtemplateノードは次ページを参照。
■4番目のhttp responseノードはそのままでOKです。
削除
59
次ページ
変更なし
© 2015 IBM Corporation
Node-REDでWatsonアプリを作成 Web編
■3番目のtemplateノードに、質問文を受け取るHTMLフォームを定義します。
ダブルクリックして以下の内容を⼊⼒してください。元の記載内容は削除します。
<form action=“/wat3” method=“post”>
<input type=“text” name=“question” value=“Which is the best hotel to stay
in Okayama?”><br>
<button type=“submit”>質問する</button>
質問例⽂
</form>
■以下のように3つのノードを線で繋ぎます。
これでWebブラウザから質問⽂を⼊⼒するフローができました。
60
© 2015 IBM Corporation
Node-REDでWatsonアプリを作成 Web編
■Watsonに質問し、回答を表示するフローを作成しましょう。
これまで作成したフローから、再利⽤できる部分をコピーして新しいフローを作成してみます。
■Shiftキーを押しながら先程作成した2つ目のフローをクリックして選択します。
■「Ctrl」キーと「C」キーを同時に押してコピーし、「Ctrl」キーと「V」キーでペーストします。
キャンバスの適当な場所をクリックすると、コピーしたフローが配置されます。
もう⼀度フローをコピーします
61
© 2015 IBM Corporation
Node-REDでWatsonアプリを作成 Web編
■左端のhttpノードをダブルクリックし、Methodを「POST」、URLを「/wat3」と変更します。
■2番目のfunctionノードをダブルクリックし、「context.global.answer」の部分を
「msg.payload.question」と書き換えます。
■3番目のtemplateノードはそのままでOKです。
■4番目のhttp responseノードもそのままでOKです。
変更なし
62
変更なし
© 2015 IBM Corporation
Node-REDでWatsonアプリを作成 Web編
■Watsonに質問する処理を追加します。
最初に作成したフローから、Q and Aノードをコピーします。
パレットからQ and Aノードを
追加してもOKです。
その場合は忘れずCorpusを
「Travel」に変更してください。
Q and Aノードをコピーします
63
© 2015 IBM Corporation
Node-REDでWatsonアプリを作成 Web編
■ノードを下記のように線で繋ぎ直します。
これでWatsonに質問をして回答をWebブラウザに表示するフローが完成しました。
■それでは実⾏してみましょう。
右上の「deploy」をクリックします。
64
© 2015 IBM Corporation
Node-REDでWatsonアプリを作成 Web編
■Node-REDフローエディタのURLの
末尾の「red/#」を削除し、代わりに
「wat2」と⼊⼒してWebページに
アクセスします。
(例)
http://node-red/red/#の場合は、
http://node-red/wat2 を開きます。
■質問⽂を⼊⼒して「質問する」をクリック
すると回答画面に遷移します。
Watsonからの回答がWebブラウザに
表示されればOKです!
お疲れ様でした!
このようにWebアプリケーションを作成する場合も
Node-REDは非常に便利です。
65
© 2015 IBM Corporation
IBM Cloud
Node-REDでDBアクセス
66
© 2015 IBM Corporation
IBM Cloud
SQL Databaseへのデータ取り込み
1.⾦沢区が公開しているAEDの設置場所のデータをWebから取得します。
Webブラウザを起動し、「⾦沢区データポータル」にアクセスします。
https://ibm.biz/kanazawa
2.「AED設置場所」をクリックしてCSVファイルを保存します。
ファイル名はデフォルトの ”3-kz-somu.csv” のままで結構です。
67
© 2015 IBM Corporation
IBM Cloud
SQL Databaseへのデータ取り込み
3.ダッシュボードにて、最初のハンズオンで作成したSQL Databaseサービスをクリックします。
4. Launch をクリックしてSQL Database のコンソールを起動します。
68
© 2015 IBM Corporation
IBM Cloud
SQL Databaseへのデータ取り込み
5.Load Dataをクリックします。
69
© 2015 IBM Corporation
IBM Cloud
SQL Databaseへのデータ取り込み
6.”Brows files” をクリックし、ダウンロードした”3-kz-somu.csv” を指定します。
ダウンロードしたcsvファイルのコードページはShift_JISですので、Code pageを
”1208”から”943”に上書き変更します。
Does the file have columns that contain dates or times? を
“Yes”にし、右下の”Load File” をクリックします。
ダウンロードした
csvファイルを指定
コードページを
1208→943
に変更
Yes
に変更
70
© 2015 IBM Corporation
IBM Cloud
SQL Databaseへのデータ取り込み
7.サンプルデータのCSVファイルの内容が表示されていることを確認し、
”Next” をクリックします。
71
© 2015 IBM Corporation
IBM Cloud
SQL Databaseへのデータ取り込み
8.”Create a new table and load” にチェックを入れ、”Next” をクリックします。
72
© 2015 IBM Corporation
IBM Cloud
SQL Databaseへのデータ取り込み
9.”Table name” を 「AEDKANAZAWA」に変更します。
10.Columnを以下のとおり変更し、”Finish” をクリックします。
名称
⇒ NAME
住所
⇒ ADDRESS
緯度
⇒ LATITUDE
経度
⇒ LONGITUDE
AEDの数 ⇒ AED
更新⽇
⇒ UPDATE
73
© 2015 IBM Corporation
IBM Cloud
SQL Databaseへのデータ取り込み
11.ロードしたテーブルを確認します。左上の「Manage」から「Work with Table」を選択
します。
12.左側に表示されている「AEDKANAZAWA」をクリックすると、右側にテーブルの情報が
表示されます
74
表の作成とデータの取り込みが完了しました
© 2015 IBM Corporation
IBM Cloud
SQL Databaseサービスのバインド
1.上部メニューの”ダッシュボード”から、
先ほど作成したNode-REDのアプリ
ケーションを選択します。
2.「サービスまたはAPIのバインド」を
クリックします。
75
© 2015 IBM Corporation
IBM Cloud
SQL Databaseサービスのバインド
3. バインド可能なサービスが表示されます。
「SQL Database」を選択し、「追加」を
クリックします。
4. アプリケーションの再ステージの確認
があるので「再ステージ」をクリックします。
ステージングが完了すると、
Node-RED から SQL Database
サービスが利⽤できるようになります。
76
© 2015 IBM Corporation
Node-REDでDBアクセス
■SQL DatabaseからAEDの情報を取得するWeb APIを作成します
■左側のパレットから、以下の3つのノードをキャンバスにドラッグ&ドロップして配置します。
inputカテゴリ
httpノード
outputカテゴリ
http responseノード
77
storageカテゴリ
sqldbノード
左右にコネクタが付いたノードです
© 2015 IBM Corporation
Node-REDでDBアクセス
■順に各ノードの設定を⾏っていきましょう。
■httpノード をダブルクリックして設定画面を開き、URLに「/aed」と⼊⼒します。
OKをクリックします
78
© 2015 IBM Corporation
Node-REDでDBアクセス
■sqldbノード をダブルクリックして設定画面を開きます。
-Server :
バインドしたSQL Databaseサービスを選択
-Query :
SELECT * FROM AEDKANAZAWA
OKをクリックします
79
© 2015 IBM Corporation
Node-REDでDBアクセス
■http responseノード は変更なしでOKです。
■3つのノードを下記のように線で繋ぎます。
■それでは実⾏してみましょう。
右上の「deploy」をクリックします。
80
© 2015 IBM Corporation
Node-REDでDBアクセス
■Webブラウザの新しいタブを開きます。
Node-REDフローエディタのURLの末尾の「red/#」を削除し、
替わりに「aed」と⼊⼒してWebページにアクセスします。
(例)
http://node-red.xxx/red/#の場合は、
http://node-red.xxx/aed を開きます。
DBに格納されたAEDの情報が
Webブラウザに表示されました!
81
© 2015 IBM Corporation
Node-REDでDBアクセス
■作成したAPIを呼び出すアプリケーションを作成します。
■左側のパレットから、以下の3つのノードをキャンバスにドラッグ&ドロップして配置します。
inputカテゴリ
httpノード
outputカテゴリ
functionカテゴリ
templateノード
http responseノード
82
© 2015 IBM Corporation
Node-REDでDBアクセス
■順に各ノードの設定を⾏っていきましょう。
■httpノード をダブルクリックして設定画面を開き、URLに「/aedmap」と⼊⼒します。
OKをクリックします
83
© 2015 IBM Corporation
Node-REDでDBアクセス
■templateノード をダブルクリックして設定画面を開き、
Template の内容として、https://ibm.biz/BdXueL のHTMLをコピーします
OKをクリックします
84
© 2015 IBM Corporation
Node-REDでDBアクセス
■http responseノード は変更なしでOKです。
■3つのノードを下記のように線で繋ぎます。
■それでは実⾏してみましょう。
右上の「deploy」をクリックします。
85
© 2015 IBM Corporation
Node-REDでDBアクセス
■Webブラウザの新しいタブを開きます。
Node-REDフローエディタのURLの末尾の「red/#」を削除し、
替わりに「aedmap」と⼊⼒してWebページにアクセスします。
(例)
http://node-red.xxx/red/#の場合は、
http://node-red.xxx/aedmap を開きます。
アプリケーションが起動
すれば成功です!
86
© 2015 IBM Corporation
IBM Cloud
Node-REDでIoTアプリを作成
87
© 2015 IBM Corporation
IBM Cloud
Node-REDでIoTアプリを作成
■全体像
サービス
IoT Foundationサービスは
センサーデータを仲介する
IBM IoT
Foundation
デバイス
IBM Bluemix
スマホのセンサーで計測した
データをクラウドサービスに送信
88
アプリケーション
アプリはサービスからセンサー
データを取得して処理する
© 2015 IBM Corporation
IBM Cloud
Node-REDでIoTアプリを作成
■スマートフォンをお持ちの方は、
スマホのブラウザで以下のURLに
アクセスしてください。
http://phonesensor.mybluemix.net
PhoneSensorが起動します。スマホに内蔵された各種センサーの
情報を取得し、BluemixのIoT Foundationサービスに送信して
います。
■このセンサー情報を受け取って処理するアプリをBluemix上の Node-REDで作ってみましょう。
89
© 2015 IBM Corporation
IBM Cloud
Node-REDでIoTアプリを作成
■スマホのセンサー情報を、クラウド上のIoT Foundation
サービスから受け取ってみましょう。
左側のパレットから「ibmiot」ノードを中央のキャンバスに
ドラッグ&ドロップします。
ドラッグ&ドロップ
■キャンバスにドロップした「IBM IoT App In」ノードをダブルクリックして設定画面を開きます。
Authentication は「Quickstart」を選択。
Device Id に先程のPhoneSensorに表示されている
⽂字列の末尾12桁の数字を⼊⼒。
この数字を
転記する
90
© 2015 IBM Corporation
IBM Cloud
Node-REDでIoTアプリを作成
■受け取ったデータを表示するノードを用意します。
左側のパレットから「debug」ノードを中央のキャンバスに
ドラッグ&ドロップします。
ドラッグ&ドロップ
■ノードの横にあるコネクタをクリック&ホールドし、「ibmiot」ノードと「debug」ノードを線で繋ぎます。
この部分を掴んで引っ張る
91
© 2015 IBM Corporation
IBM Cloud
Node-REDでIoTアプリを作成
■これでデータの⼊⼒と出⼒の定義ができました。
それでは実際に動かしてみましょう。
右上の「Deploy」ボタンをクリックします。
■画面上部に「Successfully Deployed」の文字が表示されればOKです。
(この文字はすぐに消えます)
■実⾏結果を確認してみましょう。
右上の「debug」タブを選択します。debugノードに流れて
きたデータはここに表示されます。
先程のPhoneSensorを動かします。スマホのセンサー情報が
debug画面に表示されれば成功です。
取得できる情報はスマホの機種によって
異なる場合があります。
92
© 2015 IBM Corporation
IBM Cloud
Node-REDでIoTアプリを作成
■debug画面にセンサーデータがうまく表示されない場合のチェックポイント
-PhoneSensorが正しく稼動しているかどうかを確認してください。スリープ状態でアプリが
停止していないでしょうか。
-PhoneSensorの接続ステータスが「Connected」になっていることを確認してください。
例えば、誤ってPhoneSensor画面下部の「Register」をタップしてしまうと、ステータスが
「Disconnected」になります。
-「ibmiot」ノードのDevice Idが
正しく設定されているかどうかを
ご確認ください。
スマホのWebブラウザで
PhoneSensorを再読み込みすると
Device Idが変わってしまいます。
その場合は再度「ibmiot」ノードの
定義情報をPhoneSensor側と
同じになるよう変更してください。
93
© 2015 IBM Corporation
IBM Cloud
Node-REDでIoTアプリを作成
■正しくセンサー情報が取得できたので、この情報に応じて何らかの処理を⾏うフローを作ってみましょう。
「tiltLR」というデータ項目に着目します。
これはスマホ端末の左右の傾きを測定しているようです。
実際に端末を動かして、値の変化を確認してください。
この傾き度合いによって表⽰メッセージを変えてみましょう。
■センサー情報から「tiltLR」の値だけを抽出します。
左側のパレットから「function」ノードを中央のキャンバスに
ドラッグ&ドロップします。
ダブルクリックで設定画面を開き、Functionの内容を
以下のように書き換えて「OK」をクリックします。
return {payload:msg.payload.d.tiltLR};
94
© 2015 IBM Corporation
IBM Cloud
Node-REDでIoTアプリを作成
■正しく動くかどうか確認してみましょう。
「ibmiot」と「debug」との間に、今作成した
「function」ノードを挟むように線を繋ぎ変えます。
線はクリックで選択した状態でDeleteキーで
削除できます。
■右上の「Deploy」ボタンをクリックします。
■不要な情報が削除されて、「tiltLR」の値だけが
表示されればOKです。
95
© 2015 IBM Corporation
IBM Cloud
Node-REDでIoTアプリを作成
■「tiltLR」の値によって処理を分岐させます。
左側のパレットから「switch」ノードを中央のキャンバスに
ドラッグ&ドロップします。
ダブルクリックで設定画面を開き、分岐条件を指定します。
左に5度以上傾いた場合=「左に傾いてます」
右に5度以上傾いた場合=「右に傾いてます」
傾きが5度未満の場合=「ほぼフラットです」
上記のような条件設定をするには
右図のように指定して「OK」を
クリックします。
条件を追加するには、「+rule」
ボタンをクリックします。
傾きが-5度以上(左)なら1番へ
傾きが5度以上(右)なら2番へ
どちらでもない(フラット)なら3番へ
96
© 2015 IBM Corporation
IBM Cloud
Node-REDでIoTアプリを作成
■条件分岐された後の処理を作成します。
左側のパレットから「template」ノードを中央のキャンバスに
ドラッグ&ドロップします。
ダブルクリックで設定画面を開き、表示するメッセージを定義します。
ご⾃由にメッセージの内容を⼊⼒してください。
{{payload}} と指定すると、先程debug
画面で確認した傾きデータの値が表示
されます。
1番(左)
2番(右)
3番(フラット)
同様に2番、3番のノードも作成し、
それぞれメッセージを定義します。
最後にswitchノードのコネクタと
1番、2番、3番のノードを線で繋げます。
97
© 2015 IBM Corporation
IBM Cloud
Node-REDでIoTアプリを作成
■キャンバスの中を整理して、各ノードを以下の図のように接続してください。
正しく線が繋がっていれば、ノード自体は
キャンバス内のどこに置かれていても動作
に影響はありません。
■処理フローが完成しました!
それでは実際に動かしてみましょう。
右上の「Deploy」ボタンをクリックします。
98
© 2015 IBM Corporation
IBM Cloud
Node-REDでIoTアプリを作成
■「Successfully Deployed」のメッセージが表示されれば
成功です。
PhoneSensorを稼動させたスマホを左右に傾けて
メッセージが正しく表示されることを確認してください。
お疲れ様でした!
IBM Bluemix と Node-RED によって、ほぼノンプログラミングで
IoTデバイスから収集したデータを処理するアプリが作れました。
99
© 2015 IBM Corporation
Node-RED応用編
100
© 2015 IBM Corporation
IBM Cloud
Node-REDでフローのエクスポート/インポート
ここから先は応用編です。
余裕のある方はぜひ試してみてください。
■Node-REDは作成したフローをJSON形式のテキストとして、export/importすることができます。
JSON形式の
テキストの例
[{“id”:“13257eec.669069”,“type”:“websocket-listener”,“path”:“/ws/stations”,“wholemsg”:“false”},{“id”:“28a6990b.d75966”,“type”:“websocket
out”,“name”:“”,“server”:“13257eec.669069”,“x”:677,“y”:274,“z”:“60aa0f7b.9f55f”,“wires”:[]},{“id”:“f5ecfe3e.0a13”,“type”:“xml”,“name”:“”,“attr”:“$”,“chr”:“_”,“x”:498.5,“y”:27
5,“z”:“60aa0f7b.9f55f”,“wires”:[[“28a6990b.d75966”,“3e967dc2.c16982”]]},{“id”:“3e967dc2.c16982”,“type”:“debug”,“name”:“”,“active”:true,“console”:“false”,“complete”:“
false”,“x”:626.5,“y”:340,“z”:“60aa0f7b.9f55f”,“wires”:[]},{“id”:“2c1c43fd.d3e3bc”,“type”:“http request”,“name”:“リクナビAPI呼び出
し”,“method”:“GET”,“url”:“http://webservice.recruit.co.jp/shingaku/school/v2/?code=SC000059&key=43ba47966ce3abea”,“x”:326,“y”:275,“z”:“60aa0f7b.9f55f”,“wires”:[
[“f5ecfe3e.0a13”]]},{“id”:“ad4079b6.52bf88”,“type”:“websocket
in”,“name”:“”,“server”:“13257eec.669069”,“x”:126,“y”:275,“z”:“60aa0f7b.9f55f”,“wires”:[[“2c1c43fd.d3e3bc”]]},{“id”:“fda27200.025d9”,“type”:“http
response”,“name”:“”,“x”:492,“y”:181,“z”:“60aa0f7b.9f55f”,“wires”:[]},{“id”:“774506a8.88baf8”,“type”:“template”,“name”:“表示内容の定
義”,“field”:“payload”,“template”:“<!DOCTYPE html>¥n<html>¥n <head>¥n <meta name=¥”viewport¥“ content=¥”initial-scale=1.0, user-scalable=no¥“>¥n <meta
charset=¥”utf-8¥“>¥n <title>大学キャンパスマップ</title>¥n <style>¥n
html, body, #map-canvas {¥n
height: 94%;¥n
margin: 5px;¥n
padding:
0px¥n
}¥n </style>¥n <script src=¥"https://maps.googleapis.com/maps/api/js?v=3.exp¥"></script>¥n <script>¥n¥t¥tfunction initialize() {¥n¥t¥t var myLatlng
= new google.maps.LatLng(36.095, 140.084);¥n¥t¥t var mapOptions = {¥n¥t¥t zoom: 11,¥n¥t¥t center: myLatlng,¥n¥t¥t };¥n¥t¥t var map = new
google.maps.Map(document.getElementById('map-canvas'), mapOptions);¥n¥t¥t ¥n¥t¥t var loc = window.location;¥n
if (loc.protocol === ¥"https:¥") {¥n
newUri = ¥"wss:¥";¥n
} else {¥n
newUri = ¥"ws:¥";¥n
}¥n
newUri += ¥"//¥" + loc.host + ¥"/ws/stations¥";¥n¥t¥t ¥n¥t¥t ¥n¥t¥t var sock = new
WebSocket(newUri);¥n¥t¥t sock.onopen = function(){ ¥n¥t¥t console.log(¥"Connected websocket¥");¥n¥t¥t console.log(¥"Sending
ping..¥");¥n¥t¥t¥tsock.send(¥"Ping!¥");¥n¥t¥t console.log(¥"Ping sent..¥");¥n¥t¥t };¥n¥t¥t sock.onerror = function(){ console.log(¥"Websocket error¥"); };¥n¥t¥t
sock.onmessage = function(evt){¥n¥t¥t var schoolData = JSON.parse(evt.data);¥n¥t¥t var stations = schoolData.results.school[0].campus;¥n¥t¥t¥tfor(var i = 0; i
< stations.length; i++) {¥n¥t¥t¥t var camp = stations[i];¥n
var marker = new google.maps.Marker({¥n¥t¥t¥t position: new
google.maps.LatLng(camp.latitude[0],camp.longitude[0]),¥n¥t¥t¥t map: map,¥n¥t¥t¥t animation: google.maps.Animation.BOUNCE,¥n¥t¥t¥t title:
camp.address[0]¥n¥t¥t¥t });¥n¥t¥t¥t ¥n¥t¥t¥t}¥n¥t¥t };¥n¥t¥t};¥n¥t¥t¥n¥t¥tgoogle.maps.event.addDomListener(window, 'load', initialize);¥n¥n </script>¥n
</head>¥n <body>¥n <div id=¥"map-canvas¥"></div>¥n <font size=¥"6¥">大学キャンパスマップ</font>¥n <br>powered by IBM Bluemix and Node-RED¥n <div
align=¥"right¥"> ¥n <a href=¥"http://webservice.recruit.co.jp/¥"><img src=¥"http://webservice.recruit.co.jp/banner/shingaku-m.gif¥" alt=¥"リクナビ進学 Webサービス¥"
width=¥"88¥" height=¥"35¥" border=¥"0¥" title=¥"リクナビ進学 Webサービス¥"></a>¥n </div> ¥n
</body>¥n</html>","x":330,"y":181,"z":"60aa0f7b.9f55f","wires":[["fda27200.025d9"]]},{"id":"636d7b37.9c9284","type":"http
in","name":"","url":"/schoolmap","method":"get","x":143,"y":181,"z":"60aa0f7b.9f55f","wires":[["774506a8.88baf8"]]}]
10
1
© 2015 IBM Corporation
IBM Cloud
Node-REDでWatsonアプリを作成 Web編 - option
□http://ibm.biz/noderedweb
Watsonに質問をするWebアプリを機能拡張したフローを公開しています。
この記事の「4. サンプルフロー」の手順でフローを取り込んでみましょう。
今回のハンズオンで作成したアプリだけでなく、さらに拡張したフローもありますので
Webアプリ作成の参考にしてください。
10
2
© 2015 IBM Corporation
IBM Cloud
Node-REDでWeb APIを活用したアプリを動かす
□http://ibm.biz/noderedflow
地図を表示するGoogle Maps APIと大学の情報を提供するリクナビ進学APIを連携させた
キャンパスの場所を地図上に示すサンプルアプリのフローを公開しています。
これらのフローをNode-REDに取り込んでみましょう。
■JSON形式のテキストを「選択」→「コピー」します。
10
3
© 2015 IBM Corporation
IBM Cloud
Node-REDでWeb APIを活用したアプリを動かす
■Node-REDでシートを追加します。
上部の「+」(プラス)ボタンをクリックして、新しいシートを開きます。
■新しいシートに先程コピーした処理フローを取り込みます。
上部右端の三本線のアイコンをクリックし、表示されたメニューから「import」→「Clipboard」を
選択します。
10
4
© 2015 IBM Corporation
IBM Cloud
Node-REDでWeb APIを活用したアプリを動かす
■「Import nodes」ウィンドウが表示されるので、
先程クリップボードにコピーしたテキストをペースト
して、OKボタンをクリックします。
■処理フローが取り込まれますので、キャンバスの適当な場所をクリックして配置します。
10
5
© 2015 IBM Corporation
IBM Cloud
Node-REDでWeb APIを活用したアプリを動かす
■このアプリを動かしてみましょう。
右上の「Deploy」ボタンをクリックします。
■画面上部に「Successfully Deployed」の文字が表示されればOKです。
■実⾏結果を確認してみましょう。
Webブラウザの新しいタブを開いて、Node-REDのホスト名の末尾に「/schoolmap」という
パスを付加したURLにアクセスします。
Node-REDを開いているWebブラウザのURLの末尾の「/red/#」を削除し、「/schoolmap」を追加します。
(例)
http://iotserver2015xx.mybluemix.net/red/#
でNode-REDを開いている場合、
http://iotserver2015xx.mybluemix.net/schoolmap にアクセスします。
10
6
© 2015 IBM Corporation
IBM Cloud
Node-REDでWeb APIを活用したアプリを動かす
■Node-REDで作ったサンプルアプリ「筑波大学はココ!」が表示されればOKです。
地図上の筑波大学のキャンパスにマーカーが表示され、マウスポインタを合わせると
大学の住所が表示されます。
10
7
© 2015 IBM Corporation
IBM Cloud
Node-REDでWeb APIを活用したアプリを動かす
■debug画面に、リクナビ進学APIを呼び出した結果が表示されていることを確認してください。
緯度経度や住所以外にも様々な情報が取得できています。
このようにクラウドで公開されている外部のAPIを呼び出すことで、アプリの機能を拡張できます
10
8
© 2015 IBM Corporation
IBM Cloud
Node-REDでWeb APIを活用したアプリを動かす - option
□試してみましょう□
リクナビ進学APIに対してリクエストする内容を変えてみましょう。
■「リクナビAPI呼び出し」ノードをダブルクリックして構成画面を開きます。
■URL欄の「code=SC000059」の部分を「code=SC000006」と変更して「OK」をクリック。
SC000006は茨城大学の学校コードです。
時間のある方は、
SC000192 : 関⻄⼤学
SC000491 : 日本大学
なども試して結果を確認してみましょう。
■デプロイして結果を⾒てみましょう。
右上の「Deploy」ボタンをクリックします。
「筑波大学はココ!」をWebブラウザで再読み込みすると、実⾏結果はどう変わるでしょうか?
10
9
© 2015 IBM Corporation
IBM Cloud
API活用によるアプリ開発とIBM Bluemix
■大学キャンパスマップアプリはBluemix環境のNode-RED上で稼動しています。
地図はGoogle Maps APIを、⼤学の住所および緯度経度の情報はリクナビ進学APIを
呼び出して統合し、Webブラウザ上に表示しています。
IBM Bluemix
大学キャンパスマップ
アプリ
APIを活用することで
効率的なアプリ開発が可能
Google
Maps API
リクナビ
進学API
クラウドの世界では
APIの公開が拡がっている
11
0
© 2015 IBM Corporation
IBM Cloud
THANK YOU!
11
1
© 2015 IBM Corporation
IBM Cloud
Bluemix User Group - BMXUG(ビーザグ)
Bluemixのユーザー会が発足しました!
ぜひご参加ください!
BMXUGはユーザー様主体、有志によって運営される
情報交換・ネットワーキングの場です
11
2
© 2015 IBM Corporation
IBM Cloud
BMXUGへの参加方法
で「グループに参加」
http://ibm.biz/bmxug-facebook
で「コミュニティに参加」
http://bmxug.doorkeeper.jp
11
3
© 2015 IBM Corporation
Fly UP