Node-RED(ノードレッド)は、ブラウザ上で「ノード」と呼ぶ処理の部品を線でつなぎ、データの流れ(フロー)としてプログラムを組み立てるローコード開発ツールです。実行環境はNode.jsで、センサーからMQTTで届く値を加工してデータベースへ入れる、Web APIを数分で立てる、といった「つなぐ処理」を得意とします。ライセンスはApache License 2.0で、無料かつ商用利用もできます。
最新版は2026年9月8日公開の5.0.7です。5.0系はNode.js 22.9以上が必須になりました。この記事では、5.0.7をローカルで動かした結果を交えながら、できること・料金・導入・使い方・本番運用前の設定を順に説明します。
まとめ:Node-REDの要点
- Node-RED=ノードをつないでフローを組む、Node.js製のローコード開発ツール。読み方はノードレッド
- 2013年にIBMの社内プロジェクトとして生まれ、現在はOpenJS Foundationのプロジェクト。GitHubのスター数は23,691(2026年9月28日時点)
- 料金は無料。商用利用も可能(Apache License 2.0)。有償なのは運用管理サービスのFlowFuseで、価格は問い合わせ制
- 最新は5.0.7(2026年9月8日)。5.0系はNode.js 22.9以上が必須で、推奨は24。Node.js 18〜20の環境やRaspberry Pi 3B以前は4.1系(4.1.15)にとどまる
- 導入は
npm install -g node-redかdocker run -p 1880:1880 nodered/node-red。エディタはhttp://127.0.0.1:1880で開く - 初期状態のエディタには認証が無く、全IPv4アドレスで待ち受ける。LANやクラウドに置く前に
adminAuthを設定する - 画面付きのダッシュボードは旧
node-red-dashboardが保守終了。新規は@flowfuse/node-red-dashboardを使う
Node-REDの仕組み:ノード・フロー・msgの関係
Node-REDの画面(フローエディタ)には、左に部品一覧(パレット)、中央に作業領域があります。「inject(一定間隔で発火)」「http in(HTTPリクエストを受ける)」「mqtt in(MQTTを購読する)」などのノードを置き、出力端子から次のノードの入力端子へ線を引くと、上流から下流へ msg というJavaScriptオブジェクトが順に渡されます。主な値は msg.payload に入り、各ノードがそれを書き換えて次へ送ります。
画面右上の「デプロイ」を押すと、組んだフローがサーバー側のNode.jsプロセスで動き始めます。フローは flows.json というJSONファイルに保存されるため、ファイルごとバックアップやGit管理ができます。条件分岐やデータ整形のような既存ノードで足りない処理は、「function」ノードにJavaScriptを数行書いて補います。完全なノーコードではなく、定型部分をノードで済ませ、固有の処理だけをコードで書く道具と捉えると実態に近いです。
名前の由来と開発の経緯
公式サイトの沿革によると、Node-REDは2013年初めにIBM Emerging Technology ServicesのNick O’Leary氏とDave Conway-Jones氏が始めた副業的なプロジェクトで、当初はMQTTのトピック間の対応づけを可視化する試作でした。同年9月にオープンソース化され、npmへの初回公開は2013年9月27日です。2016年10月にJS Foundationの創設プロジェクトとなり、2019年に同財団とNode.js Foundationが統合してOpenJS Foundationになりました。2021年にはO’Leary氏が企業向けの運用基盤を提供するFlowFuse社を設立しています。
名前は「Code Red」をもじった言葉遊びで、「Node」はフロー型のノードとNode.jsの両方を指します。「RED」が何の略かは公式にも決まっていません。
Node-REDでできること:用途と使うノード
Node-REDが向くのは、機器・API・データベースの間でデータを受け取り、形を変えて渡す処理です。標準ノードと追加ノードの組み合わせで、次のような処理を組めます。
| やりたいこと | 主に使うノード | 補足 |
|---|---|---|
| センサー値の収集 | mqtt in/serial in | MQTTは標準、シリアルは追加 |
| Web APIの作成 | http in → http response | 標準ノードのみで可 |
| 外部APIの呼び出し | http request | 定期実行はinjectと組む |
| データの整形・分岐 | change/switch/function | JSONata式も使える |
| DBへの保存 | 各DB用の追加ノード | パレット管理から導入 |
| 画面での可視化 | @flowfuse/node-red-dashboard | グラフ・ボタン・入力欄 |
MQTTの受け口になるブローカー側の仕組みはMQTTブローカーとは?仕組み・主要ブローカー比較・構築手順を解説で、工場設備のデータをMQTT上で扱う規約はSparkplug Bとは?MQTT上の産業データ規約と状態管理を実装目線で解説で詳しく扱っています。
活用例:製造現場・IoT・家庭の自動化
Node-REDで構成できる用途例を挙げます。
- 製造現場のデータ収集:PLCや設備からOPC UA・Modbus・MQTTで値を取り、稼働状況をダッシュボードに出す。設備データをERPやデータベースへ渡す中継役にもなる
- IoTゲートウェイ:Raspberry Piなどの小型機に入れ、GPIOやシリアルで読んだ値をクラウドのMQTTエンドポイントへ送る。AWS側の受け口はAWS IoT Coreとは?機能・料金・MQTT接続方法をまとめて解説が参考になります
- 家庭の自動化:スマート家電のAPIや温湿度センサーをつなぎ、条件に応じて家電を動かす。構成の組み方はラズパイでスマートホームを自作する方法|構成の選び方とPi 5世代のGPIO変更で解説しています
ダッシュボードの選定:FlowFuse Dashboard
長く使われてきた node-red-dashboard(npm上の最新は2025年8月7日公開の3.6.6)は、npmで「No longer maintained」と表示される非推奨パッケージです。代替として示されているのは、FlowFuse社が開発する @flowfuse/node-red-dashboard(Dashboard 2.0、2026年9月28日時点で1.32.0)と node-red-contrib-uibuilder です。古い解説記事の手順どおりに旧ダッシュボードを入れると、保守の止まった部品を抱えることになるので、新規構築では前者を選びます。
Node-REDの料金と商用利用の条件
Node-RED本体に料金はかかりません。自分のPC・サーバー・クラウドのVMで動かす場合も、本体の利用料とは別に、計算資源・通信・外部API・保守運用などの費用が構成に応じて発生します。
Apache License 2.0で商用利用できる範囲
Node-REDはApache License 2.0で公開されています。社内システムに組み込む、Node-REDで作ったフローを顧客に納品する、自社製品に同梱して販売する、といった商用利用はいずれも可能です。再配布では、ライセンスの写しの提供、改変ファイルへの変更の明示、配布する派生物のソースに含まれる関連する著作権・特許・商標・帰属表示の保持が必要です。元の配布物にNOTICEがある場合は、関連する帰属表示も所定の形で含めます。
注意したいのは、追加でインストールするノード(コントリビュートノード)のライセンスが個別に決まっている点です。多くはApache-2.0やMITですが、製品に同梱して配る場合は、使うノードの package.json の license 欄を1つずつ確認してください。
有償の選択肢:FlowFuse
複数台のNode-REDを一元管理したい、ユーザー管理や監査ログが必要、といった企業向けの要件には、FlowFuse社の有償サービスがあります。料金ページ(2026年9月28日確認)では、OT向けのEdge、IT向けのHub、多数の端末向けのFleetの3製品に分かれ、いずれも価格は「Contact Us(問い合わせ)」です。提供形態はFlowFuse Cloudと、DockerやKubernetesで自社環境に置くセルフホストの2通りです。Node-RED本体を使うだけならFlowFuseの契約は不要です。
Node-REDのインストール手順(5.0系)
Node.jsの版の選び方
Node-REDは版ごとに必要なNode.jsが違います。npmレジストリの engines 指定と公式の変更履歴では次のとおりです。
| Node-RED | 最新(公開日) | 必要なNode.js |
|---|---|---|
| 5.0系 | 5.0.7(2026-09-08) | 22.9以上(推奨24) |
| 4.1系(保守) | 4.1.15(2026-09-09) | 18.5以上 |
4.1系はnpmの v4-maintenance タグで保守リリースが続いています。ただしNode.js 18と20はどちらも保守期間が終わっているため、4.1系+Node.js 20以前の組み合わせは、既存機器を動かし続けるための暫定運用と考えてください。新規に構築するならNode.js 24と5.0系を選びます。Node.js自体の版の選び方はNode.jsとは?仕組み・版の選び方・標準機能で動かす手順を実装目線で解説を参照してください。
npmによるNode-REDのインストールと起動
Node.jsが入っていれば、npmで全体にインストールします。Windowsでは先頭の sudo を付けません。
sudo npm install -g node-red
node-red
起動ログに Server now running at http://127.0.0.1:1880/ と出たら、ブラウザでそのURLを開くとフローエディタが表示されます。フロー・設定・追加ノードは、ホームディレクトリの .node-red フォルダ(ユーザーディレクトリ)に保存されます。
DockerによるNode-REDの起動とデータ永続化
公式のDockerガイドにある最小構成は次のコマンドです。-v node_red_data:/data を付けないと、コンテナを作り直したときにフローが消えます。
docker run -it -p 1880:1880 -v node_red_data:/data --name mynodered nodered/node-red
Docker Hubのタグは版の選び方に直結します。2026年9月28日時点で latest は5.0.7(Node.js 24)ですが、latest-22 は4.1.15(Node.js 22)を指しています。「Node.js 22のイメージなら5.0系が動くはず」と latest-22 を選ぶと4.1系が入るので、5.0系を固定したいときは nodered/node-red:5.0.7 のように版を書きます。Docker自体の導入はDockerとは|仮想マシンとの違い・必要スペック・インストール手順を解説【2026年版】で解説しています。
Raspberry Piへの導入と自動起動設定
Raspberry PiなどDebian系のOSには、Node.jsとNode-REDをまとめて入れる公式スクリプトがあります。
bash <(curl -sL https://github.com/node-red/linux-installers/releases/latest/download/install-update-nodered-deb)
node-red-start
sudo systemctl enable nodered.service
3行目を実行しておくと、電源投入時にNode-REDが自動で起動します。同じスクリプトを再実行すると、Node.jsとNode-REDの更新にも使えます。なお5.0系は64ビットOSが前提です。Node.jsプロジェクトが32ビットARM(arm/v7)向けのイメージを作らなくなったため、5.0の公開告知で64ビットOSを動かせないRaspberry Pi 3B以前はサポート対象外と明記されました。Docker Hubの5.0.7イメージもamd64とarm64だけで、arm/v7版があるのは4.1系(4.1.15-22 など)です。
Node-REDの使い方:HTTP APIを1本作る手順
ノードをつなぐ操作の流れを、「/hello?name=issoh にアクセスするとJSONを返すAPI」を例に示します。
- パレットの「ネットワーク」から「http in」を作業領域へドラッグし、URLに
/hello、メソッドにGETを設定する - 「function」ノードを置き、下のコードを書く
- 「http response」ノードを置き、http in → function → http response の順に線でつなぐ
- 右上の「デプロイ」を押し、ブラウザかcurlで
http://127.0.0.1:1880/hello?name=issohを開く
functionノードに書くコードです。クエリ文字列は msg.req.query に入っています。返す at はUTCの日付で、日本時間の午前9時より前は前日になります。
const name = msg.req.query.name || "guest";
msg.payload = { message: `hello ${name}`, at: new Date().toISOString().slice(0, 10) };
return msg;
Node-RED 5.0.7(Node.js v26.5.0)で実行すると、次のJSONが返りました。
$ curl "http://127.0.0.1:1880/hello?name=issoh"
{"message":"hello issoh","at":"2026-09-28"}
動きを確かめたいときは、functionノードの出力に「debug」ノードをつなぎます。右側のデバッグタブには初期設定で msg.payload が表示され、msg 全体を見たいときはdebugノードの出力を「msgオブジェクト全体」に切り替えます。
フローの書き出しと読み込み
組んだフローは、右上のメニュー「書き出し」でJSONとして取り出せ、「読み込み」で別のNode-REDへ貼り付けられます。上のAPIをJSONで書くと次の形になり、これを読み込めば同じフローが再現されます。
[
{"id":"h1","type":"http in","url":"/hello","method":"get","wires":[["f1"]]},
{"id":"f1","type":"function","func":"const name = msg.req.query.name || \"guest\";\nmsg.payload = { message: `hello ${name}`, at: new Date().toISOString().slice(0, 10) };\nreturn msg;","outputs":1,"wires":[["r1"]]},
{"id":"r1","type":"http response","wires":[]}
]
Node-RED 5.0の変更点と4.xからの移行
5.0.0は2026年6月9日に公開されました。公式の変更履歴と公開告知から、利用者に影響する主な点を挙げます。
- Node.js 22.9以上が必須(推奨は24)。4.x時代の18〜20の環境ではそのまま上げられない。Raspberry Pi 3B以前もサポート対象外になった
- パレット管理が使うnpmをNode-RED自体に同梱し、別途npmが入っていなくても追加ノードを導入できるようになった。管理APIの既定のCORS設定は削除された
- エディタのサイドバーを刷新し、2つのパネルに分割できるようになった。ダークテーマが標準で入った
- functionノードからLink Inノードを直接呼び出せるようになった
- ESモジュール形式のノードをインストールできるようになった
- 新規に作られる資格情報ファイル(
flows_cred.json)の置き場所が、ユーザーディレクトリではなくフローファイルの隣になった - TLS設定でpfx・p12ファイルと、環境変数からの証明書読み込みに対応した。delayノードにバースト、デバッグタブに一時停止が加わった
移行の順番は、Node-REDを止めてユーザーディレクトリ(flows.json・flows_cred.json・settings.js・追加ノードを含むフォルダ全体)をバックアップ → Node.jsを22.9以上に上げる → npm install -g node-red@5 の順です。資格情報はsettings.jsの credentialSecret、未設定なら自動生成された鍵で暗号化されているため、フローのファイルだけを移すと復号できないことがあります。5.0.1〜5.0.7は不具合修正と依存ライブラリの更新が中心で、5.0.6ではbcryptライブラリの更新が一部のOS・CPUで動かない問題のため取り消されています。
本番運用前に必ず入れるセキュリティ設定
Node-REDで最も見落とされやすいのは、初期状態のエディタに認証が無いことです。付属の settings.js では adminAuth がコメントアウトされ、待ち受けは「全IPv4インターフェース」です。5.0.7を初期設定のまま起動し、フロー一覧を返す管理API(GET /flows)を叩くと、認証なしでステータス200が返りました。同じネットワークにいる誰でもフローを読み書きでき、execノードを置けばサーバー上でコマンドも実行できる状態です。
adminAuthによるエディタ・管理APIの認証設定
まずパスワードのハッシュを作ります。npmで全体にインストールした環境なら次のコマンドで、パスワードを聞かれるので入力します。
node-red admin hash-pw
表示された $2y$08$ で始まる文字列を、ユーザーディレクトリの settings.js で、既存の module.exports = { ... } の内側に次の設定を記述し、password の値全体を生成されたハッシュで置き換えます。
adminAuth: {
type: "credentials",
users: [{
username: "admin",
password: "$2y$08$(hash-pwの出力)",
permissions: "*"
}]
},
この設定で再起動すると、GET /flows は401を返し、エディタにはログイン画面が出ました。
待ち受けアドレス・資格情報の暗号鍵・HTTPS
- 待ち受けの限定:同じマシンからしか使わないなら
uiHost: "127.0.0.1"を設定する。外から使う場合もリバースプロキシやVPNの内側に置く - 資格情報の暗号鍵:
credentialSecretを設定しないと、起動ログに「システム生成の鍵で暗号化している。鍵を失うと資格情報を復元できない」と警告が出る。別サーバーへ移す可能性があるなら自分で鍵を決めておく - HTTPS:
settings.jsのhttpsに証明書と秘密鍵を指定するか、TLSを終端するリバースプロキシの後ろに置く - http inノードで作ったAPI:
adminAuthが守るのはエディタと管理APIだけ。http inで公開するエンドポイントにはhttpNodeAuthで別にBasic認証を付けるか、プロキシ側で守る
Node-REDが向かない場面とn8n・Zapierとの使い分け
Node-REDは「機器やプロトコルに近いところでデータを流す」道具です。SaaS同士をつなぐ業務自動化や、大量データの集計処理が主目的なら、別の選択肢の方が合います。
| 項目 | Node-RED | n8n | Zapier |
|---|---|---|---|
| 得意分野 | IoT・機器・プロトコル | SaaS・AIの業務連携 | SaaS連携(非開発者) |
| 動かす場所 | 自前(端末〜クラウド) | 自前またはクラウド | クラウドのみ |
| ライセンス | Apache-2.0 | Sustainable Use License | 商用SaaS |
| 本体の費用 | 無料 | 自前は無料版・有料版あり/クラウドは有料 | タスク数で課金 |
選ぶ基準ははっきりしています。MQTT・シリアル・Modbusのように機器側のプロトコルを扱う、あるいはネットワークの切れる現場の端末上で動かす必要があるなら、Node-REDが第一候補です。SlackやGoogleスプレッドシートなどSaaSの連携が中心で、用意された連携部品の多さを重視するならn8nかZapierの方が手数が少なく済みます。比較の詳細はn8nとは?読み方・できること・料金・始め方をわかりやすく解説【2026年版】とZapierとは?読み方・できること・料金とタスク課金の仕組み【2026年版】を参照してください。
Node-REDを採用すべきでない場面もあります。
- 1つのフローに業務ロジックの大半を詰め込む設計:functionノードが数百行になると、テストもコードレビューも通常のプログラムより難しくなる。ロジックが育つ見込みがあるなら、最初から通常のアプリケーションとして書く
- 複数台での冗長化が必須の処理:Node-RED単体は1プロセスで動き、フローの状態(コンテキスト)も標準ではメモリかローカルファイルに置く。複数台でのフェイルオーバーを組む仕組みは持たないため、可用性の要件が厳しい基幹処理はキューやワークフローエンジンを前提に設計する
- 複数人で同じフローを並行編集する体制:プロジェクト機能でGit管理はできるが、
flows.jsonの差分は読みにくく、衝突の解消が手作業になりやすい
Node-REDに関するよくある質問
Node-REDの読み方は?
「ノードレッド」と読みます。「Node」はノードとNode.jsの両方を指し、「RED」は「Code Red」をもじった言葉遊びに由来します。
Node-REDは無料ですか?商用利用できますか?
無料で、商用利用もできます。ライセンスはApache License 2.0です。社内システムへの組み込みや製品への同梱は可能ですが、再配布ではライセンスの写しの提供に加え、変更の明示、関連する各種表示の保持、NOTICEの帰属表示の扱いなど、第4条の条件に従います。追加ノードはノードごとにライセンスが異なるので個別に確認してください。
プログラミングの知識がなくても使えますか?
決まった形の処理は、ノードをつなぐだけで組めます。ただし条件分岐やデータ整形を細かく書く場面ではfunctionノードにJavaScriptを書くことになるため、JavaScriptの基本とJSONの読み書きができると作れる範囲が大きく広がります。
Node-REDを使うには何が必要ですか?
Node.jsが動くPC・サーバー・Raspberry Piがあれば使えます。最新の5.0系はNode.js 22.9以上と64ビットOSが必要で、条件を満たさない機器では4.1系を使います。Dockerが使える環境ならNode.jsを入れずにコンテナで起動することもできます。
TypeScriptで開発できますか?
functionノードに書くのはJavaScriptです。TypeScriptで書きたい場合は、自作ノードとしてTypeScriptで実装し、JavaScriptにビルドしたものをnpmパッケージとしてNode-REDに入れる形になります。5.0からはESモジュール形式のノードもインストールできるようになりました。