2020年4月 Node-REDハンズオン (Node-RED環境の準備)

#諸注意
本ドキュメントは、2020年4月時点の内容です。クラウドサービス上で利用するため、画面のUI(ユーザーインターフェース)が変わることがあります。予めご了承ください。

#Node-RED
Node-REDは、国内外の大手企業のIoTサービスで使われているデファクトスタンダード(事実上の標準)ツールです。下図のように箱をつないで開発します。箱を「ノード」と言います。
Webアプリケーション開発やセンサーなどのIoTデバイスからのデータ取り込み、ブロックチェーンやAI(人工知能)などと連携し、業務システム(顧客管理など)連携のためのハブとして使用すること可能です。
オープンソースソフトウェアのため、だれでも自由に使用することができ、Node-REDを使ったサービスを提供する各企業からサポートが提供されています。オープンソースだからサポートがないなんてただの誤解です。

![18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/b16a7c93-9177-8623-7a61-f5d3faeba4ce.png)

##参考情報
* [Node-RED日本ユーザー会](https://nodered.jp/about/)
* [産業IoTプラットフォームで使用されるNode-REDとは](http://www.mstc.or.jp/iaf/event/2019f/07yokoi.pdf)
* [東芝テックがIBM Watson開発道場に挑む](https://www.i-learning.jp/download/pdf/toshibatec_ismagazine.pdf)
* [Code and Response Day Online #1](https://bmxug.connpass.com/event/171668/)

#IBM Cloud ライト・アカウント
IBM Cloudを既にご利用済みの方は読み飛ばしてください。「IBM Cloud ライト・アカウント」は、クレジットカード登録不要で使える無料のクラウドサービスです。開発環境として使用する他に、個人や企業、学校、自治体などでの本番利用も可能です。クレジットカード登録が不要のため、クレジットカード取得が難しい中学生や高校生、大学生等が、プログラミングやクラウド、AI、IoT開発を始めることに適しています。
IBM Cloud以外では、ほぼクレジットカード登録が必須になっています。

##IBM Cloud ライト・アカウントの登録
https://www.ibm.com/jp-ja/cloud/lite-account にWebブラウザでアクセスします。
「ライト・アカウントを今すぐ登録」をクリックします。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/4382e105-cb6a-37ca-57aa-45e3575338d4.png)

画面右側に表示された各項目に入力します。スマートフォン/携帯電話のメールアドレスでも構いませんので、実際に使用可能なメールアドレスを入力しましょう。メールアドレス以外には、お名前などが必要です。入力後、「アカウントの作成」をクリックします。画面の指示に従って進めます。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/5b4a651c-fbbe-6149-8795-28ae70380165.png)

##IBM Cloudにログイン
IBM Cloud にログインする際には、https://cloud.ibm.com にWebブラウザからアクセスし、IDとして、IBM Cloud ライト・アカウント登録に使用したメールアドレスを入力し、「続行」をクリックします。次の画面で「パスワード」には、IBM Cloud ライト・アカウント登録の際に設定したパスワードを使用します。
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/b5e6c149-483e-6e31-bd54-913c5a7ef5c4.png)

ログイン後、下図の画面が表示されます。ダッシュボードと言います。お使いのサービス(機能)や障害情報など、一覧で表示されます。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/35cf2325-bec0-3b90-88ce-a041133c2ecd.png)

画面右上の「リソースの作成」または「カタログ」をクリックしましょう。使用可能な各サービス(機能)が表示されます。Webアプリケーション開発してもいいですし、センサーから計測値を受信するためのIoT関連サービス、AI(人工知能)、今回のNode-REDを使用することができます。
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/f01d08e9-a898-f19c-8f0c-79c7d41e0b3a.png)

#Node-REDの有効化
「カタログ」画面で、「ソフトウェア」タブをクリックし、「node-red」と検索します。下図のように「Node-RED App」が表示されますのでクリックします。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/4ba9dcb5-bad1-9888-fa6d-f5c9d2d8c44d.png)

画面右上の「アプリの作成」をクリックします。「含まれている内容」の「Cloudant」は、無料から使えるデータベースです。データベースには、Webアプリケーションに入力された情報やセンサーから届いた計測値、AIへの問い合わせ情報など様々な情報を保管、開発者が設定することで他システムで再利用することができます。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/5f31f99a-30c5-4439-86de-0062624a6995.png)

データベース含め、お客様データの扱いについては、下記をご覧ください。
https://www.ibm.com/blogs/solutions/jp-ja/ibms-data-privacy-policy-for-an-ai-powered-world/

この画面では、「アプリ名」の指定と、画面下部の「Cloudant」で、「Cloudant」をどこのリージョン(データセンター)で使用するか選ぶことができます。「東京」や「ダラス」などで、好みの場所を選択することができます。
画面右上の「作成」をクリックします。
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/be9cfc13-ff54-031c-94cb-41b4c027438f.png)

「アプリのデプロイ」をクリックします。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/f5ccb23a-b75f-4b63-7cbe-9b49bc73a05c.png)

初めての場合は、「IBM Cloud API 鍵」が無いので、「New」をクリックします。
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/23ed86e1-cea2-3585-6e98-498e11f0b508.png)

「OK」をクリックします。
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/3d3097b6-b05c-e751-544d-60ce6250389c.png)

「IBM Cloud API 鍵」がセットされます。また、Node-REDを動かすリージョン(データセンター)を指定することができます。また、「インスタンス当たりのメモリ割り振り」を「256」にセットします。画面右上の「作成」をクリックします。
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/49810a4e-2a59-df87-19d5-bafa6fb8d5df.png)

Node-RED環境が作成されると、下図のように表示されます。
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/b05a72f5-bb3c-7b38-a508-c2317fe7342d.png)

