「ものづくり:make」を楽しみながら学ぶ人へ向けた独習サポートサイト。

micro:bit Lab.【マイクロビット】

micro:bit Lab.では、micro:bit【マイクロビット】に関する情報を紹介しています。

JavaScriptコードを実行できる「function」ノード
12-10

Node-REDでオリジナル関数を作る

2020-07-042020-07-04

JavaScriptコードを実行できる「function」ノードを使って、Node-REDでオリジナル関数を作る手順を紹介します。

12-10-1.オリジナル関数を作る

図12-10-1-1は「12-9.Node-REDではじめてのフロー」で作成したフローです。このフローは「実行するとデバッグメッセージとしてタイムスタンプを出力する」というものでした。本記事では、このフローにオリジナルの関数を追加する手順を紹介します。

図12-10-1-1.はじめてのフロー
図12-10-1-1.はじめてのフロー

「function」ノードの追加

Node-REDには、オリジナルの関数を作ることができる「function」ノードがあります。このノードは、パレットの機能カテゴリーにあります。

図12-10-1-2.「function」ノード
図12-10-1-2.「function」ノード

では早速「function」ノードをフローに追加してみましょう。追加する場所は「inject」ノードと「debug」ノードの間です。パレットから「function」ノードをワイヤーの上までドラッグします。このとき、ワイヤーが実線から点線へ変化するので、そのままドロップします。

図12-10-1-3.「function」ノードの追加
図12-10-1-3.「function」ノードの追加

すると、ワイヤーが自動的に「function」ノードの両端につながり、新しいフローができました。「function」ノードに青い丸が付いていますね。覚えていますか?忘れずにデプロイしましょう。

図12-10-1-4.新しいフロー
図12-10-1-4.新しいフロー

では、デプロイ済みの新しいフローを実行してみましょう。「inject」ノードの左側にあるボタンをクリックします。

図12-10-1-5.デプロイ済みの新しいフロー
図12-10-1-5.デプロイ済みの新しいフロー

結果をサイドバーの表示ウィンドウで確認しましょう。はじめてのフローを実行した結果と変化がありませんね。数字は異なりますが、タイムスタンプの値が表示されているようです。何が起こったのでしょうか?

図12-10-1-6.新しいフローの実行結果
図12-10-1-6.新しいフローの実行結果

「function」ノードとは

「function」ノードの中ではどのような処理が行われたのでしょうか?ノードをダブルクリックしてプロパティを確認してみましょう。

図12-10-1-7.「function」ノードのプロパティ
図12-10-1-7.「function」ノードのプロパティ

「function」ノードのプロパティには、コードというタブがあり、ここにJavaScriptコードを記述することができます。「function」ノードをワークスペースに配置した直後の初期コードは、次のようになっています。

初期コードは「受信したmsgオブジェクトを、そのまま送信する」という処理になります。つまり、何もしないので、結果が変わらなかったということです。

では、次のJavaScriptコードを入力してみましょう。このJavaScriptコードは、タイムスタンプをフォーマットされた日付に変換するものです。

JavaScriptコードの入力が完了したら、デプロイしてフローを実行しましょう。サイドバーの表示ウィンドウには、タイムスタンプではなく、フォーマットされた日付が表示されたのではないでしょうか。

図12-10-1-8.新しいフローの実行結果(日付のフォーマット変換)
図12-10-1-8.新しいフローの実行結果(日付のフォーマット変換)

もし、入力したJavaScriptコードにエラーがある場合、文法エラーなどは入力エリアの行番号に×印が付いて、マウスカーソルを合わせるとエラー内容が表示されます。

図12-10-1-9.エラーメッセージ
図12-10-1-9.エラーメッセージ

また、実行時のエラーメッセージは、サイドバーの表示ウィンドウに出力されます。

図12-10-1-10.実行時のエラーメッセージ
図12-10-1-10.実行時のエラーメッセージ

このように「function」ノードを使うと、JavaScriptコードを自由に記述できるのでオリジナルの関数を作ることができます。「function」ノードのさらに詳しい情報は「Node-RED ユーザーグループ ジャパン(Node-RED User Group Japan)」の「functionノードの書き方」をご覧ください。

おすすめ品

はじめてのNode‐RED 改訂版

「Node‐RED」は、IBMが2013年に開発した、オープンソースの「IoTアプリ/Webアプリ」向けの開発環境。「PC上」のデータも、「センサ」で取得したデータも、「Web上」のデータも、「クラウド上」のデータも、データを加工してやり取りするのに必要なのは、「ノード」と呼ばれる「ブロック」をつなぐだけ。本書では、この「Node‐RED」の基本的な操作からはじめ、実例による活用方法まで、具体的に学べるように解説しています。

実践Node-RED活用マニュアル

ビジュアルプログラミング用開発ツール「Node‐RED」6年間の開発と88回の更新を経て、ついに正式版「ver.1.0」リリース(2019年9月30日)。「Node‐REDユーザーグループ」有志が多彩で具体的な活用事例を解説!

この記事を読んだ人は、こんな記事にも興味があります。
スポンサーリンク
TOPへ移動
目次へ移動