10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

2020年4月 Node-REDハンズオン (地図アプリ構築)

Last updated at Posted at 2020-04-10

#はじめに
このドキュメントは、2020年4月 Node-REDハンズオン(Node-RED環境の準備)の続きです。Node-RED環境が用意できていない場合は、2020年4月 Node-REDハンズオン(Node-RED環境の準備)をもとに、Node-RED環境を構築してください。

2020年4月10日のハンズオン教材です。

##IBM Cloud 以外で、Node-REDを使いたい方へ
AWSやMicrosoft Azure、自社サーバーや自宅サーバーでも構いませんので、参考情報を確認しまして、Node-RED環境と構築し、「node-red-contrib-web-worldmap」ノードと「node-red-contrib-cloudantplus」ノードを追加してください。
###参考情報

#作成見本
##画面ショット
下図のような地図サービスです。サージカルマスクの在庫の有無について表示しています。
在庫がある場合は緑色のマーカーで表示され、在庫がない場合は赤色のマーカーが表示されます。各マーカーをクリックすると、吹き出しが表示されます。
image.png

##サンプルデータ
下記のような在庫情報のデータベースがあるとします。本ドキュメントでは、手軽に試すために下記のデータをNode-RED内の在庫情報を埋め込んでいます。実際は、在庫管理システムから呼び出すことになります。「stockstatus」が在庫の有無を、yesとnoで表現しています。
latitudeとlongitudeがポイントです。緯度と経度をセットすることで、地図にマーカーを設置することができます。
image.png

###Node-REDに埋め込んだ在庫情報

'created,updated,latitude,longitude,shop,Country,State,city,address line,phone,type,stokstatus\n2020-04-07T00:13:33.870Z,2020-04-07T01:53:52.136Z,35.678815,139.787181,shop-A,JPN,Tokyo,chuo-ku,hakozaki,03-0000-0000,surgical-mask,yes\n2020-04-06T23:45:01.895Z,2020-04-07T01:33:29.737Z,35.173063,136.882257,shop-B,JPN,Aichi,Nakamura-ku,naeki,052-000-0000,surgical-mask,yes\n2020-04-06T23:17:23.170Z,2020-04-07T01:45:33.452Z,34.693539,135.495717,shop-C,JPN,Osaka,kita-ku,nakanoshima,06-0000-0000,surgical-mask,no'

##Node-RED サンプル
https://github.com/kolinz/node-red-recipe 内の「inventory-map-2020April.json」にアクセスし、フローデータを取得してください。

###フローデータの読み込み

  1. 上記URLから、JSON形式のフローデータを取得します。
  2. Node-RED画面右上の「三」から「読み込み」をクリック。
  3. JSON形式のフローデータを貼り付け、「読み込み」をクリック。
    image.png

###Node-REDサンプルフローデータ読み込み後のエディタ画面
フローデータを読み込むと、下図のように表示されます。
image.png

###動作確認

  1. 画面右上の「デプロイ」をクリックします。
  2. Webブラウザの別画面を開き、地図ページにアクセスします。URLは、https://xxxxxx.mybluemix.net/worldmap/ で「xxxxxx.mybluemix.net」は、お使いのNode-REDのURLにより異なります。
  3. タイムスタンプと表示されている「inject」ノードの左端の「■」ボタンをクリックします。
  4. 地図ページを確認します。地図上のマーカーをクリックすると、吹き出しが表示されます。
    image.png

####スマートフォンからアクセスした場合
sample-map smartphone.png

#サンプルフロー解説
ここから、各ノードについて説明します。

##タイムスタンプ
injectノードを使用しています。左端の「■」ボタンをクリックすることで手動で地図にデータを送信します。injectノードの設定を使用することで定期的にバッチ処理でデータを地図に送ることも可能です。

##switch layer, move map and zoom
functionノードを使用しています。表示する地図の様式や倍率の設定値について記述しています。
image.png

##sample-data
functionノードを使用しています。前述の「サンプルデータ」をご覧ください。

##debug:sample-data
debugノードを使用しています。「sample-data」で読み込まれたデータをNode-REDのデバッグタブで確認することができます。
image.png

##csv
csvノードを使用しています。サンプルデータを行毎に分割する処理を行います。

##stock status
switchノードを使用しています。在庫情報の「stockstaus」の値にあわぜて分岐する処理を行います。
image.png

##set coloer:green
changeノードを使用しています。読み込んだデータで「stockstatus」が「yes」のときに、こちらで、マーカーに使用する色として緑色(green)を指定します。
image.png

##set coloer:red
changeノードを使用しています。読み込んだデータで「stockstatus」が「no」のときに、こちらで、マーカーに使用する色として赤色(red)を指定します。
image.png

##mapping
functionノードを使用しています。地図にマーカーを配置するためのデータを作成します。
image.png

##debug:mapping-data
debugノードを使用しています。「mapping」で処理データをNode-REDのデバッグタブで確認することができます。
image.png

##worldmap
worldmapノードを使用しています。「mapping」で作成されたデータを読み込み、地図に表示します。
「webpath」を変更することで、地図表示の際のURLを変えることができます。
image.png

#カスタマイズ 常時マーカーを表示する
地図にアクセスした際に常にマーカーが表示されるようにするには、サンプルフローにノードを2つ追加する必要があります。
##worldmap in
worldmap in ノードを使用しています。
image.png

##retrigger from map
functionノードを使用しています。
image.png

##追加したノードを線で結ぶ
「worldmap in」と「retrigger from map」を線で結びます。「retrigger from map」と「switch layer, move map and zoom」、「retrigger from map」と「sample-data」をそれぞれ線で結び、画面右上の「デプロイ」をクリックします。

##確認
下図のようなフローとなります。
image.png

これで、地図にアクセス毎にマーカーが表示されるようになります。

#まとめ
Node-REDの「node-red-contrib-web-worldmap」を追加し、それ以外はNode-REDがもともと持っているノードを使用して作成しました。

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

2020年のCall for Codeのテーマは、新型コロナウィルス(COVID-19)対策と気候変動対策です。地図サービスはどちらにも親和性が高く、応用が利きます。
最新情報は、Call for Codeのサイト https://callforcode.org/ や下記情報をご確認ください。
日本語情報:https://developer.ibm.com/jp/callforcode/
参加方法などの解説資料:https://www.slideshare.net/kolinz/2020-call-for-code-global-challenge-20204  (私も参加したことがありますので、参加経験をもとに解説資料を作成しました。)

10
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?