「Delivery Pipeline」の状況が「成功」と表示されるまで待ちます。「成功」と表示されたら、Webブラウザを再読み込みしましょう。
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/4edd84a4-8e68-75c5-b463-675e81c1edf3.png)

「App URLにアクセス」と表示されます。「App URLにアクセス」をクリックします。
![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/2b943af9-3d2b-813b-1e65-2a30c41e573e.png)

##Node-RED 初期設定
Webブラウザで、Node-REDの初期設定が表示されます。「Next」をクリックします。
![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/300f75b1-f359-3d95-6b0f-76e4eb55e078.png)

「Username」と「Password」を入力します。「Username」には英数字が使用可能です。「Password」には英数字と記号が使用可能です。それぞれ入力後、「Next」をクリックします。
![13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/29d4bc40-f48b-51d8-08b1-38287ff4e682.png)

ここでは、「Next」をクリックして次に進みます。
![14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/fde26bf0-40f5-b543-58f3-b32f2a634e0d.png)

「Finish」をクリックして次に進みます。
![15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/5f4a0bf8-19ad-da71-cbce-02c890cad169.png)

下図のように表示されれば初期設定は完了です。「Go to your Node-RED flow editor」をクリックしてログインしましょう。
![16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/b7edb2bf-6086-9748-a1b6-55d39831e197.png)

##Node-RED ログイン
初期設定画面で設定した「Username」を「ユーザー名」に、「Password」を「パスワード」に入力し、「ログイン」をクリックします。
![17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/f480ff7b-b1eb-ae86-7778-feea47e33c3d.png)

ログインすることで、Node-RED画面が表示されます。この画面で、箱(ノード)を線で結び、ノード内に数値を設定したり、プログラム書き加えることで、「フロー」が出来上がります。Node-RED上で動く、WebやIoT、AIなどを活用した様々なアプリケーションを「フロー」と言います。
![18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/28cb6dcb-6c0d-d5ff-52ad-9f1db672687e.png)

##動作確認
画面右端の「虫型のアイコン」をクリックします。少し小さいので見落とさないようにご注意ください。表示されるタブを「デバッグ」タブと言います。濃い緑色のノード(箱)を、「debug(デバッグ)ノード」と言い、下図のように、debugノードが線で結ばれているノードで処理されているデータを、「デバッグ」タブで確認することができます。
![19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/3ff35d44-ce9f-e0dd-8300-dfd22ce16101.png)

画面右上の「デプロイ」が赤く表示されている場合は「デプロイ」をクリックします。その後、「Hello Node-RED!」と表示されているノード(injectノード)の左端の「■」をクリックします。
「デバッグ」タブに、処理結果が表示されます。表示されれば問題ありません。

#ノード追加
IBM Cloud上のNode-REDには、AI「Watson」を扱うための「IBM Watson」ノードが初期状態で準備されていることが、AmazonのAWSや、Microsoft AzureなどでNode-REDを構築した場合と比較したときの特徴になります。
Node-REDに初めから入っているノード(箱)以外に、地図など追加したいことがあります。ノードの追加手順について説明します。

画面右上の「三」をクリックし、「パレットの管理」をクリックします。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/e99b85b6-a576-462e-0ac3-9626ed77d6e8.png)

「ユーザー設定」で「ノードを追加」タブをクリックします。
虫眼鏡型アイコンがある検索フィールド(項目)で、「worldmap」を入力し検索します。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/46021e53-8465-464b-045c-c1be79025021.png)

node-red-contrib-web-worldmap が表示されます。「ノードを追加」をクリックします。少し小さいのでご注意ください。Webブラウザの基本機能である「ズーム」を使い、拡大表示すると見易くなります。あまり気づかれることがありませんが、パソコンには昔から使用者に合わせて文字を大きく表示する機能が備わっておりだれでも使用することができます。

「node-red-contrib-web-worldmapをインストールします」と表示されますので、「追加」をクリックします。
Node-REDを有効化する際に入力しました「インスタンス当たりのメモリ割り振り」で、メモリを少なくした場合は、エラーになることがありますのでご注意ください。「256」MBにしておけば、今回の「node-red-contrib-web-worldmap」はインストールできます。
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/97608d0e-f047-30d4-86f5-5279e698ea63.png)

成功すれば下図のように表示されます。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/dc881e4d-5bad-24c3-8f1d-12b59241400c.png)

「閉じる」をクリックします。
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/a53b0080-573d-3ca2-db6b-6f620d602915.png)

画面右側で「location」と表示されていれば問題ありません。無事に追加できていることになります。
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/027367e9-e322-5cec-9772-cb43cba5434c.png)

#続き
[2020年4月 Node-REDハンズオン (地図アプリ構築)](https://qiita.com/kolinz/items/66aee055ab024e5117f6)をご確認ください。本ドキュメントの続きになります。

#Call for Code
2018年から始まった「Call for Code」をご存じでしょうか？
2019年は、世界165ヶ国18万人以上が参加し、自然災害などの社会問題の解決に向けて、クラウドを中核としたソリューションを5000以上開発し世界に貢献しました。参加者は、世界中の開発者やビジネスリーダー、研究者、学校の教員、学生などです。

2020年のCall for Codeのテーマは、新型コロナウィルス(COVID-19)対策と気候変動対策です。今回セットアップしたNode-REDを使って、実際のテーマに沿ったソリューションを開発し、参加することができます。
最新情報は、Call for Codeのサイト https://callforcode.org/ や下記情報をご確認ください。
日本語情報：https://developer.ibm.com/jp/callforcode/
参加方法などの解説資料：https://www.slideshare.net/kolinz/2020-call-for-code-global-challenge-20204 　(私も参加したことがありますので、参加経験をもとに解説資料を作成しました。)