Field Magicの導入レシピ記事や親機コントローラーの設定画面で目にする「Node-RED」について、本記事ではその基本(何であるか、どんな仕組みか、何が得意で何が苦手か)を解説したうえで、Field Magicの中で実際にどう使われているかを紹介します。
Node-REDとは何か
Node-REDは、ノードと呼ばれる部品を線でつなぎ、フロー(データの流れ)としてアプリケーションを組み立てるツールです。ブラウザ上のエディタで動作し、専用のIDEやコンパイラを別途用意する必要はありません。
もとは2013年、IBMの従業員が社内のサイドプロジェクトとして開発しました。その後オープンソースとして公開され、現在はJavaScriptの標準化・普及を担う団体であるOpenJS Foundationのプロジェクトの一つになっています。特定の企業が単独で権利を持つ製品ではなく、誰でも無償で使え、ソースコードも公開されています。
動作の基盤にはNode.js(サーバー上でJavaScriptを実行する環境)を使っています。ブラウザからNode.js上のNode-REDサーバーにアクセスし、フローエディタでアプリケーションを作成、その場でデプロイして動かします。
基本的な仕組み – ノード・フロー・デプロイ
Node-REDの操作は、大きく3つの要素で成り立っています。

ノード
特定の機能を持つ部品です。「一定時間ごとに信号を送る」「受け取った値を加工する」「メールを送信する」など、ノード1つが1つの処理を担当します。画面左のパレットに並び、ドラッグ&ドロップでワークスペースに配置します。
フロー
ノードを線でつないだ、処理の流れ全体です。あるノードの出力を、次のノードの入力につなぐことで、複数の処理を連結した1つのアプリケーションになります。作成したフローはJSON形式のデータとして保存され、他の環境へそのまま持ち込んで共有することもできます。
デプロイ
画面右上のボタン1つで、組み立てたフローを実行状態にします。コードのビルドや、サーバーの再起動といった作業は必要ありません。
標準で用意されている基本ノード(一定間隔で動作するinject、任意のJavaScript処理を書けるfunction、値を画面に表示するdebugなど)に加えて、ノードのパレットはコミュニティが公開する追加ノードで拡張できます。特定の外部サービスと連携するノードや、特定のハードウェアを扱うノードなど、用途に応じたノードが数多く公開されています。
メリットと、向き・不向き

Node-REDが評価されている点は、主に次の2つです。
学習コストの低さ
処理の大部分をノードの配置と接続で組み立てられるため、プログラミング経験が浅くても、フローの全体像を見ながら組み立てられます。
豊富なノードのエコシステム
IoTやAPI連携の分野で使われてきた実績があり、多様な外部サービス・ハードウェアに対応するノードが公開されています。
一方で、向いていない使い方もあります。条件分岐や状態管理が複雑になるフローは、線のつながりが増えて見通しが悪くなりがちです。また、ミリ秒単位の即応性が求められる制御にも向いていません。センサーの検知から機器動作までを遅延なく処理したい場合や、非常停止のように安全性へ直結する即時制御は、現場のPLCや専用回路で完結させる方が確実です。
Field Magic以外での活用例
Node-REDは、製造業・設備管理の分野でも、後付けのセンサーで現場を可視化する用途で使われています。
製造科学技術センター傘下の産業オートメーションフォーラム(IAF)による「ia-cloud」プロジェクトでは、工場設備に後付けしたセンサーとNode-REDを組み合わせ、非IT人材でも扱えるIoT環境を整備しています。積層信号灯(設備の稼働状態を示す表示灯)にセンサーを後付けして可視化し、改善活動に使う例も紹介されています。
電通国際情報サービス(ISID)の事例では、搬送設備(コンベア)に無線加速度センサーを後付けし、Node-REDで振動データを収集して、故障予知の仕組みを構築しています。
Field MagicでのNode-RED
Field Magicでは、制御ロジックの記述にNode-REDを採用しています。親機の中は3つの層に分かれており(詳しくは「親機のソフトウェア構造」を参照)、Node-REDはそのうちの「制御層」を担います。UI層(スケジュールアプリ、マップアプリ、Grafana)からの操作や、子機からのイベントを受け取り、無線コマンドへ変換して実行するのがNode-REDの役割です。
Field Magic親機のソフトウェア構造
専用の設定ソフトを別途開発するのではなく、汎用のNode-REDをそのまま使っている理由は、制御ロジックが導入後も変わり続けることにあります。運用時刻の変更、制御対象の追加、しきい値の調整といった変更を、お客様自身がフロー画面を開いて直接書き換えられます。ロジックの中身がブラックボックスにならない点も、専用ソフトにはない利点です。
Field Magicの親機には、汎用のNode-REDに加えて専用のノードが用意されています。

アプリ待受・イベント待受
UIアプリからの操作や、子機からのイベントを、フローの起点として受け取るノードです。
BBUSノード(BBUS-R2P2 / BBUS-AD2 / BBUS-RM8)
入出力ユニットへのコマンド(出力ポート制御、アナログ値取得など)を組み立てるノードです。
時系列データ保存
取得した値を時系列データベース(TimescaleDB)に書き込むノードです。
しきい値による自動判定のような、条件分岐を伴うロジックも組み込めます。ハードウェアタイマーやPLCで組んでいたロジックの多くは、この形でNode-REDのフローに置き換えられます。
実際の設定例を見る
Field Magicの導入レシピでは、実際にNode-REDのフローを組む手順を紹介しています。
【導入レシピ】制御盤を遠隔操作する工事計画と電気工事
【導入レシピ】離れた貯水槽のポンプを無線を使って自動制御する – 水位の見える化編
【導入レシピ】離れた貯水槽のポンプを無線を使って自動制御する – 連動制御編
取得した水位データと連動して給水ポンプを自動制御する手順を解説します。

