Node-REDがつなぐ技術と人 〜Node-RED Con Tokyo 2019レポート

2019年7月18日(木)に、日立製作所中央研究所にて「Node-RED Con Tokyo 2019」が開催されました。Node-REDに関する国内初のカンファレンスとして行われたこのイベントの模様をレポートします。

そもそもNode-REDってなに?

はじめにNode-REDについて簡単に紹介します。ここでは、カンファレンスの冒頭に行われた基調講演から、Node-RED User Group Japanのオーガナイザーである萩野たいじさん(IBM)の発表パートを引用しながら説明します。

Node-REDは、1970年代初期に発明されたFlow based programingという考え方を具現化したツールで、2013年にIBMのNick O'Learyさん、Dave CJさんをはじめとするチームによるOSSとして開発が始まりました。ブラウザベースのUIを持ち、各機能がカプセル化されたノード(Node)をつなぐことでさまざまな処理を実現できます。ソフトウェアとしてはNode.js上のアプリケーションとして実装されているので、Node.jsが動作する環境であればどこでも動かすことができるほか、IBM Cloudなどのクラウドサービスにも標準で用意されています。ちなみにさくらインターネットのサービスでは、さくらのクラウドさくらのVPSでスタートアップスクリプトを使ってNode-REDサーバを作るか、ArukasというDockerホスティングサービスでNode-REDのDockerイメージを動かすと簡単に利用できます。



Node-RED創立者のお2人からは開催を祝うビデオレターが届きました!

また、前述の「各機能がカプセル化されたノード」は、ハードウェアから取得した情報もノードにすることができます。このことから、Node-REDを使って簡単にIoTアプリを作成することがさかんに行われています。開発の成果であるノードやフローなどはNode-RED Libraryにて公開されています。特に、取得した数値をグラフィカルに表示できるDashboardや、地図に情報を表示するWorldMapなどのノードはとても有用でよく使われています。

Dashboardを使って作成された画面の数々(萩野さんの発表資料より)

日本のユーザコミュニティ形成と開発への貢献

日本国内でもNode-REDのユーザが増えるにつれ、2015年あたりから勉強会やハンズオンが開催されるようになり、ユーザコミュニティが形成されていきました。それがNode-RED User Group Japan(Node-RED UG)です。基調講演の発表者の1人である田中正吾さん(1ft Seabass)も運営メンバーの1人で、「Node-RED UGは、Node-REDに関するあらゆるリソースが集まる場所にしたい!」という想いで活動されています。

また、同じく基調講演において、横井一仁さん(日立製作所)はNode-REDの開発への貢献について発表しました。横井さんが所属する日立製作所では、既存サービスのREST API化の促進や、クラウドネイティブアプリケーションが稼働する基盤構築などを目的として、企業としてNode-REDの開発に参加することにし、横井さんはその一員として活動しています。

これまでに貢献した主な機能は、フローエディタの日本語/中国語/韓国語対応や、ダッシュボード向けのテーブル表示ノードなどで、今ではGitHub上の貢献ランキングでも首位のIBMに次ぐ実績を残しています。横井さんはOSSの開発に参加するメリットとして、バグの迅速な修正や独自機能のメンテナンス工数削減などもあるが、一番重要なのはコミュニティメンバーが互いに教え合うことで技術力を向上できることだとコメントしました。そして、日本語対応やテストケースの作成など取り組みやすい貢献の例を挙げ、開発への参加を促しました。


OpenBlocksでNode-REDを使うとこんなことが!

基調講演の後は、2トラックに分かれてNode-REDのさまざまな利用事例の発表が行われました。その中からまず、民田雅人さん(ぷらっとホーム)による発表「IoT GatewayとNode-REDの美味しい関係 - OpenBlocks IoTへのNode-REDの実装 -」をご紹介します。

OpenBlocksはぷらっとホームが開発しているマイクロサーバで、2000年から販売が続く息の長い製品です。近年はその小型・堅牢な特性を生かし、IoTゲートウェイとしての製品群「OpenBlocks IoT Family」(OBSIoT)も提供しています。各種ネットワークインターフェースによる接続、センサーとの接続、IoTサービスとのデータ連携などをすべてWebブラウザで設定できるのが特徴です。

OBSIoTがサポートしているセンサー類(民田さんの発表資料より)

OBSIoTは標準で数多くのセンサーをサポートしており、Webブラウザの設定だけでJSON形式のデータをクラウドサービスに送ることができます。しかし標準では対応していないセンサーを使いたいときがNode-REDの出番です。OBSIoTは初期状態ではNode-REDが入っていませんが、管理画面にてインストールすると使えるようになります。さらに、Node-REDを使うとデータを自由に加工できるという利点もあります。例えば、複合センサーから特定の種類のデータだけを選んで送るとか、データの間引き・増幅などです。

Node-REDでメッセージのデータ量を減らす

民田さんからは、IoT GatewayとNode-REDを使うとIoT関連のデモを簡単に作れることや、特にNode-REDのDashboardがとても便利という話があり、そのことを「Node-REDはIoT時代の電子ブロック」という言葉で表現していました。

