ブロックを積みながら(114) Node-RED、『はじめてのノード開発』やってみた

Joseph Halfmoon

手元のNode-REDのパレットのノード、舐めてみた感があり。ようやく。今回からは「新たな地平」です。自前でノード作ってみるだけなんだけれども。「Node-RED User Group Japan」様のお陰でドキュメント充実。今回は『はじめてのノード開発』なるページをそのままやってみただけ。ノード追加できましたぞ。

※「ブロックを積みながら」投稿順 index はこちら

※動作確認にはRaspberry Pi 3 model B+のRaspberry Pi OS(32bit)上にインストールした以下を使用しています。

    • Node-RED v2.0.5
    • node-red-dashboard 3.2.0

今回参照させていただいているドキュメントは「Node-RED User Group Japan」様のノードの開発の中の以下のページです。

はじめてのノード開発

そのページの「上半分」だけなんだけれども。勿論、ローカルなお試し用のサンプルなので、間違ってもnpmに公開するな版、であります。

まずは当方環境の確認

使用機材とNode-RED本体などのバージョンは上の方に記してあるので、node.jsとnpmのバージョンを確認しておきます。Raspbian OSと言っていた時代から維持しているOS環境で相当前にインストールした版なので新しいものであるわけないですが、念のため。node.jsは以下に。

$ node --version
v14.21.3

npmは以下に。

$ npm --version
6.14.18

どこかに作業ホルダを掘ってそこで作業せよ、との思し召しなのでテキトーに以下で作業することにしました。

$ cd /mnt/hdd1/piwork/dev
$ mkdir node-red-contrib-example-lower-case
$ cd node-red-contrib-example-lower-case/

フォルダ名でも使ってますが node-red-contrib-チョメチョメというお名前は、node-red用だけれども、node-redがメンテナンスしているわけじゃない(contrib)ときにつけると良いみたいです。contribでないのは公式がサポートしているのでそういうお名前は使うなと。勿論分かっていればnode-redから始めなくてもよいらしいです。知らんけど。

package.json の作成

最低3ファイル必要なうち、package.jsonファイルは以下のようにnpmで初期化して作るのが良いみたいです。

$ npm init

実行結果の上の方が以下に。いろいろ聞かれますけど、今回のサンプルに必須なのはpackage nameのところくらいか。テキトーに入力してます。npm_init

テキトーに答えて生成された package.jsonファイルの下の方に ご指示に従い”node-red” : というメンバを追加しました。こんな感じ。package_json

 

javascriptファイルの作成

今回のサンプルは文字列中、大文字を小文字で変換するというだけのプログラムです。サンプル例そのままを入力。lower-case_js

 

htmlファイルの作成

そして見た目を決めるhtmlファイルもサンプル例そのまま、間違えないように入力。結局 scriptタグ3個じゃん。スクリプト本体の登録、設定パネル、そしてヘルプ部分とな。lower-case_html

 

パッケージのインストール

上記3つのファイルを作成したら、Node-REDのインストールディレクトリへ向かい、npm install を実施。当方環境では以下のとおり。

$ cd ~/.node-red
$ npm install /mnt/hdd1/piwork/dev/node-red-contrib-example-lower-case

実際やってみると、以下のような感じ。vulnerabilities だと、不吉な。そういわれてもな~。とりあえず無視ね。npm_install

 

Node-RED再起動後、動作確認

再起動後、もとからある「機能」パレットの片隅に、前から入っていたじゃん、みたいな雰囲気でしれっと存在してました。馴染んで埋没している感じがすごいな。あやうく見落とすところでした。なお、以下のように先ほどhtmlファイルに書いた内容がhelpに出力されます。

Lower-case_help

とりあえずの確認用フローが以下に。Injectノードから “ABCdefG”なる大文字小文字混じりの文字列が流れてきます。

lowerCaseFlow

さて、lower-caseノードの設定画面が以下に。Nameというtext入力フィールドのみなので、その通りの画面。

lowerCaseSetting

さて、Injectしてみた結果が以下に。全小文字になっとります。

lowerCaseDebug

まあ、とりあえず動作確認はできた?でもちゃんとユニット・テストのやり方とか書いてあるのだよね。それはまた次回か。

ブロックを積みながら(113) Node-RED、CSSセレクタでHTML要素を抽出 へ戻る

ブロックを積みながら(115) Node-RED、『はじめてのノード開発』つづき へ進む