Slide 1

Slide 1 text

フローベースプログラミングツール Node-REDは今でも有効か︖ Node-RED as a flow-based programing tool current situation ̶ Taiji HAGINO / @taiponrock IBM Developer Advocate #osc20on #NodeRED #NodeREDJP

Slide 2

Slide 2 text

スピーカーは、IBMの所属ですが、本セッションは 会社の営利・宣伝⽬的ではありません。 また本セッション内での発⾔及び資料へ掲載されて いる内容についてはスピーカーの個⼈的な⾒解・意 ⾒であり、IBMとは関係のないものです。

Slide 3

Slide 3 text

Speaker

Slide 4

Slide 4 text

Taiji (Eddie) Hagino Sr. Developer Advocate IBM Champion Program Regional Director IBM Lecturer Tsukuba University @taiponrock Please follow me! Node-RED/Node.js, Swift, Hyperledger Fabric, Functions Books: Node-RED beginner book, Node-RED Experience Handbook, DevRel Q&A Articles: I/O Magazine (Node-RED programming)

Slide 5

Slide 5 text

Tokyo Leader Akira ONISHI IBM Developer Advocate Tokyo Team Tokyo Team is a part of Worldwide Developer Advocate Teams! https://developer.ibm.com/cities/tokyo-jp/ Developer Advocates Noriko KATO Developer Advocates Kyoko NISHITO Developer Advocate Yasushi OSONOI Developer Advocates Aya TOKURA Developer Advocates Taiji HAGINO

Slide 6

Slide 6 text

What’s Node-RED

Slide 7

Slide 7 text

Node-REDって何? 7 IoTへとインテグレーションしている多くのアプリケーションでは、多くの場合 において、さまざまなAPI、オンラインサービス、ハードウェアデバイスなどを 最適な⽅法でまとめる必要があります。 例えば、シリアルポートへのアクセス⽅法の把握や、Twitterに対するOAuthフ ローの実装などに時間をかけていては、ソリューションの真の価値を⽣み出す 時間を失う可能性があります。 我々は、どのレベルの開発者でもアプリケーションを作成し、重要な部分に集 中できるようにするツールが必要であると認識しています。

Slide 8

Slide 8 text

8 Node-REDエディターはブラウザーで実⾏され、イベントの フローを描画することでアプリケーションを作成できます。 フローの各ノードは、値の更新、データベースクエリの作 成、ツイートの送信など、明確に定義された機能を持ちま す。 開発者は、必要に応じて各ノードを設定できます。ノードが 「どのように動くか︖」ではなく「何をするか︖」という観 点で使います。 フローがNode-REDランタイムにデプロイされると、各ノー ドは実⾏中のコードになり、メッセージはフローを通過し始 めます。 “イベント駆動型アプリケーション向けのフローベース・プログラミングツール” Node-REDって何?

Slide 9

Slide 9 text

2013年、IBMのNick O’Leary、Dave CJを始めと するIBM Emerging Technologyチームによって オープンソースとして発明されました。 Node-REDの⽣い⽴ち 2013年︓ 2015年︓ 2016年︓ 2018年︓ Nick O’Leary、Dave CJを 始めとする、IBM Emerging Technology Servicesチー ムにより作られ、同年オープ ンソースとなる。 Raspberry Piのデフォルト イメージに追加される。 JS Foundationのfounding projectになる。 1,000,000インストールを記 録。 2019年︓ Node.js FoundationとJS Foundationが合併して設⽴ されたOpenJS Foundation 配下となる。

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

ノード ⼀つ⼀つの箱には既に決 まった処理が実装されて いる フロー 使いたい処理のノードを並べ るだけ。 線でつないだ順番に処理が実 ⾏される。 ⾔ってみればワークフロー。 公開ノード 主要なAPIの呼び出しなど、よく使われ る処理は、誰かが作って公開している事 が多い。 Watson API呼び出しのノードはIBMが開 発し公開している。 設定パネル 処理のパラメーターな ど、ノードに対する設 定を⾏う。 デプロイボタン ノードを配置、フロー作成、パラメーター変 更など、何か作成したり更新した場合に、こ のボタンを押すと反映される。 メニュー フローの削除やイン ポート・エクスポー トなどはこちらから。

Slide 12

Slide 12 text

Low-Code/No-Code

Slide 13

Slide 13 text

Low-Code/No-Codeの世界 13 プログラムが出来ないから使う︖ コードを書きたくないから使う︖ v簡便化 v効率化 v共通化 v⾼品質化

Slide 14

Slide 14 text

14 WHY use it?

Slide 15

Slide 15 text

Why Office? 文書を編集する 数値を計算する アイデアをまとめる

Slide 16

Slide 16 text

かんたん間違いなくNode.jsアプリを作る Why Node-RED?

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

• ノード、フローが公開 • ユーザーがコントリビュート • 2000個以上のモジュール flows.nodered.org

Slide 19

Slide 19 text

Node-RED Examples

Slide 20

Slide 20 text

