Check! enebular editor で自作ノードが使えるか検証してみる


こんにちは! @dz こと大平かづみです。

enebular Advent Calendar 6日目の記事を書きました。(遅くなってすみませんん…!)

Prologue - はじめに

つい先日、痒い所に手が届く enebular editor がリリースされました!

enebular は、オンラインのサービス上でフローを作成・管理でき、そのフローをエッジデバイスへデプロイすることができます。enebular ならログインするだけでさっと使うことができ、フローをいくつでも、プロジェクト単位で管理できるため、 Node-RED 単体で使うよりも手間を省いて開発に集中できます。

そんな enebular ですが、SaaS として提供されているため、 Raspberry Pi の GPIO などデバイスの低レイヤーにアクセスするノードが使えなかったり、自作したノードを読み込むことができないという弱点がありました。

この弱点を打開すべく(?)リリースされた enebular editor は、 Electron 製のデスクトップアプリケーションであり、インストールしたマシン上で enebular で管理しているフローを編集できたり、エッジデバイスにデプロイしたフローを直接編集できるようになりました!便利!

ということは、ローカルで動くなら、自作したノードも enebular で動かせるのではないか!?

enebular editor で自作したノードが利用できるのか検証

まず、通常では <ユーザーディレクトリ>\.node-red に該当する、 Node-RED のユーザーディレクトリがどこにあるのか探りました。

私のマシンは Windows なので、インストールしたアプリケーションのデータは AppData 配下に保存されます。その中にありました。

%LOCALAPPDATA%\Programs\enebular-editor\resources\app\node_modules\@uhuru\enebular-node-red

%LOCALAPPDATA% には、 <ユーザーディレクトリ>\AppData\Local が定義されています。)

つぎに、このディレクトリに対して、自作したノードをリンクしてみます。リンクの方法はこちらを参照しました。

enebular editor で編集したいフローを開いておいた状態(フローの npm パッケージが一式インストールされている状態)で、下記のように、自作したノードのディレクトリで npm link を実行したあと、Node-RED のユーザーディレクトリで npm link <name of node module> を実行します。

cd <directory that includes my own node>
npm link

cd %LOCALAPPDATA%\Programs\enebular-editor\resources\app\node_modules\@uhuru\enebular-node-red
npm link <name of my own node module>

npm list で確認すると、自作ノードが含まれていることがわかりました。

そして、いざ!enebular editor のフロー編集で自作ノードを探してみる。みつからない。 View > Reload してみても見つからない…(´・ω・`)

よし、一度ダッシュボードに戻ってから、またフローの編集画面を開いてみる。お…?

なるほど、そういうことなのですね。

どうやら、enebular editor は、フローの編集画面を開くときにいったん npm パッケージを全消ししてから、フローで使われるパッケージを改めてインストールしているようです。ふむ、 npm link した自作ノードのリンクも消されてしまうのですね~。目論見失敗 (´・ω・`)

結論

現時点の enebular editor (0.9.0) では、自作ノードは利用できなさそう(´・ω・`)

今後の更新で自作ノードも使えるようになること期待します~!✨

Epilogue - おわりに

ということで、期待叶わずという結果になってしまいましたが、enebular editor の動きを知ることができてそれはそれで面白かったです!

enebular はフローの管理やエッジデバイスへのデプロイなど、チーム開発や本番運用に近いところが良いところなので、ノードの開発・検証は Node-RED 単体で行って、自作ノードが晴れて Node-RED Flow Library にリリースできたら enebular で仕上げるという流れが本来なのかもしれませんね!

良い知見となりました!今後の更新も楽しみにしております!(・ω・)ノ