この記事は 「大石泉すき」アドベントカレンダー 10日目の記事です。
フローベースドプログラミングツール Node-RED で
「大石泉すき」をブラウザで表示したいです。
idol++もしたいと思います。
やること
なるべくノンコーディングで
ブラウザに「大石泉すき」を表示します。
応用編 「大石泉すき」を好きな数表示 (idol++)(ページ内リンク)では、好きな回数「大石泉すき」を表示します。
使用環境
- OS : Windows 10 Home (1809 ,OS ビルド: 17763.864 )
- Node.js: v12.13.1
- Node-RED:v1.0.3
基本編「大石泉すき」を1つ表示
仕様
- URL にアクセスして、「大石泉すき」と表示します
フロー
実行と結果
ブラウザで アクセスします。
http://localhost:1880/love
プログラミング
各ノードを接続後、ノードを適切に設定します。
-
template
ノードをダブルクリックし、テンプレート 欄に 大石泉すき と入力します。もともと入力されている "{{payload}}" は削除します。
ソースコード
下記ソースコードを、Node-RED の「三」メニュー 内、 「読み込み」で表示される
「フローをクリップボードから読み込みダイアログ」にコピペすると
お手元の Node-RED で 「大石泉すき」が可能になります。
[{"id":"b1ec6763.a56ed8","type":"tab","label":"フロー 1","disabled":false,"info":""},{"id":"bc1ab3d0.d2682","type":"http in","z":"b1ec6763.a56ed8","name":"","url":"/love","method":"get","upload":false,"swaggerDoc":"","x":100,"y":40,"wires":[["6752026.6da1bfc"]]},{"id":"6752026.6da1bfc","type":"template","z":"b1ec6763.a56ed8","name":"大石泉すき","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"大石泉すき","output":"str","x":490,"y":40,"wires":[["a6c51039.aef8e"]]},{"id":"a6c51039.aef8e","type":"http response","z":"b1ec6763.a56ed8","name":"","statusCode":"","headers":{},"x":650,"y":40,"wires":[]},{"id":"e7ce0c8f.150bb","type":"comment","z":"b1ec6763.a56ed8","name":"ブラウザに返す","info":"","x":700,"y":80,"wires":[]},{"id":"f85e4d72.b284a","type":"comment","z":"b1ec6763.a56ed8","name":"入り口 URL","info":"","x":90,"y":80,"wires":[]}]
ソースコード読み込みメニュー
フローをクリップボードから読み込みダイアログ
環境 のセットアップ
node.js のインストール
- Node.js 公式からインストーラをダウンロード
- インストーラ実行
- 動作確認
公式からインストーラをダウンロード
TOP ページにダウンロードリンクがあるのでクリックしてダウンロードします
インストーラ実行
End-User License Agreement
チェックボックスにチェックして、[Next] クリック
Destination Folder
任意のフォルダを指定して、[Next] クリック
Custom Setup
基本、そのまま [Next] クリック
Tools for Native Modules
チェックせずに、[Next] クリック
Ready to install Node.js
覚悟を決めて [Install] をクリック
Installing Node.js & Completed the Node.js Setup Wizard
しばらく待って、Completed
ダイアログが表示されたら [Finish] クリック
動作確認
コマンドプロンプトを立ち上げて node
コマンドが実行できることを確認します。
node -v
インストールした node.js のバージョンが表示されれば成功です。
Node-RED のインストールと実行
インストール
公式(npmによってインストールする)の手順に従いインストールします。
コマンドプロンプトにて、下記コマンドを入力します。
npm install -g --unsafe-perm node-red
コンソールがピロピロするので、終わるまで待ちましょう。
実行
公式(Windowsで実行する)の手順に従い、下記コマンドを入力します。
node-red
セキュリティの重要な警告が表示された場合
チェックボックスを適切に設定して [アクセスを許可する]クリック
Node-RED エディタの表示
公式(はじめてのフロー)の手順に従いブラウザで以下のURLにアクセス
http://localhost:1880/
Node-RED ノード概要
http in
URL のパスを定義するノードです。
対応するWEBメソッドの設定も可能です。
http Response
処理の結果をブラウザに返すノードです。
template
change
switch
function
応用編 好きな数だけ「大石泉すき」を表示 (idol++)
仕様
- URL クエリーパラメータ
izumi
に指定された数、「大石泉すき」と表示します -
izumi
パラメータが無い場合は、1つだけ「大石泉すき」と表示します
フロー
実行と結果
ブラウザで アクセスします。
この例では、20回「大石泉すき」です。
http://localhost:1880/love?izumi=20
プログラミング
-
izumi
クエリパラメータが指定されているかどうかを Switch ノードで判定し、その後のフロー先を切り替えます。
(パラメータが指定されていない場合は基本編のフローに流れます。)
-
izumi
クエリパラメータが指定されている場合は、後続のループ処理のための変数を初期化します。
-
idol++
しながら、指定された回数分「大石泉すき」を文字列結合します。
-
payload
変数に 大石泉すき を追加した文字列を、payload
変数に代入します。
-
idol
変数をインクリメントする。(みんな大好き idol++)
-
idol
変数が、izumi
変数の値と異なる間、ループして 大石泉すき を追加し続ける
- 最後に、ループ内で作成した「大石泉すき」をブラウザに返します。
ソースコード
[{"id":"22a0265c.ef9e3a","type":"tab","label":"Flow 1","disabled":false,"info":""},{"id":"4bab2f49.7a2d6","type":"http in","z":"22a0265c.ef9e3a","name":"","url":"/love","method":"get","upload":false,"swaggerDoc":"","x":100,"y":60,"wires":[["6304e723.4eec68"]]},{"id":"969b8bff.8ad168","type":"http response","z":"22a0265c.ef9e3a","name":"","statusCode":"","headers":{},"x":650,"y":60,"wires":[]},{"id":"3b9123ce.08425c","type":"template","z":"22a0265c.ef9e3a","name":"大石泉すき","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"大石泉すき","output":"str","x":490,"y":60,"wires":[["969b8bff.8ad168"]]},{"id":"6304e723.4eec68","type":"switch","z":"22a0265c.ef9e3a","name":"Query パラメータ確認","property":"payload.izumi","propertyType":"msg","rules":[{"t":"null"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":280,"y":60,"wires":[["3b9123ce.08425c"],["22bfa338.e36dec"]]},{"id":"22bfa338.e36dec","type":"change","z":"22a0265c.ef9e3a","name":"","rules":[{"t":"set","p":"idol","pt":"msg","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":250,"y":160,"wires":[["cff06288.b672"]]},{"id":"d1b4cd20.4d9f","type":"function","z":"22a0265c.ef9e3a","name":"idol++","func":"msg.idol++;\nreturn msg;","outputs":1,"noerr":0,"x":490,"y":240,"wires":[["5a07db52.bf9214"]]},{"id":"5a07db52.bf9214","type":"switch","z":"22a0265c.ef9e3a","name":"","property":"idol","propertyType":"msg","rules":[{"t":"neq","v":"izumi","vt":"msg"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":610,"y":240,"wires":[["751cc275.f2e57c"],["b414b5a3.04a728"]]},{"id":"cff06288.b672","type":"change","z":"22a0265c.ef9e3a","name":"","rules":[{"t":"set","p":"izumi","pt":"msg","to":"payload.izumi","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":260,"y":220,"wires":[["8058862b.de91e8"]]},{"id":"8058862b.de91e8","type":"change","z":"22a0265c.ef9e3a","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":260,"y":280,"wires":[["751cc275.f2e57c"]]},{"id":"751cc275.f2e57c","type":"template","z":"22a0265c.ef9e3a","name":"大石泉すき 追加","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{{payload}}大石泉すき","output":"str","x":500,"y":160,"wires":[["d1b4cd20.4d9f"]]},{"id":"82f12aef.e736e8","type":"comment","z":"22a0265c.ef9e3a","name":"変数の初期化","info":"","x":250,"y":320,"wires":[]},{"id":"e7b9f020.c10ce","type":"comment","z":"22a0265c.ef9e3a","name":"大石泉を溜める","info":"","x":520,"y":320,"wires":[]},{"id":"b414b5a3.04a728","type":"http response","z":"22a0265c.ef9e3a","name":"","statusCode":"","headers":{},"x":770,"y":240,"wires":[]},{"id":"4f255a39.c14724","type":"comment","z":"22a0265c.ef9e3a","name":"入り口 URL","info":"","x":90,"y":100,"wires":[]},{"id":"9dcc56ce.5dbd58","type":"comment","z":"22a0265c.ef9e3a","name":"ブラウザに返す","info":"","x":700,"y":100,"wires":[]},{"id":"c617b42a.378b58","type":"comment","z":"22a0265c.ef9e3a","name":"ブラウザに返す","info":"","x":740,"y":320,"wires":[]}]
番外編 IBM Cloud で実行
IBM Cloud では、クラウド環境で実行する Node-RED を簡単に準備することができるので
インターネットにつながるデバイスであれば、どこでも「大石泉すき」を表示できるようになります。