Node-RED Dashboard データをチャートで可視化するノード デザインのカスタマイズが可能 必要なデータは対象となる数値のみでOK

Slide 21

Slide 21 text

Node-RED Worldmap 地図に情報を表示するノード 必要なのは名前と緯度経度のみ 現在位置のリアルタイム更新 地図のレイヤー、アイコン、色などは 様々な選択が可能 オーバーレイ表示もOK

Slide 22

Slide 22 text

Environment

Slide 23

Slide 23 text

Edge Device / Cloud Services

Slide 24

Slide 24 text

Embeded MultiConnect® Conduit™ IoT Gateway Developer Hub SNAP PAC Industrial Controller

Slide 25

Slide 25 text

Technical Overview

Slide 26

Slide 26 text

アーキテクチャ 26 Node-REDには2つの論理パーツがあります。 ランタイムはNode.jsアプリケーションです。デプロイ されたフローの実⾏を担当します。 エディターは、ユーザーがフローを編集できるWebアプ リケーションです。 メインのインストール可能なパッケージには、エディ ターを提供するWebサーバーとランタイムを管理するた めのREST管理APIの両⽅のコンポーネントが含まれてい ます。 内部的に、これらのコンポーネントは個別にインス トールし、既存のNode.jsアプリケーションに埋め込む ことができます。 node-red runtime editor HTTP Admin API @node-red/editor-api Client-side Editor @node-red/editor-client Flow Runtime @node-red/runtime Core Nodes @node-red/nodes Node Registry @node-red/registry Common Utils @node-red/util

Slide 27

Slide 27 text

フロー 27 フローは、相互に接続されたノードのコレクションです。 ノードには複数の出⼒ポートがあり、単⼀のポートには複 数のワイヤを接続できます。 フローはJSONオブジェクトとして、すべてのノードの構成 とそれらがどのように接続されているかの情報として保存 されます。 フローJSONはNode-REDインスタンス間でインポートおよ びエクスポートできるため、フローを簡単に共有できます。

Slide 28

Slide 28 text

メッセージ 28 フローを通るメッセージ (messages) はJavaScript Objectsです。 これには、柔軟に情報を含むことができるPayloadプロパ ティがあります。ほとんどのノードにおいてデフォルトで 動作するプロパティです。 topic: “weather/uk” payload: “sunny!” … …

Slide 29

Slide 29 text

ノード 29 ノードは、フローの基本的な構成要素です。 フローの開始位置にあるノードは、着信のHTTPリクエスト、 タイマーイベント、ハードウェアIOイベントなどの外部イ ベントの発⽣を待機します。 次に、接続されているノードにメッセージを渡します。 ノードはこれらのメッセージを受信し、いくつかの作業・処 理を⾏ってから、それらをフローに渡します。 payload: “Jedi are totally amazing!” payload: “Jedi are totally amazing!” sentiment: { score: 4 } この例では、センチメント分析ノードがメッセージの 「payload」プロパティを調べ、センチメントを評価 し、その結果(スコア)をメッセージの新しいプロパ ティとして追加しています。

Slide 30

Slide 30 text

30 ノードは、コミュニティとしてNode-REDを拡張していくこと が可能な主な⽅法でもあります。 それらは2つのパーツで構成されています︓ -ノードの実⾏時の動作を定義するNode.jsモジュール -エディターの外観、編集ダイアログ、およびヘルプテキストを 提供するHTMLファイル これらはNode.jsモジュールとしてパッケージ化され、 NPM package repositoryを介して配布されます。 プロジェクトは https://flows.nodered.org をホストし、npm で利⽤可能なNode-REDモジュールのインデックスを⾃動的に 作成します ノード

Slide 31

Slide 31 text

User Community

Slide 32

Slide 32 text

Node-RED User Group Node-REDのユーザーコミュニティです Node-REDのユーザーを増やすべく、 ⽇々活動しています︕

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

Japan

Slide 35

Slide 35 text

Global Collaboration

Slide 36

Slide 36 text

Global Collaboration

Slide 37

Slide 37 text

Global Conference https://developer.ibm.com/jp/blogs/node-red-con-tokyo-2020-report/

Slide 38

Slide 38 text

Showcase

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

Safeguarding online communities Identify abusive context and create alert – Granular calibration of severity and priority depending on each community code of conduct Get all situation data in one place – Investigation made easy presenting the detailed context of the communication between parties Manual and automated community intervention – Mute, block, suspend, add strikes – Apply penalties with time limits © 2017 Spirit AI Ltd. All rights reserved.

Slide 41

Slide 41 text

© 2017 Spirit AI Ltd. All rights reserved.

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

Get Started Today!

Slide 45

Slide 45 text

IBM Cloud上ですぐに使える︕

Slide 46

Slide 46 text

$ sudo npm install -g --unsafe-perm node-red $ docker run -it -p 1880:1880 --name mynodered nodered/node-red ローカルへのインストールも簡単︕

Slide 47

Slide 47 text

