メニューボタン
IBMi海外記事2020.09.24

Node-REDでIoTとIBM i をつなぐ

Alex Woodie 著

IoT(モノのインターネット)は、デジタルな世界についての新たな考え方をもたらします。製造ラインのセンサーから、地球の裏側から届くTwitterメッセージまで、IoTはすべてを1つにつなげます。そして、IBM iで利用可能なローコード フレームワークであるNode-REDを使用すると、これらのデータ フローを有用なアプリケーションへ驚くほど簡単につなぐことができます。

IBMによって開発されたNode-REDは、イベント駆動型データ アプリケーション、または「フロー」を開発するためのNode.JSベースのフレームワークです。フローは、ソースからデスティネーションへ、データ ペイロードをJavaScript Object Notation(JSON)データ標準の形式で届けます。Node-REDのフローは、様々なプレビルトされたデータ入力および出力(「ノード」)を使用して、Webブラウザでドラッグ&ドロップで組み立てられます。さらに数回クリックすることで、Node.JSランタイムにアプリがデプロイされます(IBM i上も含めて)。

多種多様なプレビルトされたオープンソースのノードを利用できることが、Node-REDでのIoTアプリケーションの開発を非常に迅速に行えるようにしている一因となっています。利用可能な2,200のノードの中には、 Siemens 社のプログラマブル ロジック コントローラー(PLC)または Slack APIなど、特定のハードウェア デバイス向けのノードもあります。Db2 for i用のノードは、2017年から利用可能になり、Node-RED開発者がIBM iプラットフォームにおけるSQLの豊富な資源を活用することを可能にしました。

Node-REDで開発することのできるアプリケーションには、非常に幅広いものがあります。たとえば、 Twitter ノードからの入力をつなぎ合わせ、それを IBM Watson センチメント分析アルゴリズムにつなぐことにより、不満を抱えた顧客がソーシャル メディア上で文句を言っていることを自動生成したメールで営業チームに知らせる、といったことも可能です。他にも、Node-REDを使用して、ヘルプ デスク環境でパスワード リセット作業を支援したり、発電状況についてのリアルタイム情報をダッシュボードに表示したり、IBM iサーバーのDASDキャパシティーが90%に到達したらシステム管理者に警告したり、運送会社のCEOに自社のトラックがどこを走っているかを知らせたり、通りに集まる暴徒の映像を警察管区の分署長にストリーム配信したりすることもできます。

IBM iにおけるNode-REDの一番の熱狂的支持者と言えば、Jesse Gorzinski氏でしょう(言わずもがなですが)。IBMのオープンソース担当ビジネス アーキテクトである同氏は、先日、 COMMONのiNSIGHTバーチャル イベントに向けて、Node-REDに関するプレゼンテーションの収録を行いました。その中で彼は、このフレームワークについて詳しく掘り下げ、どのように動作するのかについて説明し、実際のNode-REDデプロイメントの例を紹介し、他のユーザーが試してみることができそうな可能性を探っています。

「今日、数多くのソフトウェア開発が行われていますが、それらについて考えてみると、そこで行っていることというのは、実際には、構成要素をつなぐこと、モノをつなぐことなのです」とGorzinksi氏は述べます。「たとえば、Slackメッセージとセンサー デバイスをつなぎたいのかもしれませんし、APIでデータベースに接続したいのかもしれません。あるいは、ソーシャル メディアの投稿をWebフォームでユーザー アクションにつなぎたいのかもしれません。」

Node-RED
Node-REDは、IoT経由でJSONデータ フローを届ける軽量Node.jsアプリケーションの作成に、ドラッグ&ドロップ開発環境を提供します。

このようなタイプのアプリケーションを構築するのはそれほど難しくはありません。特に、Node.JSではそうでしょう。Node.JSは、選び放題の数多くのオープンソース サンプルがある、ますます豊かになり続ける開発者エコシステムであるからです。Gorzinksi氏によれば、NPM(Node.js Package Manager。Node.JSコードおよびアプリケーションのパブリッシュおよびインストールに使用)で利用可能なNode.JSモジュールは、100万件を超えているということです。

「しかし、分かったのは、今もなお、多くの人々が付加価値のない業務に時間を費やしているということです」と彼は続けます。「Node-REDを使用すれば、様々なモノ同士を会話させるうえで、その背後にある状態や実装方法についてさほど心配することなく、こうしたものを実に簡単に開発することができます。」

