WirelessWire News Technology to implement the future

by Category

簡単に奥深いプログラムを作れる「Node-RED」※1)のOSS活動で日立が得たもの【前編】

IoT(Internet of Things)時代になると、多くのモノをつないでこれまで以上に多様なプログラムを実行する必要性が高まる。誰もが簡単に、要求される機能を備えたプログラムを作成できる環境が求められるようになってくる。オープンソースソフトウエア(OSS)の「Node-RED」は、機能を記述した「Node」を画面上でつないだ「Flow」を作るだけでコーディングなしでプログラムが作れるツールだ。日立製作所はNode-REDのOSS活動に積極的に貢献するだけでなく、同社の「Lumada」※2)での活用も表明した。日立製作所研究開発グループデジタルテクノロジイノベーションセンタの西山博泰主管研究員と、研究開発グループの横井一仁研究員に、OSS活動を通して得た協創の価値を紐解いてもらった。

※1)Node-RED: IBMが開発し、2016年10月にJS Foundation(オープンソースに関するさまざまな活動を支援するための非営利団体Linux Foundationのプロジェクト)に寄贈されたコーディングレスプログラミングツール。
Node-RED公開サイト https://nodered.org/

※2)Lumada: Lumadaは顧客が所有するデータから様々な価値を創出し、デジタルイノベーションを加速するための、日立のデジタルソリューション/サービス/テクノロジーの総称。

※本記事は日立製作所の研究開発グループが運営する「開発ストーリー」の抄録です。全文はリンク先をご参照ください。

ホヤの生物情報の分析から情報系の研究所へ

西山:大学時代からコンパイラの研究をしてきて、入社後もスーパーコンピューター向けのコンパイラの研究を行っていた。コンパイラは、人間が書いたプログラムをコンピューターが実行できるようにするためのツールで、人間とコンピューターの間を取り持ち、効率良く計算を実行できるようにするものだ。その後、日立製作所のスーパーコンピューター事業が難しい側面に向かい、クラウドサービスプラットフォームのCosminexus(コズミネクサス)の実行プログラムの研究などに取り組んだ。実行系の研究という意味では、Node-REDへの取り組みも同じ流れにある。

横井:大学時代は、生物と情報の融合した分野である「バイオインフォマティクス」の研究を行っていた。一般にバイオインフォマティクスの研究者は情報系の人が多く、生物系の研究者からデータをもらってコンピューターで解析する。しかし私は生物を育ててデータを取り、情報を解析する両方の側面を手がけていた。扱っていたのは脊椎動物に近い「ホヤ」という動物だった。就職活動では、システムインテグレーターや情報系で研究所がある企業を複数応募した。その中で日立だけが、バイオインフォマティクスの研究のマニアックな話を面接でしっかり聞いてくれた。これが決め手となって日立に就職した。入社後はストレージ関連の部署に配属され、企業向け検索システムの性能向上のための研究を行ってきた。

Node-REDとの出会いは偶然

横井:2015年頃、日立の社内でクラウドアプリケーションの開発コンテストへのエントリーを募集する案内があった。当時、コグニティブコンピューティング(cognitive-computing)のAPI(Application Programming Interface)がクラウドで使えるようになり始めた時期でもあり、面白そうだなと考えてエントリーすることにした。これがNode-REDと出会うきっかけになった。ただ、クラウドサービスを知らないことには、コンテストに参加するにしてもプログラムを作れない。そこで、日本のコミュニティが開催している勉強会に参加して、クラウドアプリケーションの開発方法について学んだ。その時に学習した内容のおよそ半分が、プログラムツールとしてのNode-REDだった。勉強していくうちに、これは面白いかも、と感じるようになり、日立の内部で積極的に宣伝するようになった。

西山:私は研究所と事業部が共同で実施しているプロジェクトに2017年1月に参加することになったのがNode-REDとの出会いだった。通常、プロジェクトは1月から3カ月間の助走期間を経て4月から正式にスタートするのだが、私自身は1月から参加することになった。日立Node-REDエバンジェリストの代表である岩嵜正明(研究開発グループ 技師長 兼OSSテクノロジーラボラトリ長)から、Node-REDを使った新しいプラットフォームを作るために、情報系のコンパイラの専門家として参加してほしいと声をかけられたためだ。

Node-REDはIBMの英国の研究所のメンバーを中心に開発されていたが、オープンソース化されて自由に利用や開発ができるようになっていた。日立でもOSSの活動への取り組みはLinuxなどで行ってはきていたものの、どちらかというとプロダクトはすべて日立の中で作るという文化が強かった。そうしたなかでOSSの世界で顔が利く人との出会いがあり、Node-REDのOSS活動に参加するようになった。日立の研究所としてOSSの活動をしっかりと行っているのは比較的珍しいはずだ。企業の文化が徐々に変わって来ていることを実感している。

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

