8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

日立グループ OSSAdvent Calendar 2018

Day 19

Node-REDを使ってみよう!~プログラミング授業からIoTシステム開発まで~

Last updated at Posted at 2018-12-18

株式会社 日立製作所 泉 勝

はじめに

IDCなどのメディアや経済産業省の発表では、将来的なIT人材の不足が予想されており、誰もが開発者となれるようなローコード/ノーコードツールに注目が集まっています。
本稿では、ブラウザ上で図形を操作してプログラムを作成するNode-REDを紹介します。Node-REDはコーディングしなくてもプログラムを作成できるため、高校生を対象とした「プログラミング授業」などでも活用されています。

コーディングしなくてもプログラムが作れる

次がNode-REDのエディタの実際の画面です。目的に合わせてノードを組み合わせることでコーディングなしに高機能なプログラムを作ることができます。

図1.png

  1. 画面左の「パレット」に、利用できる「ノード」が格納されています。ノードは、「Webサイトから情報を取ってくる」「メールを送信する」といった**”特定の機能”**を備えます。

  2. 選択したノードを画面中央の「ワークスペース」にドラッグ&ドロップで配置します。

  3. 連携させたい機能のノードと「ワイヤー」で繋げます。このノードを線で繋げた処理の流れを「フロー」と呼び、フローを作成するだけでプログラムが作成できます。

  4. デプロイボタンをクリックすると、すぐにフローのプログラムを実行します。

Node-REDの特徴 -「迅速」「標準」「オープン」

Node-REDの特徴は、迅速、標準、オープンの3つのキーワードで表すことができます。

迅速な開発を実現するフローベースのプログラミング

ノードをワイヤーで結ぶプログラム表現は直感的であり、現場の技術者やスタッフなどプログラミングに精通していないユーザーでもIoTアプリケーションの作成や改変を迅速に行うことができます。フローベースプログラミングには、Node-REDの他にもApache NiFiNoFloなどがあります。

IoT向けの標準技術を提供

Node-REDは、REST APIやMQTTプロトコル、WebSocketプロトコルなど、IoTに必要とされる標準的な技術をサポートしています。
Node.jsが動く環境であれば利用できるため、Raspberry PiなどのエッジデバイスにNode-REDを搭載することができます。またクラウド環境では、IBM Cloudや筆者が関わるLumadaでNode-REDをサポートしています。これらエッジデバイスとクラウド環境で同じ手法でアプリケーションを開発することができます。

オープンソースコミュニティ

Node-REDは、Linux Foundation (JS Foundation)に属するOSSです。Node-REDコミュニティでは2018年12月10日時点で1774個のノードが公開されています。センサー入力、通信、画像解析、SNS連携、データ分析、可視化など多種多様なノードを自由に活用できます。

Node-REDによるIoTシステムの実現

IoTシステムでは一般に、1) データ取得と一時加工、2) データ集約、3) フィードバック、4) 可視化、5) データ蓄積、6) システム間連携、7) サービス連携の7つの機能が必要とされます。Node-REDはこれらをサポートする機能を備えており、IoTシステムの開発を容易に進めることができます。

図2.png

(1) センサーデータ取得と一次加工処理
Raspberry PiなどのエッジデバイスにGPIO(General-Purpose Input/Output)やシリアルポートを介して接続された様々なセンサーから、データを取得するノードやデータを加工するノードがNode-REDには標準で用意されており、簡単にデータを取得できます。
(2) エッジからクラウドへのデータ集約
Node-REDには「MQTT」や「WebSocket」といった標準的な通信プロトコルに対応したノードが用意されており、エッジデバイスで収集したデータを転送できます。
(3) エッジデバイスへのフィードバック
MQTTやWebSocketを用いて、エッジデバイスを制御することもできます。
(4) ダッシュボードによるデータの可視化
チャート、ボタンなど標準的な部品を備えたダッシュボード機能を用いることで、データレイクに蓄積したデータを容易に可視化できます。
(5) データレイクへのデータ蓄積
主要なデータベースやオブジェクトストレージなどとの連携ノードが提供されており、エッジから転送されたデータを簡単に蓄積/参照できます。
(6) 既存システムとの連携
RESTでアクセスするためのノードが提供されており、REST APIを用いて企業内の既存システムとの連携を実現することができます。
(7) 外部サービス連携
外部のサービスと連携するためのノードも提供されています。例えばRSSノードを用いてニュースデータの更新を契機に処理を開始したり、e-mailノードを用いてセンサデータの異常をメール通知することができます。

#おわりに
本稿ではNode-REDが備える機能やその活用方法について紹介しました。着実に進化を続けるNode-REDを是非お試しください。

8
6
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
8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?