最近ノーコード・ローコードツールが流行っています。
私が数年前に買った Raspberry Piには専用OSである Raspbian(現在は Raspberry Pi OSと改名)をインストールして遊んでいました。
非力なマシンに GUIまで乗っけて大層重かったのですが、入っているものは一通り動かしましたね。
Java統合開発環境の BlueJ・Java教育ツールの Greenfoot・マインクラフトの限定版(Pythonの勉強で自動操作する)など、結構面白いソフトが入っていた覚えがあります。
その中の1つに Node-REDがありまして、これが私と Node-REDの出会いでした。
何か画面に部品を置いて線を繋いでいくとプログラムができる、そんなツールだったんですが、当時は全く使い方が分からずに放ってありました。
その時は Raspberry Pi専用のツールだと思っていました。
その後別件で Node.jsをやることになった時に、再び Node-REDの名前を目にするようになって「npmでインストールできるということは Node.jsが動くなら Raspberry Piじゃなくてもどこでも動くのでは?」から始まりました。
Node-REDは Node.jsで動く IBMが開発したローコードツールという位置づけで良いと思います。
本家サイトはこちらです。
Node-RED
Node-RED日本ユーザー会というのもあります。
ここでは Node.js環境に Node-REDをインストールして、ローコードツールを味わってみます。
1.環境
一通り 2025年3月25日時点での最新版を使います。
- Ubuntu Server 24.04
- Node.js 22.14.0
- Node-RED 4.0.9
Linuxでやりますが、Node.jsが動くならどこでも動くでしょう。
Ubuntu Serverのインストールについては「Ubuntu 24.04 Server インストール」に、Node.jsについては「Node.jsインストール」にそれぞれ書いています。
以降 Ubuntu Serverに Node.jsがインストールされている状態からスタートします。
2.インストール
Node-REDのインストール方法はこちら。
Running Node-RED locally
これに従ってインストールしていきます。
subro@UbuntuServer2404-1:~$ sudo npm install -g --unsafe-perm node-red
added 311 packages in 36s
63 packages are looking for funding
run `npm fund` for details
npm notice
npm notice New major version of npm available! 10.9.2 -> 11.2.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.2.0
npm notice To update run: npm install -g npm@11.2.0
npm notice
インストールできました。
なお、Ubuntu環境で snap版の Node.jsでの Node-REDのモジュールの配置場所は [/usr/local/lib/node_modules/node-red]ディレクトリでした。
手順にはありませんけど、Node-REDを実行する専用ユーザーと専用グループを Ubuntu Serverに作ります。
「nodered」ユーザーと「nodered」グループにしました。
subro@UbuntuServer2404-1:~$ sudo adduser nodered
info: ユーザ `nodered' を追加しています...
info: Selecting UID/GID from range 1000 to 59999 ...
info: 新しいグループ `nodered' (1001) を追加しています...
info: Adding new user `nodered' (1001) with group `nodered (1001)' ...
info: ホームディレクトリ `/home/nodered' を作成しています...
info: `/etc/skel' からファイルをコピーしています...
新しい パスワード: noderedユーザーの新規パスワード
新しい パスワードを再入力してください: パスワードをもう一回
passwd: パスワードは正しく更新されました
nodered のユーザ情報を変更中
新しい値を入力してください。標準設定値を使うならリターンを押してください
フルネーム []: Enterキー
部屋番号 []: Enterキー
職場電話番号 []: Enterキー
自宅電話番号 []: Enterキー
その他 []: Enterキー
以上で正しいですか? [Y/n] Y
info: Adding new user `nodered' to supplemental / extra groups `users' ...
info: ユーザ `nodered' をグループ `users' に追加しています...
新規ユーザーとグループができましたので、それで Ubuntu Serverにログインします。
Node-REDを実行します。
nodered@UbuntuServer2204-1:~$ node-red
24 Mar 22:02:22 - [info]
Welcome to Node-RED
===================
24 Mar 22:02:22 - [info] Node-RED バージョン: v4.0.9
24 Mar 22:02:22 - [info] Node.js バージョン: v22.14.0
24 Mar 22:02:22 - [info] Linux 6.8.0-55-generic x64 LE
24 Mar 22:02:23 - [info] パレットノードのロード
24 Mar 22:02:23 - [info] 設定ファイル: /home/nodered/.node-red/settings.js
24 Mar 22:02:23 - [info] コンテキストストア : 'default' [module=memory]
24 Mar 22:02:23 - [info] ユーザディレクトリ : /home/nodered/.node-red
24 Mar 22:02:23 - [warn] プロジェクトは無効化されています : editorTheme.projects.enabled=false
24 Mar 22:02:23 - [info] フローファイル : /home/nodered/.node-red/flows.json
24 Mar 22:02:23 - [info] flow ファイルを作成します
24 Mar 22:02:23 - [warn]
---------------------------------------------------------------------
フローのクレデンシャルファイルはシステム生成キーで暗号化されています。
システム生成キーを何らかの理由で失った場合、クレデンシャルファイルを
復元することはできません。その場合、ファイルを削除してクレデンシャルを
再入力しなければなりません。
設定ファイル内で 'credentialSecret' オプションを使って独自キーを設定
します。変更を次にデプロイする際、Node-REDは選択したキーを用いてクレ
デンシャルを再暗号化します。
---------------------------------------------------------------------
24 Mar 22:02:23 - [info] サーバは http://127.0.0.1:1880/ で実行中です
24 Mar 22:02:23 - [warn] 暗号化されたクレデンシャルが存在しません
24 Mar 22:02:23 - [info] フローを開始します
24 Mar 22:02:23 - [info] フローを開始しました
立ち上がりました。
3.Node-REDを使ってみる
Ubuntu Serverの [1880/tcp] で待ち受けていますので、そこに WEBブラウザで HTTPアクセスしてみて下さい。
私の環境では [http://UbuntuServer2404-1:1880] です。
こんな画面が出るはずです。
「ようこそ」の画面は新バージョンになってからの機能説明が11ページありました。
一通り見終わるとこの画面になります。
これがNode-REDの開発画面で、左にある部品を真ん中の方眼の所にドラッグ&ドロップで持ってきて、線で繋げてアプリケーションを作ります。
WEBサーバーを作ってみましょう。
仕様: [http://UbuntuServer2404-1/hello] にアクセスしたら「Hello World!」の画面を返す。
まず左ペインから、[http in][template][http Response]の部品を持ってきて、以下のように線で繋いで下さい。
[http in]ノードをダブルクリックしますと以下の画面になるので [URL]を「/hello」として下さい。
これがエンドポイントになります。
完了を押します。
[template]ノードをダブルクリックしますと、以下の画面になるので [構文] を [HTML] にして、[テンプレート] の中を以下のように書き換えます。
これがレスポンスボディになります。
完了を押します。
右上にあるこのボタンを押します。
[http://UbuntuServer2404-1:1880/hello] に WEBブラウザでアクセスします。
「Hello World!」が表示されました。WEBサーバーとして動いています!
たったこれだけの作業で簡易WEBサーバーとして動いてしまいました。
中々のスグレモノと思います。
4.部品(ノード)について
インストール直後の部品は少ないですが、画面右上にあるハンバーガーメニューを開くとこんなメニューになりますので、[パレットの管理] を選択して下さい。
こんな画面になりますので [ノードを追加] タブを選択して、虫眼鏡の検索行に検索ワードを入れると関連のものが出てきます。
例として「azure」と入れてみました。
こんなリストが出てきました。
Azureを使ったことがある人なら「Azureのアレにアクセスする部品か!」って分かると思います。
こうしてNode-REDの公式であったり第三者が作った部品を(Node-RED では「ノード」と呼びます)を増やしていけます。
5.ログイン画面有効化
オマケ機能程度ですがログイン画面を有効にしましょう。
先程立ち上げた Node-REDはCtrl+cで停止させて下さい。
ユーザー認証機能の有効化方法が書いてあるところ(Node-RED日本ユーザー会による翻訳だと思います)はこちら。
セキュリティ
上記ドキュメントの「エディタおよび管理APIのセキュリティ」の段落が対象です。
設定ファイルは Node-REDを実行したユーザーのホームディレクトリ以下にあります。
ここの例では [nodered]ユーザーですので、
[/home/nodered/.node-red/settings.js]ファイルになります。
ユーザーのパスワードは bycriptという方法で暗号化した文字列を入れないといけませんので、先に作っておきます。
パスワードは「Subro38Manager-」です。
nodered@UbuntuServer2404-1:~$ node-red admin hash-pw
Password: Subro38Manager- ← 画面には出ない
Password: $2y$08$0cGhoTY3xQ8gtnpBTB3qTemQbSs9D5n0skYTGPDbRp2inc6KDNlXW
ピンクの部分が暗号化されたパスワード文字列になります。
vimなどのテキストエディタで [settings.js]ファイルを以下のように書き換えて下さい。
(ついでに同じパスワードの「subro」ユーザーを追加しています。)
//adminAuth: {
// type: "credentials",
// users: [{
// username: "admin",
// password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.",
// permissions: "*"
// }]
//},
↓↓↓↓↓↓ コメントを表す // を消しています ↓↓↓↓↓↓
adminAuth: {
type: "credentials",
users: [{
username: "admin",
password: "$2y$08$0cGhoTY3xQ8gtnpBTB3qTemQbSs9D5n0skYTGPDbRp2inc6KDNlXW",
permissions: "*"},
{
username: "subro",
password: "$2y$08$0cGhoTY3xQ8gtnpBTB3qTemQbSs9D5n0skYTGPDbRp2inc6KDNlXW"",
permissions: "*"
}]
},
修正したら、Node-REDをまた起動します。
WEBブラウザで再び [http://UbuntuServer2404-1:1880] にアクセスすると今度はこのような画面が出ましたので、[subro]ユーザーでログインしてみます。
ログインした後の絵は変りませんので割愛します。
adminとは別のユーザーを作りはしましたが、作成したフロー(ノーコードのプログラム)はユーザー別になってるわけじゃありませんでした。
Node-REDを実行している OSユーザー1人につき(ここの例では[nodered]ユーザー)、フローのデータ管理枠が 1つという捉え方になるのではないでしょうか。
==========
いかがだったでしょうか。
Node-REDの利点は IBM製で、メンテナンスと機能拡充が何年も続いています。
部品も世界中で新しいノードがどんどん作られていて、特に IoT分野(センサー等の値を得るとか)での利用が進んでいるようです。
データベースにアクセスするノードもありました。
Raspberry Piも、きっとあのチクチク(GPIO)に付けたセンサーを扱うノードがあるんだろうと思います。
(自作センサー回路から Node-REDで信号を拾う電子工作について「光センサーで IoT(前編)」に書いています)
Node.js自体が非力な環境で動かせる特性を持っているものですし、これならサーバー監視に使える簡単な Web-APIを作れるだろうと思っています。
私個人的にはノーコード・ローコードツールは長生きするものが少ない印象なんですが、Node-REDは実体が Node.jsというメジャーな JavaScript実行環境という点で長生きしそうな雰囲気があります。
どうせタダですし、インストールもこの通り簡単なので、一度イジってみると面白いと思います。
電子工作じゃなくても十分使えるポテンシャルがあると思います。
Raspberry Piも最近のはかなりパワフルなので、そこで Linuxの勉強をしても良いかもです。