47 https://ibm.biz/Bdqkuw IBM Cloudアカウント 無料(クレジットカード不要) すぐに使える いつまででも使える (*1) *1 IBM Cloudのアカウント形態や料⾦プランの ⾒直しに伴い将来的に変更となる可能性があり ます。

Slide 48

Slide 48 text

48 ご注意 今回みなさまへご案内しているのは、クレジットカー ド不要の完全無償でご利⽤頂けるアカウントです。 こちらはライトアカウントと呼ばれ、使える機能に制 限があり、⼀部のサービスはご利⽤いただけません。 アカウント作成後、クレジットカードを登録すると PAYG(PayGo)という全ての機能がご利⽤頂けるアカウ ントへアップグレードできますが、こちらは従量課⾦ が発⽣するアカウントですので、ご利⽤の際にはご注 意下さい。

Slide 49

Slide 49 text

Demo

Slide 50

Slide 50 text

https://github.com/knolleary/node- red-in-production-workshop https://github.com/taijihagino/node- red-making-node-handson ToDoアプリを作るハンズオン (英語) オリジナルノードを作るハンズオン (⽇本語)

Slide 51

Slide 51 text

Conclusions

Slide 52

Slide 52 text

52 - IoT向けフローベースプログラミングツールから Node.jsを実現するNo-code/Low-codeのビ ジュアルプログラミングツールへ - Node-REDの外にあるWebアプリケーションと 組み合わせることで可能性はさらに広く︕ - 今後間違いなくこの領域でデファクトスタン ダードになっていくツール︕

Slide 53

Slide 53 text

53 Practical Node-RED Programming 私の書籍が12⽉に発売予定です︕ 出版社はPackt Publishingですが、 もう少ししたらAmzonで予約開始さ れる(はず)

Slide 54

Slide 54 text

54 Thank you twitter.com/taiponrock facebook.com/taiponrock github.com/taijihagino developer.ibm.com/jp/ developer.ibm.com/code/community/ci ties/tokyo/ Taiji HAGINO Sr. Developer Advocate IBM Champion Program Regional Director IBM

Slide 55

Slide 55 text

55

Slide 56

Slide 56 text

ワークショップ、セッション、および資料は、IBMまたはセッション発表者によって準備され、それぞれ独⾃の⾒解を反映したものです。それらは情報 提供の⽬的のみで提供されており、いかなる参加者に対しても法律的またはその他の指導や助⾔を意図したものではなく、またそのような結果を⽣むも のでもありません。本講演資料に含まれている情報については、完全性と正確性を期するよう努⼒しましたが、「現状のまま」提供され、明⽰または暗 ⽰にかかわらずいかなる保証も伴わないものとします。本講演資料またはその他の資料の使⽤によって、あるいはその他の関連によって、いかなる損害 が⽣じた場合も、IBMは責任を負わないものとします。 本講演資料に含まれている内容は、IBMまたはそのサプライヤーやライセンス交付者からいかな る保証または表明を引きだすことを意図したものでも、IBMソフトウェアの使⽤を規定する適⽤ライセンス契約の条項を変更することを意図したもので もなく、またそのような結果を⽣むものでもありません。 本講演資料でIBM製品、プログラム、またはサービスに⾔及していても、IBMが営業活動を⾏っているすべての国でそれらが使⽤可能であることを暗⽰ するものではありません。本講演資料で⾔及している製品リリース⽇付や製品機能は、市場機会またはその他の要因に基づいてIBM独⾃の決定権をもっ ていつでも変更できるものとし、いかなる⽅法においても将来の製品または機能が使⽤可能になると確約することを意図したものではありません。本講 演資料に含まれている内容は、参加者が開始する活動によって特定の販売、売上⾼の向上、またはその他の結果が⽣じると述べる、または暗⽰すること を意図したものでも、またそのような結果を⽣むものでもありません。 パフォーマンスは、管理された環境において標準的なIBMベンチマークを使⽤し た測定と予測に基づいています。ユーザーが経験する実際のスループットやパフォーマンスは、ユーザーのジョブ・ストリームにおけるマルチプログラ ミングの量、⼊出⼒構成、ストレージ構成、および処理されるワークロードなどの考慮事項を含む、数多くの要因に応じて変化します。したがって、 個々のユーザーがここで述べられているものと同様の結果を得られると確約するものではありません。 記述されているすべてのお客様事例は、それらのお客様がどのようにIBM製品を使⽤したか、またそれらのお客様が達成した結果の実例として⽰された ものです。実際の環境コストおよびパフォーマンス特性は、お客様ごとに異なる場合があります。 IBM、IBM ロゴ、ibm.com、[以下当該情報に関連し商標リスト中に掲載されたIBMブランドやIBMの製品名称があれば追加する]は、 世界の多くの国で 登録されたInternational Business Machines Corporationの商標です。他の製品名およびサービス名等は、それぞれIBMまたは各社の商標である場合があ ります。現時点での IBM の商標リストについては、www.ibm.com/legal/copytrade.shtmlをご覧ください。 [以下特定の他社商標についての商標帰属表⽰]