この他にもOBSIoTにおけるファームウェアの実装(マイクロサービス化されていることなど)やNode-REDの実装(UNIXドメインソケットで通信していることなど)などの話もありました。詳しくは民田さんの発表資料をご覧ください。


Node-REDを使ったsakura.ioハンズオンを100回やった話

続いてご紹介するのは、西田有騎(さくらインターネット)による発表「Node-REDを使ったハンズオンを100回やってわかったこと」です。

さくらインターネットでは、当社で開発・提供しているIoTプラットフォームサービス「sakura.io」を体験してもらうためのハンズオンイベントを定期的に開催しています。ハンズオンの内容については、さくナレの記事「IoTの世界に触れてみよう!『sakura.io体験ハンズオン』へのお誘い」をご覧ください。

このハンズオンの教材を作成したのが西田です。sakura.ioの良さを感じてもらうにはデバイスを利用したアプリケーションを作って動かすことを体験してもらうのがよいと考えていたのですが、西田自身はプログラマーではないためアプリの開発に苦慮していました。そこへ「Node-REDを使えば楽ですよ」という助言があり、試してみたところ本当に簡単にアプリを作ることができて感動したとのことです。実際の教材では、

  • sakura.ioから温度データを取得し、Node-REDのダッシュボードで表示
  • Node-REDのダッシュボードに表示したパネルをクリックするとsakura.ioにデータが送信され、LEDの点灯/消灯を操作

といった場面でNode-REDを活用しています。ハンズオンは全国各地で本当に100回近く開催し、1回あたり平均10人以上は参加しているので、通算で1000人以上の方がsakura.ioを、そしてNode-REDを体験した計算になります。

sakura.ioハンズオンの開催地マップ。Node-REDのWorldMapを使って表示。

西田からは、今後はさくらの他のサービスと連携できることもNode-REDで表現したいという野望とともに、「Node-REDは単なるビジュアルプログラミングツールではなく、スキルや業界が異なる人同士をつなぎ、対話を生むツールである」という言葉がありました。

sakura.ioから入手したセンサーデータを、当社で開発中の衛星データプラットフォーム「Tellus」に渡すNode-REDのフロー(試作品)

Node-REDで作るスマートシティ

最後にご紹介する発表は、米澤拓郎さん(名古屋大学)による「Node-RED meets Edge Computing for Smart Cities」です。

都市に関する過去および現在の実世界情報を集めて分析し、将来の街づくりにフィードバックするのが「スマートシティ」で、米澤さんは2013年ごろからこれをテーマに研究活動を行っています。その中で、主に都市データを処理してアプリに渡す部分にNode-REDを活用しています。

スマートシティの工程は、大別するとデータの収集と処理に二分されます。このうち都市データの収集に関しては、街に関する情報はウェブ空間に結構あるのですが、たいていAPIが存在しないので機械的に収集することが困難です。そこで、そういった情報をセンサー化する「WEB Sensorizer」というツールを開発し、ウェブ情報のIoT化を行っています。また、ウェブに載っていないデータを収集する方法として、ゴミ収集車にOpenBlocksとセンサーをつけて巡回させ(ゴミ収集車は1週間で98%以上の道路を巡回するそうです)、排気ガスやPM2.5などのデータを集めるといった取り組みもしています。

WEB Sensorizerを使って大気汚染情報をセンサー化しているところ

一方、集めたデータの処理にはNode-REDを使っていますが、特に分散処理方式のDistributed Node-REDを活用しています。こうすることで1つのフローを手分けして協力しながら処理することが可能になり、処理の高速化やプライバシーの保護などを実現しています。このような機能のオーケストレーションを行うのにNode-REDは非常に有用であることを強く実感しているとのことです。

おわりに

Node-RED Con Tokyoではこの他にも、開発環境の構築、ビジネスへの適用、オフィスIoTへの適用、ゲームコントローラの制御など盛りだくさんな発表がありました。connpassのイベントページには、大半の発表資料に加え、発表の動画も掲載されています。イベントについてさらに詳しく知りたくなった方はぜひご参照ください。

また、Node-REDおよびNode-RED UGに関する情報源を以下にまとめてお伝えします。Node-REDやコミュニティについて詳しく知りたい方はこれらをのぞいてみるとよいでしょう。

Facebook https://www.facebook.com/groups/noderedjp/
Twitterハッシュタグ #noderedjp
Slack https://nodered-slack.herokuapp.com/
ウェブサイト https://nodered.jp/
Qiita node-redタグ https://qiita.com/tags/node-red

Node-REDはIoT関連での利用例が多いようですが、ツールとしては必ずしもIoTに限定されたものではなく、一般的なデータ処理ツールとして使えるものです。非プログラマーでもフローを記述することでデータを処理できますので、こうした特長を生かして、より多く、そしてより幅広い分野の方に使ってもらいたいと思いました。この記事がNode-REDコミュニティの発展に少しでも役立てばうれしいです。

それではまた、次回のイベントでお会いしましょう!