4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Node-RED 2.0の新機能: フローデバッガ

Last updated at Posted at 2021-08-24

Node-RED 2.0の新機能: フローデバッガ

株式会社日立製作所
サービスコンピューティング研究部
西山博泰

はじめに

Node-REDはコーディングレスでプログラムを作成できるプログラミングツールです。このようなプログラミングはLow Code/No Codeプログラミングと呼ばれ、最近大きな注目を集めています。Node-REDは、IoT分野を筆頭に様々な分野で広く活用されているLow Codeプログラミングツールの一つです。

Node-REDでは、ノードと呼ばれる機能ブロックををつなぎ合わせることで、とても簡単にプログラムを作成することができます。こういったノードには、乱数生成など簡単なユーティリティノードから、SNSからの情報収集、今流行りの機械学習を行うためのノードなど様々なノードが存在し、それらはOSSノードとして多数公開されています。

2021年7月、Node-REDの最新版であるバージョン2.0がリリースされました。Node-RED 2.0では、アプリケーションの開発を容易化するさまざまな機能が新しく導入されました。一連の記事でNode-RED 2.0の新機能を紹介したいと思います。

この記事では、そのうちフローのデバッグを支援するための機能であるフローデバッガを紹介します。

フローデバッガ

Node-REDは使いやすいフローエディタを備えているため、プログラムの動作に不具合があった場合、フローの一部を修正して動作詳細の確認を容易に行うことができます。ただし、複雑なフローを修正しないで、その動作を確認したいというケースもあります。

フローデバッガは、他のプログラミング言語でのデバッガと同様に、Node-REDフローの実行を指定したポイントで停止し、処理状況を確認、実行を再開する機能を備えています。これにより、フローを修正しないでその詳細な動作を確認することができます。

ブレークポイント_3.png

インストール方法

Node-REDのフローデバッガは、Node-RED本体の基本機能ではなく、Node-RED 1.3で導入されたプラグイン機能を使った拡張機能です。ノードと同様に、追加インストール機能可能です。

フローデバッガのNode-REDへの機能追加方法は次の通りです。

  1. エディタメニューの パレットの管理ノードを追加 からnode-red-debuggerを検索

  2. ノードを追加」ボタンで機能を追加します。

    インストール.png

  3. Node-REDを再起動します。

  4. フローエディタ右のサイドバータブに「フローデバッガ」が追加されていることを確認します。

    メニュー.png

利用方法

サイドバーから「フローデバッガ」を選択すると、次のようなタブが表示されます。
左上のスイッチが初期状態では「無効」となっているので、フローデバッガの機能を利用する場合には「有効」に変更します。

デバッガパネル.png

  • ブレークポイントの設定

    フローデバッガを有効にしている場合、ノードの入出力ポートにブレークポイントを設定することができます。ブレークポイントの設定は、ノードの入出力メッセージポートにマウスを重ねると、薄い水色の角丸矩形が表示されます。

ブレークポイント_1.png

マウスをクリックすると、ポート上の矩形が濃い水色に変化し、ポートにブレークポイントが設定されます。

ブレークポイント_2.png

現在設定されているブレークポイントのリストは「デバッガ」サイドバーに表示されます。このリストからブレークポイントの有効/無効の切り替え、削除を行うことができます。ブレークポイントとして指定されたにメッセージが到達すると、「デバッグ」サイドバーにメッセージの内容が表示されます。

ブレークポイント_3.png

停止メッセージの右、もしくは、サイドバーの上部に表示されるボタンを押すことで停止したフロー実行の再開・ステップ実行を行うことができます。

ステップ.png

  • 実行中フローの停止

    「デバッグ」サイドバーの上部のストップボタンを押すと、実行中のフローを停止することができます。

stopボタン.png

停止したフローは、ブレークポイントで停止した場合と同様に、実行再開・ステップ実行を行うことができます。

なお、フロー中の各ノードは完全に停止しているわけではなく、ノード間のメッセージの送受信が停止した状態です。そのため、Injectノードの繰返し指定など、定期的なメッセージ出力を行うノードは、出力ポートにメッセージが蓄積されることになります。

デバッグの例

具体的な例を用いてフローデバッガを用いたデバッグの過程を紹介します。

ここでは、入力メッセージプロパティの加算を行う簡単なフローを例として用います。

example_00.png

以下は、加算対象の入力メッセージを出力するInjectノードの設定です。

example_01.png

changeノードはJSONata式を用いてペイロードのxプロパティとyプロパティを加算した結果を出力します。

example_02.png

このフローを実行してみると、debugノードの出力は次のようにundefinedとなります。

example_03.png

確認のため、フローデバッガを用いて、changeノードの入力ポートにブレークポイントを設定し、フローを実行します。

example_04.png

入力メッセージを確認すると、payloadの値がオブジェクトではなく文字列となっていることがわかります。Injectノードの設定でpayloadの値がJSONオブジェクトではなく文字列となっているため、JSONオブジェクトに変更します。

example_05.png

フローを再実行すると、期待する値100が出力されます。

example_06.png

おわりに

この記事ではNode-RED 2.0の新機能として「フローデバッガ」を紹介しました。フローデバッガは基本的なデバッグ機能をNode-REDに加えるものですが、Node-REDエディタの使い勝手の良さに加えてデバッグ機能がサポートされることで、フローの作成がさらに容易になることが期待されます。

Node-RED 2.0の新機能紹介

Node-RED: Node-REDは,OpenJS Foundationの米国およびその他の国における登録商標または商標である。
JavaScript: JavaScriptは、Oracleの米国およびその他の国における登録商標または商標である。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?