迅速なソリューション開発を可能とするNode-REDとそのOSS活動への取り組み
ハイライト
データを活用した業務効率化を行うIoT技術が注目を集めている。その実現には,関連するシステムやデータを連携させ,迅速にアプリケーションを構築するための仕組みが必要となる。Lumadaのプラットフォームでは,これを実現するためのアプリケーション開発環境としてOSS「Node-RED」を採用している。Node-REDは多様な高機能部品を画面上で組み合わせることで,ソリューションを迅速に作成することを可能とする。
本稿では,Node-REDの概要と,それを用いたソリューションの開発,社外コミュニティと連携したOSS活動について紹介する。
1. はじめに
さまざまな「モノ」がインターネットに接続され,相互に情報を交換することによって新たな価値を創出するIoT(Internet of Things)技術が注目を集めている。IoT技術を用いてシステムや組織の壁を越えてネットワークに接続された機器やサービスを連携させることにより,サービスやビジネスのイノベーションの可能性を拡大させることができる。
このようなIoTサービスの開発では,さまざまな既存システムとの連携やデータの活用,試行錯誤によるアプリケーションの漸進的な改善が求められる。Lumadaのプラットフォームでは,これをサポートするための仕組みとして,GUI(Graphical User Interface)ベースのプログラミングツール「Node-RED※1)」1)を採用している。
本稿では,Node-REDの概要とそれを用いたソリューションの開発,社外コミュニティと連携したオープンソース活動について紹介する。
- ※1)
- Node-REDは,OpenJS Foundationの米国およびその他の国における登録商標または商標である。
2. LumadaのプラットフォームにおけるNode-REDの位置付け
Lumadaは顧客協創により新しいサービスや技術を創出することを目的としている。この協創活動のメンバーはIT分野以外のさまざまな分野の専門家を含む。これらの専門家がアイデアの試行錯誤を行う際には,メンバー全員が理解できる共通言語が必要となる。
一方,従来からITやOT(Operational Technology)の分野では,大規模なシステムの設計・運用に各種のアーキテクチャ図が利用されている。アーキテクチャ図の表記形式はさまざまであるが,本質的には,基本的な機能ブロック間の入出力を組み合わせて複雑で高度な機能を表現しており,対象システムを人間が理解しやすい。
Lumadaでは,この人間に理解しやすいアーキテクチャ図を,そのままコンピュータで実行可能な生きたアーキテクチャ図とすることで,これを協創メンバーの共通言語とする。この目的を実現するために,Lumadaのプラットフォームは,開発環境層であるStudioにNode-REDを導入し,その利用を推奨している。
3. Node-REDの概要
Node-REDは,「ノード」と呼ばれる高機能な部品をビルディングブロックとして画面上で組み合わせるだけでアプリケーションを作成できるプログラム開発環境である。従来のプログラム開発では,プログラミングに精通した専門のプログラマがプログラミング言語を駆使してプログラムを作成する必要があった。Node-REDでは図形を組み合わせることにより,IT分野の専門家でなくても容易にプログラムを作成することが可能となる。
Node-REDは,英国IBM Hursley研究所で開発されたソフトウェアであり,現在はJavaScript※2)技術の普及促進を担う組織であるOpenJS Foundation(Linux Foundationの下部組織)のプロジェクトとして開発が進められているOSS(Open Source Software)である。Node-REDはWebシステムで広く用いられているJavaScript実行環境であるNode.js※3)上で動作し,エッジデバイスからバックエンドサーバまで,さまざまな環境で動作する。Node-REDではノードを部品としてアプリケーションを作成するが,現時点で約2,500個のノードがOSSとして利用可能であり,多様な機能を容易に実現できる。このような背景から,さまざまな国・地域で多くの企業・組織がその製品やサービスにNode-REDを採用し,IoTアプリケーション開発環境としてデファクト環境の一つとなっている。
- ※2)
- JavaScriptは,Oracle Corporationの米国およびその他の国における登録商標または商標である。
- ※3)
- Node.jsは,OpenJS Foundationの米国およびその他の国における登録商標または商標である。
4. コンテナ技術との統合
さまざまな分野をまたがる協創を支えるLumadaのプラットフォームはComposableであることが好ましい。例えば,OT分野では,MATLAB※4)やANSYS※5)といったエンジニアリングソフトウェアが広く利用されており,これらで作成されたアプリケーションをNode-REDの機能ブロックとして利用できることが望まれる。Lumadaのプラットフォームでは,コンテナ技術を導入することで,これを実現する。ユーザーは使い慣れた環境でアプリケーションを開発し,それにマイクロサービスAPI(Application Programming Interface)を付加してコンテナ化する。これにより,異なる開発環境やプログラミング言語で開発したアプリケーションどうしの連携が容易となる。
さらに,LumadaのアプリケーションはPortableであることが望ましい。例えば,パブリッククラウド上で開発した映像認識アプリケーションをコンテナ化し,多数の監視カメラ近傍エッジシステムに配信し,広域監視システムを構築するといった事例において,Node-REDは多数のエッジシステムを接続するハブとして機能する。
このように,さまざまなシステムをNode-REDのGUIを介して連携させることにより,ソリューションを迅速かつ容易に実現可能となる。
- ※4)
- MATLABは,The MathWorks, Inc.の米国およびその他の国における登録商標または商標である。
- ※5)
- ANSYSは,ANSYS, Inc.の米国およびその他の国における登録商標または商標である。
5. Node-REDによるソリューション開発
Node-REDの開発環境を図1に示す。この開発環境はWebブラウザからアクセスして利用する。画面左のパレットと呼ばれる領域に利用可能なノードが配置されている。これを,(1)ドラッグ&ドロップで中央のワークスペースに配置して設定し,(2)ノード間の入出力を接続する。このように複数のノードで構成した処理を「フロー」と呼ぶ。フローを作成後,(3)右上のデプロイボタンをクリックするだけでフローが実行可能となる。
Node-REDでは,Web APIの呼び出し,エッジデバイスとの情報交換に用いられるMQTT(Message Queue Telemetry Transport)プロトコル通信,データベースアクセスを実現するノードなど,さまざまなノードが利用できる。また,ダッシュボード画面を作成するためのノードを用いることで,複雑なGUI画面を簡単に作成することができる(図2参照)。
ここでは,Node-REDを用いたソリューション開発の例として,The MathWorks, Inc.のMATLABとMicrosoft Dynamics※6) 365をNode-REDにより連携させる例2)を示す(図3参照)。
このソリューション例では,工作機械のセンサーデータから得られる振動データをストレージに蓄積するとともに,数値解析ソフトウェアMATLABにより振動データを分析し,ベアリングの摩耗状況を予測する。摩耗状況の予測結果を解析し,近い将来障害が発生する可能性が高い場合,Microsoft Dynamics 365に保守対象インシデントの登録を行う。
この例では,Node-REDにより二つのシステムを連携させることで,データ分析と業務を結び付けた新たなソリューションを実現している。
- ※6)
- Microsoft Dynamicsは,Microsoft Corporationの米国およびその他の国における登録商標または商標である。
6. 社外コミュニティ活動
日立は2017年よりNode-REDのコミュニティ活動に参画している。2020年4月現在でNode-REDプロジェクトへの貢献コード量は全世界で第2位である。このコミュニティ活動では,以下の方針で活動を行っている。
- Lumadaのプラットフォームで必要となる機能の拡充
- 日本語,中国語,韓国語などの多言語対応による国際化
- 不具合の修正などによる信頼性向上
- カンファレンスでの発表,入門書執筆などを通したNode-RED普及活動
このうち(1)の活動では,次に示すような機能をこれまでに日立より提案,もしくは,日立主導で開発した。
- 作成したフローの部品化を行うための機能
- 処理の順序保証を行うための機能
- 処理途中データの外部ストレージへの退避・回復機能
- GUIによるダッシュボードレイアウト機能
- ダッシュボード部品の新規定義機能,および,表,データ可視化などのGUI部品
- Node-RED GUIのテスト機能
これらの機能はLumadaのプラットフォームにおける利便性や開発効率を向上するだけでなく,広く世の中に公開することでユーザー・開発者などエコシステムを拡大しデファクト化を促進する効果がある。そのために,(4)の入門書の出版,コミュニティへの情報提供なども積極的に進めている。
このコミュニティ活動では,Node-REDコミュニティと密に連携しながら活動している。例えば,新規機能提案では,デザインノートの作成,それを基にした詳細仕様の議論,ソースコード管理システムGitHub※7)を使ったコードレビューなどを経てNode-REDに機能を組み込む。その過程では,SNS(Social Networking Service)ツールSlack※8)を活用した定期的なオンライン会議,オンラインビデオ会議などを活用し,密な連携を行っている。また,年二度ほど,直接議論を行うための場を設定し,課題の共有,設計の明確化・詳細化を行っている。
- ※7)
- GitHubは,GitHub, Inc.の登録商標または商標である。
- ※8)
- Slackは,Slack Technologies, Inc.の登録商標または商標である。
7. 事業活用
事業でのNode-RED活用が進み始めており,2018年より複数の顧客システムで利用されている。活用業務としては,工場内の各設備からのデータ収集機能や自社のソリューションを開発する開発環境構築などの業務で活用が進んでいる。実際のシステムでNode-REDを利用するためにはサポートが必要となるが,Node-REDはコミュニティで開発が進むOSSであり,ベンダが提供するサポートサービスがないといった課題がある。そこで,日立ではNode-REDのコミュニティ活動を通して技術者を育成し,この人財を生かして日立のソリューションでのNode-RED活用をサポートしている。
8. おわりに
本稿では,IoTソリューションの迅速な開発を可能とするNode-REDと,そのOSS活動への取り組みについて概説した。今後,Lumada Solution HubなどへのLumadaソリューションの蓄積により,それを迅速に組み合わせ新たな価値を創出するプラットフォームの重要性が拡大するものと想定される。今後も,OSSコミュニティと連携しNode-REDの機能強化,利用容易化,デファクト化をさらに進めるとともに,Lumadaのプラットフォームでの適用,ソリューション拡大に向けたノウハウ蓄積を進めていく。
謝辞
本稿で述べたNode-REDのコミュニティ活動においては,IBM社O’Leary氏,および,Conway-Jones氏に日頃より多大なご支援を頂いている。深く感謝の意を表する次第である。