西山 博泰(デジタルテクノロジーイノベーションセンタ データサイエンス研究部 主管研究員)
横井 一仁(デジタルテクノロジーイノベーションセンタ クラウド研究部 研究員)
IoT(Internet of Things)時代になると、多くのモノをつないでこれまで以上に多様なプログラムを実行する必要性が高まる。誰もが簡単に、要求される機能を備えたプログラムを作成できる環境が求められるようになってくる。オープンソースソフトウエア(OSS)の「Node-RED」は、機能を記述した「Node」を画面上でつないだ「Flow」を作るだけでコーディングなしでプログラムが作れるツールだ。日立製作所はNode-REDのOSS活動に積極的に貢献するだけでなく、「Lumada」での活用も表明した。日立製作所 研究開発グループ デジタルテクノロジーイノベーションセンタの西山博泰主管研究員と横井一仁研究員に、OSS活動を通して得た協創の価値を紐解いてもらった。
(2018年10月4日 公開)
西山大学時代からコンパイラの研究をしてきて、入社後もスーパーコンピューター向けのコンパイラの研究を行っていた。コンパイラは、人間が書いたプログラムをコンピューターが実行できるようにするためのツールで、人間とコンピューターの間を取り持ち、効率良く計算を実行できるようにするものだ。その後、日立製作所のスーパーコンピューター事業が難しい側面に向かい、クラウドサービスプラットフォームのCosminexus(コズミネクサス)の実行プログラムの研究などに取り組んだ。実行系の研究という意味では、Node-REDへの取り組みも同じ流れにある。
横井大学時代は、生物と情報の融合した分野である「バイオインフォマティクス」の研究を行っていた。一般にバイオインフォマティクスの研究者は情報系の人が多く、生物系の研究者からデータをもらってコンピューターで解析する。しかし私は生物を育ててデータを取り、情報を解析する両方の側面を手がけていた。扱っていたのは脊椎動物に近い「ホヤ」という動物だった。就職活動では、システムインテグレーターや情報系で研究所がある企業を複数受験した。その中で日立だけが、バイオインフォマティクスの研究のマニアックな話を面接でしっかり聞いてくれた。これが決め手となって日立に就職した。入社後はストレージ関連の部署に配属され、企業向け検索システムの性能向上のための研究を行ってきた。
横井2015年頃、日立の社内でクラウドアプリケーションの開発コンテストへのエントリーを募集する案内があった。当時、コグニティブコンピューティングのAPI(Application Programming Interface)がクラウドで使えるようになり始めた時期であり、面白そうだなとエントリーすることにした。それがNode-REDと出会うきっかけだった。まずは、クラウドサービスを知らないことには、コンテストに参加するにしてもプログラムを作れない。そこで、日本のコミュニティが開催している勉強会に参加して、クラウドアプリケーションの開発方法について学んだ。その時に勉強した半分ぐらいの内容が、プログラミングツールのNode-REDだった。勉強していくうちに、これは面白いなと感じるようになり、日立の内部でも宣伝するようになった。
西山私は研究所と事業部が共同で実施しているプロジェクトに2017年1月に参加することになったのがNode-REDとの出会いだった。通常、プロジェクトは4月からスタートするのだが、このプロジェクトでは、1月から3カ月間の助走期間があり、1月から参加することになった。日立Node-REDエバンジェリストの代表である岩嵜正明(研究開発グループ 技師長 兼 OSSテクノロジーラボラトリ長)から、Node-REDを使った新しいプラットフォームを作るために、情報系のコンパイラの専門家に参加してほしいと声をかけられたためだ。
Node-REDはIBMの英国の研究所のメンバーを中心に開発されていたが、オープンソース化されて自由に利用や開発ができるようになった。日立でもOSSの活動への取り組みはLinuxなどで行ってはきていたものの、どちらかというとプロダクトはすべて日立の中で作るという文化が強かった。そうしたなかでOSSの世界で顔が利く人との関わりがあり、Node-REDの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では、プログラム言語の設計のような範囲まで手を伸ばすことができる。プログラム作成の上流から下流まで携わることができて、楽しい研究活動になっている。
Node-REDの画面キャプチャ
横井Node-REDのOSS活動を本格的に日立が開始してから約1年半が立つ。その間に日立はNode-REDのOSS活動に大きな貢献を残してきている。最近ではNode-REDの月間のプログラム提出量の半分ほどが日立からのものになっている。累計で1割強ぐらいの貢献をしている計算になる。こうしたスピード感でプログラムを提出していくと、Node-REDのコミュニティに対して日立がプログラム開発力を持っていることを十分にアピールできる。お客さまの信頼にもつながる。
西山企業別に見ると、開発元のIBMの貢献が一番で、日立は二番手につけている。これまでのOSSでは、コミュニティが大きくなってから日立や日本の企業が参加することが多かった。Linux Foundationなど大きなOSSコミュニティでは、日立が貢献しても全体から見ると割合は低い。しかし、今回のNode-REDでは早い段階からOSS活動に参加することができて、力を発揮することができている。日本の他の企業は、Node-REDを使うようにはなってきているが、もっと使ってもらえるようになると、さらに活性化が期待できる。
横井OSS活動への貢献の1つは、Node-REDの日本語化だ。日本のユーザーがNode-REDを使うとき、英語よりも日本語のほうが直接的に理解できるため、日本語対応を進めた。日立Node-REDエバンジェリストが著者となって「つないでつないでプログラミング~Node-REDでつくる初めてのアプリ」(リックテレコム)を2017年8月に発行したが、それに間に合わせるように頑張って日本語化を進めた。日立の研究所には外国籍のメンバーも多く、Node-REDの中国語化にも貢献している。2018年9月時点で、Node-REDのコミュニティでは、フランス語対応のソースコードが提案段階にあり、今後ドイツ語への対応も進む予定だ。IoTでの活用が期待されるNode-REDだけに、IoT基盤が盛んなドイツでの今後の利用拡大にも期待ができそうだ。
西山多言語化だけでなく、例えばバージョン管理を行う機能など、他の機能を付け加えることにも日立は貢献している。Node-REDを使う人は、プログラミングが専業ではなく、本来の業務があってそのためにプログラムを作成する人が多い。楽にプログラミングできるように、Nodeの新しい機能を提案するなど、活動を継続していきたい。
西山Node-REDはビジュアルプログラミング言語の一種と言えるが、他の同種の言語との違いはバランス感覚だと感じている。使いやすさと機能のバランスが他に比べてとても良い。例えば、同種のビジュアルプログラミング言語として、プロ向けのデータフローオーケストレーションツールがある。こちらもWebインタフェースを使って部品を配置して線でつなぐことで、システム間のデータフローの自動化定義が可能だ。しかし、実際に使ってみると結構難しい。機能は豊富だがプロでも面倒な設定があり、プログラミングの素人に近い人には無理がある場合が多い。一方でNode-REDは、Webインタフェースの画面がシンプルで、見た目からすっきりしている。その上で複雑なプログラムもかなり簡単にできてしまう。そのバランス感が優れている。
横井Node-REDは、シングルボードコンピューターのRaspberry Piにも標準搭載されるようになったこともあり、コミュニティユーザーでも手軽に使えるようになった。PoCなどで使おうと思ったとき、他の商用のビジュアルプログラミング言語では、設計や企画をきちんとしてからでないとプログラム開発の実践に移しにくい。一方でNode-REDは簡単かつ柔軟に使える。
さらにコミュニティでは開発者が多数決で追加する機能を決めていく。これはNode-REDを開発している場と、実際に利用する側のニーズが限りなく直結しているということでもある。そうした点も急速にNode-REDの利用が広がった理由かもしれない。
西山日立は、Node-REDのOSS活動への貢献だけでなく、自社の「Lumada」への活用を進めている。IoTのソリューションを構築するとき、分析を担うような中のシステムとIoTデバイスを集約するような外のシステムとの間を、どのようにつないでいくかが重要になる。そこではソリューションを提供する人材が開発に携わることが多く、プログラミングのプロがプログラムを開発するとは限らない。そうしたシステムのつなぎの部分に対して、Node-REDが適合するのではないかというのが発想の原点だった。日立のシステムと社外のシステムをつなぐときにも、Node-REDを使った。プロでないと使いにくいツールではなく、誰もが簡単に社内外のシステムをつなぐプログラムを作成できるのがNode-REDだ。Lumadaでさまざまなソリューションを構築する際に、簡単さと豊富な機能のバランスが取れたNode-REDの力が発揮できる。
西山これまで研究所で長年仕事をしてきた。その中で付き合う先というと、製品開発の依頼元である日立の事業部や、たまにその先にいるお客さまに会うといった具合だった。今回のNode-REDのOSS活動では、事業部とも協業しているが社外のコミュニティとのやり取りが非常に多い。社内に対しては、「こういう機能をOSS活動で提案したいがどうか?」「この方法では実現が難しいのでやり直したい」といった活発なやり取りが行われている。海外のコミュニティのメンバーとも活発にやり取りしている。昨日(取材の前日)もイギリスのメンバーとテレカンファレンスをしたところだ。イギリスの朝に合わせて、日本では夜にカンファレンスを行うなど、実際の苦労は少なくないのだが。
横井日米欧の3極でコミュニティの議論をすると、時間の調整が難しいのは本当に悩ましい。とはいえ、コンピューターの前の開発だけでなく、コミュニティで活動をしている実態があるので、その活動の内容はできるだけ社内外に紹介できるようにしている。日本だけでなく、サンフランシスコやラスベガスで実施した社外のカンファレンスなどで、日立がNode-REDに対してどのような活動をして、どのようなものを作ったかを発表した実績がある。そうしたセッションに来てくれる人はフィードバックが良いので、やりがいにもつながる。
西山OSS活動に参加することで、協創をする面白さを実感している。さまざまな会社や立場の開発者と直接やり取りをすることはもちろん、ユーザーや違う視点を持った開発者のコメントを得られることは、従来の研究開発の仕方とは大きく異なる。2017年6月、イギリスに行って日立として提案した機能をNode-REDに採り入れてもらったのがターニングポイントになった。実際にNode-REDのメジャー機能に日立が提案した機能が取り込まれたことがモチベーションにつながり、その後の積極的な活動につながっていると思う。
横井イギリスの開発部隊は、現地でブートキャンプを実施している。日立からも2週間ほど滞在して一緒に開発をした。協創の人間関係は、オンラインだけではうまく作れない。一緒に開発することで、コミュニティの人間関係の構築にも役立った。その上、日本で開発しているときには時差に悩まされるが、現地では9時から17時まで同じ時間で開発が進められる。ものすごく効率的な環境が得られたのは良い経験だった。
西山Node-REDを使いやすくしていくための新しい機能を、日立ではいろいろ提案している。コミュニティのメンバーと相談しながらうまく入れていきたい。その1つのターゲットは、より簡単にプログラムができるようにすること。今のNode-REDは素人でも使いやすいといってもやはりプログラミングの経験があったほうがいい。そうした部分をできるだけ排除して、本当に誰でも使えるようなツールにしていきたい。そのうえで、日立が提供する高信頼性を強化し、「簡単に高信頼を実現できるNode-RED」の実現に力を尽くしていきたい。
横井ブートキャンプに参加して、わがままをいいながらいろいろ教えてもらったようなことを、今度は教える側の立場で実行していきたい。日立だけでなく、多様な企業がNode-REDのコミュニティに入るといいと思う。日立オープンラボ横浜では、Node-REDのデモも見せられるようになっている。他の企業、それは競合の企業であっても、OSSなのでお見せしてNode-REDの世界をどんどん紹介していけたらいいと考えている。
IBMでコンパイラなどを作っていたウォーレン氏の著書「ハッカーのたのしみ―本物のプログラマはいかにして問題を解くか」(ジュニア、ヘンリー・S. ウォーレン著)に影響を受けた。こういうプログラムを作りたいとき、こういうトリックを使うと簡単にできるといったコツがたくさん紹介されている。私自身もコンパイラの研究開発をしていたので、テクニックを使ってマジックのように解法を示すこの本が好きで、そして面白い。
こういうマジックのようなことを、Node-REDの活動でもやっていきたい。こんな簡単なプログラミングのシステムを作ったのだけれど、実は裏ですごいことをやっているんだ!といった驚きを与えられたらうれしい。
西山 博泰 Nishiyama Hiroyasu
デジタルテクノロジーイノベーションセンタ データサイエンス研究部 主管研究員
博士(工学)
Javaのオブジェクト指向プログラミングのデザインパターンが網羅された書籍「Java言語で学ぶデザインパターン入門」(結城浩 著)は、学生時代に読みたいと思っていたが、生物の実験などがあり実現できなかった。社会人になってこの本で研修してくれた方がいて、ようやく読むことができるようになった。
自分で発見したプログラミングや、他人から教えてもらったプログラミングの手法を、この本で確認する。半分ぐらいは合致していて、方法に間違いはなかったなとホッとしたりする。こんな使い方でプログラミングできるのかといった学びにもつながっている。
横井 一仁 Yokoi Kazuhito
デジタルテクノロジーイノベーションセンタ クラウド研究部 研究員