Node-REDの準備
次に、アプリケーションの作成環境の準備を行います。 Bluemixにログインして「ダッシュボード」を開き、画面上部のメニューから「カタログ」をクリックします。
「ボイラーテンプレート」の一覧が表示されるので、「Node-RED Starter」を探してクリックします。 このとき、画面左のメニューで表示するサービスなどを絞り込むこともできます。
Node-RED Starterの作成画面が開いたら、アプリケーションを作成する「スペース」を指定し、アプリケーションの「名前」と「ホスト」を入力して「作成」をクリックします。 ホスト名はBluemix全体でユニークである必要があります。
Bluemix上で環境構築(アプリケーションのステージング)が始まるので、終わるまでしばらく待ちます。
環境構築が完了すると「アプリは稼動しています」と表示されます。
画面左のメニューから「概要」をクリックし、作成されたアプリケーションを確認します。 上段の名前の下に表示されている「経路」が、今回作成したNode-REDフローエディターへのリンクです。
画面右にはアプリケーションの稼動状況およびログが表示されています。 また、画面下部には現在バインドされているサービスが表示されています。 Node-RED Starterでは、標準で「Cloudant NoSQL DB」がバインドされています。 「サービスまたはAPIの追加」から、その他のサービスを追加することもできます。
では、「経路」のリンクをクリックして、Node-REDフローエディターにアクセスしてみましょう。 リンク先の「Go to your Node-RED flow editor」をクリックします。
Node-REDフローエディター画面が開きます。エディター各部分の意味は表のとおりです。
部分 | 名称 | 役割 |
---|---|---|
① | ノードパレット | 分類されたノードの一覧 |
② | シート | シートごとにフローを作成する。「+」からシートを追加できる |
③ | ワークスペース | ノードを配置して繋げ、フローを作成する |
④ | ノード | 機能をカプセル化したモジュール |
⑤ | フロー | ノードを繋げて処理の流れを定義したもの |
⑥ | デプロイ | 作成したフローをデプロイする |
⑦ | 情報またはデバッグコンソール | 選択しているノードの情報またはデバッグコンソールを表示する |
Node-REDでは、画面左のノードパレットからノードを画面中央のワークスペースに配置し、ノード同士を線で繋いでフロー(処理)を作成します。 処理およびデータは、ノードの左(インプットポート)から入り、右(アウトプットポート)から出て行くイメージです。 ノードによっては、左右両方または片方のポートしかないものがあります。
Node-RED Starterには、Bluemixの各種サービス(WatsonやdashDBなど)と連携できるノードがあらかじめ用意されています。
Node-REDの使い方
さて、アプリケーションの作成に入る前に、Node-REDに関するいくつかのトピックを紹介しましょう。
ログインユーザー名とパスワードの設定
Node-RED Starterの環境構築直後は、ログインパスワードが設定されていません。 このままの状態では、アプリケーションのURLにアクセスすると誰でもNode-REDフローエディターを利用できてしまいます。 使い始める前にパスワードを設定しておきましょう。 設定方法は、Node-REDフローエディターを開くボタンの下部にある「Learn how to password-protect your instance」に記述されています。
説明に従って、Bluemixの「環境変数」から「ユーザー定義」にユーザー名とパスワードを設定します。
これで、Node-REDフローエディターにアクセスしようとするとユーザー名とパスワードの入力が求められるようになります。
「Hello World」を書いてみる
それでは、最も簡単な例として、「Hello World」を表示するフローをNode-REDで書いてみましょう。 まず、画面左のノードパレットからInputのInjectノードとOutputのDebugノードをワークスペースにドラッグ&ドロップします。 そして、Injectノードのアウトプットポート(右側)からDebugノードのインプットノード(左側)へマウスをドラッグしてノード同士を繋ぎます。
Injectノードをダブルクリックするとノードの編集画面が開きます。 「Payload」欄のリストから「string」を選択し、“Hello World”と入力します。 入力した文字列は、payloadという名前のキーに格納されて後続のノードに渡されます。 「Name」欄は、ワークスペース上で表示するノードの名称(任意)です。 「Ok」をクリックして画面を閉じます。
画面右上の「Deploy」ボタンをクリックします。
デプロイが成功したら動かしてみましょう。 画面右上にある「debug」タブをクリックして、デバッグコンソールを表示しておきます。 Injectノードの左にあるインジェクトボタンをクリックして、デバッグコンソールに“Hello World”と表示されれば成功です。
Debugノードを使用したデバッグ
Debugノードはとてもよく使うノードです。 デフォルト設定では、受け取ったメッセージのpayloadキーの値のみを表示します。 フローで流れているJSON形式のメッセージ全体を表示したい場合には、Debugノードの編集画面の「Output」欄を「complete msg object」に変更します。
先ほどと同様に画面右上の「Deploy」ボタンをクリックして、実行します。 先ほどとは異なり、デバッグコンソールにJSON形式のメッセージ全体が表示されていることが確認できます。
ゴミ箱のアイコンをクリックするとデバッグコンソールをクリアできます。
デバッグコンソールへの出力を一時的にオフにしたい場合には、Debugノードの右側のボタンでオフにします。 もう一度クリックするとオンに戻ります。
Debugノードが増えてくるとフローのどの部分の情報なのかが分かりづらくなります。 状況に応じて切り替えると、デバッグ作業がしやすくなります。
フローのエクスポート/インポート
作成したフローは、JSON形式でエクスポートまたはインポートできます。
まず、エクスポートの方法です。 エクスポートしたいフローをワークスペース上で選択します。 この時、ドラッグしながら範囲指定すると複数のノードを一括で選択できます。 選択されたノードは淵が橙色で表示されます。 この状態から画面右上のメニューから「Export」-「Clipboard」を選択します。
表示されたテキストをクリップボードにコピーして別途保管します。
次に、インポートの方法です。 画面右上のメニューから「Import」-「Clipboard」を選択します。
先ほどエクスポートしたテキストを貼り付けてみましょう。
ワークスペースにインポートしたフローが追加されます。 ノードによってはインポート後、個別にノードの再設定(各種サービスへの接続情報など)が必要な場合があります。
このように、作成したフローを簡単にエクスポートまたはインポートできます。
Twitterへのツイートを行ってみる
次に、Twitterへツイートするフローを作成してみましょう。 使用可能なTwitterアカウントをお持ちでない方は、事前に登録をお願いします。
最初に、SocialのTwitterノード、Injectノード、Debugノードを配置して、下図のように繋ぎます。
Twitterノードの編集画面を開き、「Twitter ID」欄右端のペンのアイコンをクリックします。
「Click here to authenticate with Twitter.」をクリックします。
連携アプリの認証画面が表示されます。 Twitterへのログイン情報を入力して「連携アプリを認証」をクリックします。
次の表示が出たら認証は完了です。画面を閉じます。
Twitterノードの編集画面に戻ると「Twitter ID」に連携したTwitter IDが表示されます。 「Add」をクリックします。
「Ok」をクリックして編集画面を閉じます。
Twitterノードのステータスが青くなっていれば設定は完了です。
インジェクトボタンをクリックして、Twitterにタイムスタンプ値がツイートされていることを確認してください。
IoTを始めたい方も・本格導入を検討中の方も:おすすめソリューションのご紹介
ビジネスのパフォーマンスを高めようとさまざまな業種・企業で、IoT活用を前提とするプロジェクトが動き始めています。ただし、検討を始めて最初に出てくるのは、こんな要望ではないでしょうか。
「最初は実験的にスタートしたいから、小さく簡単に素早く始めたい」
「実運用に移ったときには10万・100万単位のセンサ/デバイスに対応できるスケーラビリティも確保したい」
これにお応えできるサービス・製品がIBMにあります。ぜひ、下記の資料をご覧ください。(編集部)