0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Node-REDって何?

0
Last updated at Posted at 2026-09-30

MQTTの記事 を読んでいて、「そういえば昔、Node-REDを使ってIoTセンサーを管理していたな」と思い出しました。
当時は仕事で毎日のように触っていましたが、最近はすっかり名前を聞かなくなった気がします。
「今でも開発は続いているのだろうか?」
そんな疑問から、久しぶりにNode-REDを触ってみることにしました。

Node-REDとは

Node-RED(ノード・レッド)は、ブラウザ上でアイコン(ノード)を線でつなぐだけで、IoTデバイスやAPI、Webサービスを簡単に連携できるビジュアルプログラミングツールです。
プログラムの記述を最小限に抑え、直感的に自動化の仕組みを構築できます。

特徴

  • ローコード/ノーコード開発:プログラミング経験が少なくても利用可能
  • 拡張性:コミュニティ製ノードを追加可能
  • 共有性:フローはJSON形式でエクスポート/インポート可能
  • IoT適性:MQTTやHTTPなどのプロトコルを簡単に扱える

何ができるの?(活用例)

  • IoT・スマートホーム:部屋の温度が上がったら自動でエアコンや扇風機をONにする。
  • 業務の自動化:特定のメールが届いたら添付ファイルをクラウドに保存し、チャットツールに通知を送る。
  • データの可視化:取得したセンサーデータをリアルタイムでダッシュボード(グラフなど)に表示する。

筆者がNode-REDを利用していたのは、IoTセンサーを利用した設備監視システムの開発に携わっていた頃です。
MQTTを利用してセンサー情報を収集し、Node-REDでデータの受信や状態管理を行っていました。

利用例

  • ドアの開閉センサー:商業施設のトイレ個室に設置されたセンサーから開閉情報を取得し、利用者向けに空き状況を表示する。

  • 圧力センサー:オフィスのフリーアドレス席に設置し、座席の利用状況をリアルタイムで可視化する。

  • フィルターセンサー:油の汚れを取るフィルターを監視して、交換時期が来たら通知する。

こんな感じでした。

なぜNode-REDを選んだのか

当時はクラウドIoT基盤が今ほど充実しておらず、

  • MQTTとの接続が簡単
  • フローを見れば処理内容が分かる
  • 試作が速い
    という大きなメリットがありました。

今見るとどうだったか

良かった点

  • 開発速度が速い
  • 非エンジニアにも説明しやすい
  • IoTとの相性が良い

困った点

  • フローが巨大化すると管理が大変
  • Gitで差分管理しづらい
  • 複雑なロジックはコードの方が楽

2026年に改めて調べたら、まだ開発が続いており驚かされました。

Dockerで起動してみる

Dockerがあれば、以下のコマンドだけでNode-REDを起動できます。

docker run -it -p 1880:1880 nodered/node-red

起動後はブラウザで http://localhost:1880 にアクセスすると、Node-REDのエディタが表示されます。久しぶりに画面を開いてみると、懐かしいフローエディタがそのままで、「ああ、これこれ」と思わず当時を思い出しました。

適当な inject と function 、debug を作成してみました。

inject ノードの左側にあるボタンを押すと、function ノードが実行され、debug ノードにメッセージが表示されます。

image-5-1536x801.png

Node-REDはHTTP APIを数分で作成できます。

http inノードがリクエストを受け取り、functionノードでレスポンスを生成し、http responseノードでブラウザへ返却します。

http in を作成し、function、http responseを置いて配線してあげます。

function には以下のコードを記載します。

function randomStatus() {
    return Math.random() > 0.5 ? "空席" : "使用中";
}

msg.payload = {
    facility: "○○デパート",
    floor: "3F",
    updated: new Date().toLocaleString(),
    toilets: [
        { booth: "1", status: randomStatus() },
        { booth: "2", status: randomStatus() },
        { booth: "3", status: randomStatus() },
        { booth: "4", status: randomStatus() }
    ]
};

return msg;

http in の URLに /toilet を設定します。

そうすることにより、ブラウザから http://localhost:1880/toilet にアクセスすれば……

{
  "facility":"○○デパート",
  "floor":"3F","updated":"7/15/2026, 9:11:48 PM",
  "toilets":[
    {"booth":"1","status":"使用中"},
    {"booth":"2","status":"空席"},
    {"booth":"3","status":"使用中"},
   {"booth":"4","status":"空席"}
  ]
}

といったJSONを返すようになります。

function は random に返すようになっているので、アクセスするたびに内容が変わるようになっています。

image-6-1536x798.png

久しぶりにNode-REDを触ってみましたが、昔と変わらない使いやすさに少し感動しました。

当時はIoT開発の現場で活躍していましたが、現在でもDockerで手軽に始められ、Home AssistantやAlexaとの連携など新しい活用方法も増えています。

「もう使われていないのでは?」と思っていましたが、Dockerで簡単に起動でき、UIも大きく変わっていませんでした。

数分でHTTP APIを作成できる手軽さは今でも健在で、改めてNode-REDの魅力を実感しました。

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?