[#Node-RED] ファンクションノードのデバッグどうしてる?
今年はNode-RED UG Osaka勉強会 vol.3 で発表しました。
Node-REDのファンクションノードはJavascriptでプログラミングすることができます。一つのノードで複数の処理を行えますので、ループ処理も一つのノードで実現できます。
その反面、Node-REDであるにもかかわらず、工夫をしないとVisualなデバッグはできません。この発表では、デバッグ方法に応じたテクニックを説明しました。
1.プログラムを一時的に修正して確認する
デバッグの際はプログラムを一部修正して動作を確認します。しかし確認が終われば元に戻さないといけません。できれば簡単に変更して、簡単に戻したいものです。
• デバッグ用に端子を増やしても既存コードは そのままで良い
ファンクションノードの端子は簡単に増減できます。それぞれの端子にmsgを送るには配列をnode.send()しないといけません。しかし、配列の要素と端子数は必ずしも一致しなくてよいので、最終端子をデバッグ用に使えば、簡単にデバッグ情報の追加削除が(フロー的に)できます。
• コメントアウトは[CTRL]+[ / ]
とはいえ、ファンクションノードのプログラムに追記する必要がありますし、console.log()が使いやすい場合もあるでしょう。そのようなデバッグのコードをコメントアウトする際は、[CTRL]+[ / ]を使うと行単位でコメントできます。再度[CTRL]+[ / ]するとコメントが外せます。
2.処理の追跡が容易なこと
デバッグの際は、プログラムがどのように、あるいはどこまで進んだかを確認して、どこが間違っているかを確認します。
• デバッグノードの出力を切り分ける
デバッグノードの出力は標準のデバッグタブのほか、ステータスやコンソールにも出力できます。ほかの情報があまり出力されていない出力先を選べば、確認が容易になるでしょう。
• イベント的なものにはディレイノードや Dashboardのnotificationが便利
今どこを処理しているかを確認したい場合は、短時間表示された後に自動的に消えるディレイノードや Dashboardのnotificationが便利です。特にディレイノードはディレイする時間だけ表示されるので便利です。
• httpStaticにログ等を出力する
大量なログの場合、ファイルノードを使って出力する方法があります。その出力先をseting.jsのhttpStaticに指定されたディレクトリに置くと、ブラウザで取り出せるようになります。単純なファイルはもちろん、CSVやHTML形式にすると、色々と応用できるでしょう。
3.プログラム状態を見分けやすいこと
処理の経路ではなく状態を示したい時もあるでしょう。
• ファンクションノードやデバッグノードのstatusで状態を表示
一瞬ではなく状態を表示したままにするのには、ファンクションノードやデバッグノードのstatusが便利です。一度表示すると、新しい情報を表示するまで状態を確認できます。
• Dashboardのtextも便利
Dashboardのtextはブラウザで確認することができます。
このようにファンクションノードのデバッグ方法は多様です。必要に応じて使ってください。
« 論文研修会(WS はじめに編) | トップページ | 論文研修会(情報を正確に伝える構造) »
「Node-RED」カテゴリの記事
- アイデアをシームレスに実装する - 考える道具としてのNode-RED -(2020.12.13)
- [#Node-RED] ファンクションノードのデバッグどうしてる?(2019.12.16)
- Node-RED: joinノードでタイムアウト処理(2018.12.25)
- Node-REDで世界が変わる!(2018.12.01)
- デブサミ関西でNode-REDとペンギンと勇気の話をしました #devsumiB(2018.10.28)
コメント