横井:Node-REDの最大の特徴は、コーディングしなくても高度なプログラムが作れることに尽きる。Node-REDには、「Node」と呼ぶプログラムの部品と、それらを線でつないだ「Flow」と呼ぶコンピューターへの指示書がある。実行したい機能を備えたNodeを線でつないでいくだけで、プログラムが完成する。特に、さまざまなWebサービスなどを呼び出して利用するAPIをプログラムで呼び出す場合、一般のプログラム言語では高度な知識が必要になるケースが多い。しかしNode-REDならばAPIで利用したい機能を記述したNodeがあれば、それをFlowにつなぐだけで機能が実行できる。とても開発効率が高い。

簡単にプログラムが作れることは、例えばIoTのサービスを企画してPoC(概念実証)をしたいようなケースで大いに役に立つ。機能を検証するためのプログラムが、プログラミングの専門家でなくてもとても早く作れるようになるため、スムーズにPoCを実施できる。これは大きなメリットだと考えている。

一方で、そうした簡単なプログラム作成ができるNode-REDは、いわゆる素人向けのツールだと誤解されやすい。自分自身、あまりにもプログラムが簡単に作れてしまうことで、コーディングの能力が上がらなくなるかもしれない不安と危機感を覚えて、「しばらくNode-REDを使わない」と宣言したこともあった。しかしNode-REDは、プログラムを簡単に作れるとは言っても、素人向けのホビーツールではなく、実務で利用できるツールとしての機能を十分に備えている。プログラミング能力が高い人たちや企業の専門家にもファンが多いことからも、その実力のほどがわかる。特に多様なシステムのAPIを呼び出すクライアントとして使えることは、実務面でその威力を発揮してくれる。

西山:コンパイラを研究してきて多くのプログラミング言語を見てきた立場からすると、画面上にNodeを貼りつけていくプログラム作成のスタイルはかなり毛色が異なっていた。ところが、実際にプログラムを自分で作ってみると、なかなか面白い。Nodeの配置やFlowのつなぎかたには個人的な工夫の余地がきちんと残されている。Nodeには多くの機能が用意されていて、その組み合わせ方でできることが大きく拡張できる。さらに新しい機能を追加したら面白いとなったときに、OSSのNode-REDならば提案して採り入れてもらうことも可能だ。

コンパイラの研究がメインだった時代は「実行速度を10%早くする」というようなわかりやすい成果を追い求めることに主眼が置かれていたが、Node-REDでは、プログラム言語の設計から制度のデザインのような範囲まで手を広げることができる。結果としてプログラム作成の上流から下流まで携わることになるので、研究活動自体が非常に楽しいものになる。

西山博泰(Nishiyama Hiroyasu)西山博泰(Nishiyama Hiroyasu)
日立製作所研究開発グループ
デジタルテクノロジーイノベーションセンタ主管研究員
博士(工学)

ハッカーのたのしみ―本物のプログラマはいかにして問題を解くかIBMでコンパイラなどを作っていたウォーレン氏の著書「ハッカーのたのしみ―本物のプログラマはいかにして問題を解くか」(ジュニア、ヘンリー・S. ウォーレン著)に影響を受けた。こういうプログラムを作りたいとき、こういうトリックを使うと簡単にできるといったコツがたくさん紹介されている。私自身もコンパイラの研究開発をしていたので、テクニックを使ってマジックのように解法を示すこの本が好きで、そして面白い。こういうマジックのようなことを、Node-REDの活動でもやっていきたい。こんな簡単なプログラミングのシステムを作ったのだけれど、実は裏ですごいことをやっているんだ!といった驚きを与えられたらうれしい。

横井一仁横井一仁
日立製作所研究開発グループ
研究員

「Java言語で学ぶデザインパターン入門」(結城浩 著)Javaのオブジェクト指向プログラミングのデザインパターンが網羅された書籍「Java言語で学ぶデザインパターン入門」(結城浩 著)は、学生時代に読みたいと思っていたが、生物の実験などがあり実現できなかった。社会人になってこの本で研修してくれた方がいて、ようやく読むことができるようになった。自分で発見したプログラミングや、他人から教えてもらったプログラミングの手法を、この本で確認する。半分ぐらいは合致していて、方法に間違いはなかったなとホッとしたりする。こんな使い方でプログラミングできるのかといった学びにもつながっている。

RELATED TAG