Node-REDの最大のメリットは、IoTアプリケーションを開発するためのシンプルなローコード(low-code)アプローチをもたらすことだとGorzinski氏は述べます。しかし、注意が必要なのは、Node-REDは「ノーコード(no-code)」環境ではないということです。ユーザーは、JavaScriptスキルを発揮してNode-REDデータ フロー用にカスタム ビジネス ロジックを作成することが求められます。

「これからも、まだまだJavaScriptコードを書くことになります」と彼は述べます。「しかし、空のJavaScriptファイルを開いてコーディングし始めるのに比べれば、コーディングははるかに少なく済みます。」

Node-REDの開発プロセスのほとんどでは、様々なノードをパレットにドラッグ&ドロップする操作が必要で、これがデータ フローを定義します。開発者には、幅広いノード タイプの選択肢があります。そうした一般的なタイプは、入力および出力ノードであり、それらはデータ フローの始点と終点(あるいは複数の終点)を定義します。また、その他にも、他の命令用のファンクション ノードが多数あります。

Node-RED
Db2 for iは、Node-RED開発環境では「ノード」としてサポートされ、デプロイされたNode-REDアプリケーションではランタイムとしてサポートされます。

SiemensやHitachiといった企業が提供しているカスタム ノードや、様々なアプリケーションからデータを捕捉するノードなど、開発者が使用することができるプレビルトされたノードが、 www.npmjs.com サイトから数多く利用可能です。たとえば、 Raspberry Pi デバイスからデータを取り出すためのノード、ダッシュボードにスピードメーターやその他のグラフィカルな要素を生成するためのノード、 Amazon Alexa用のノード、さらには、RFIDチップからデータを読み取るためノードなどもあります。

ノードおよびフローの構成の際に開発者が何か間違いをした場合、Node-RED開発環境は、赤色の三角形を点滅させて何かがおかしいことを知らせてくれます。開発者は、ノードの上にマウスを合わせることで、そのノードについての説明を表示することができます。デプロイメントはボタンをクリックすることで処理され、パレットの変更された部分のみをデプロイする、または全体をデプロイするためのオプションがあります(1つのパレットに複数のフローが含まれることがあります)。すべてのデータが大きなJSONドキュメントとして保存されるため、これらのフローをエクスポートすることは、テキストをJSONファイルへコピー&ペーストするのと同じくらい簡単です。

Gorzinski氏が紹介した、よりクールなNode-REDの使用事例の1つは、AIチャットボットを構成してパスワード リセットを支援するというものでした。このアプリケーションは、IBM Franceチームがたった2時間で作成したものですが、Watsonの自然言語処理(NLP)機能を利用して、Slackチャンネルの中で表されたユーザーの関心事を判別します。「このアプリケーションは、よくある多くの問題を改善および解決することができます。人間のヘルプデスク担当者を応対業務から解放して、より生産的な業務に当たることができようにします」と彼は述べます。

Node-REDは、IBM iではあまり広く使用されていないかもしれませんが、勢いを増しつつあるようです。Gorzinski氏によれば、Db2 for IBM iノードは、2017年に利用可能になって以降、NPMから7,000回以上ダウンロードされているとのことです。また、アプリケーションでそれらのノードを使用し始めているベンダーも複数あるそうです。

オープンソースは、IBM iの生産性に恩恵をもたらしてきました。IBM i開発者に対しては、他のプラットフォームの開発者が享受している豊富な創造性や可能性を提供してきました。Node-REDにより、IBM i開発者は、自分が作ったものをつないで広大なIoTエコシステムに加わることによって、それらを新たな高みに引き上げることができます。Gorzinski氏によれば、そうすることにより、使用してみる価値のあるものになるということです。

「初めてNode-REDおよびこのコンセプトを知ったとき、これは実に簡単そうだと思いました」と彼は述べます。「私には、あまり強力なようには思えないのですが、JSONを操作してそれをフローに渡すことで、実際、どれくらい多くのことを行うことができるのでしょうか。」

「しかし、その問いに対しては、実際、かなり多くのことを行える、と答えることができます。すべての作業が実際にそうしたノード内で行われるからです」と彼は続けます。「また、Node-REDを使用することで、Node.jsプログラマーは、コードをつなぐことではなく、あらゆることを実現するソリューションに注力できるようになるのです。」

あわせて読みたい記事

PAGE TOP