Node-REDダッシュボード2.0の使い方

本記事では、Node-REDダッシュボードの後継であるNode-REDダッシュボード2.0を紹介します。

![Screenshot 2024-02-12 at 0.55.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/e47eba7b-c916-a673-ead0-79562f931866.png)

Node-REDダッシュボード2.0の公式ページ: https://dashboard.flowfuse.com/

# 従来のNode-REDダッシュボードの問題
Node-REDダッシュボードは、フローによって簡単に画面開発やグラフ表示ができるため、広く使われていました。ただNode-REDダッシュボード内部では、既にメンテナンスされていないAngular 1.0が使われています。そのため、セキュリティの問題が起きても対策されないリスクがあり、OSSのコンプライアンスが厳しい企業や組織では使うことができていませんでした。また代替のサードパーティノードは存在していましたが、フロントエンド画面のコーディングが必要で、Node-REDダッシュボードのような手軽さはありませんでした。

# Node-REDダッシュボード2.0とは
従来のNode-REDダッシュボードで起きていた問題を解決するために、開発されたNode-REDダッシュボードです。内部はVue.jsで実装されており、可能な限り従来のNode-REDダッシュボードで実現できたことを再現できるようになっています。Node-REDや従来のダッシュボードの開発者達が開発しているOSSのため、安心して利用することができます。

# インストール方法
さっそくインストールして試してみましょう。フローエディタ右上のメニューから「パレットの管理」を選択します。

![Screenshot 2024-02-11 at 23.15.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/365fd64f-9e5c-ede8-d584-df748edcc885.png)

その後、パレット内の「ノードを追加」タブをクリックして、検索欄に「@flowfuse/node-red-dashboard」と入力します。すると、検索結果に本ノードが表示されるため「ノードを追加」ボタンをクリックします。

![Screenshot 2024-02-11 at 23.15.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/b72bfa0a-775f-e2f0-ce26-5a1a9aac8192.png)

本当にインストールして良いかの確認ダイアログが表示されるため「追加」をクリックしてインストールします。

![Screenshot 2024-02-11 at 23.16.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/688fde52-a408-10ba-4acc-0aab31040c70.png)

しばらく待つと、パレットに「ダッシュボード2」というカテゴリが作られ、その中に見慣れたダッシュボードのノードが登場します。

<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/f4fb424b-a446-16bd-66fa-72fd746de116.png width=200px>
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/aad079f0-75d9-6018-992a-4524007f80b4.png width=200px>
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/18bb15f0-19bc-1cd1-a1d5-9dbc7484f8da.png width=200px>

# Hello worldを表示するフローを作成
次に、最もシンプルな開発例としてHello worldという文字列を表示するダッシュボード画面を作成します。作成するフローは、injectノードとtextノードをワークスペースにドラック&ドロップしてつなぐだけです。

![Screenshot 2024-02-11 at 20.21.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/100414ee-8e87-35f6-9eb3-88a84eec49e6.png)

injectノードのプロパティ設定画面では、msg.payloadのデータの型として文字列「az」を選択し、文字列「Hello world」を設定しています。

![Screenshot 2024-02-11 at 23.46.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/15507171-fec2-524d-c32a-fea3d5ce648a.png)

# 設定ノードの登録操作
textノードの様なダッシュボードの部品には、以下の4つの設定ノードを登録する必要があります。

- グループ: 画面上の可視化部品をまとめるための設定ノード
- ページ: ダッシュボードの1ページを表す設定ノード
- 画面: ダッシュボード画面のエンドポイントを作る設定ノード
- テーマ: ダッシュボードの配色や余白などのテーマを扱う設定ノード

### (1) グループの設定ノードを追加
まずtextノードの様なダッシュボードの部品のプロパティ設定画面を開きます。すると、その中に「グループ」という項目があり、右側にある鉛筆ボタンをクリックして、グループの設定ノードの作成画面に移ります。

![Screenshot 2024-02-11 at 20.23.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/9dd53408-d1a4-be4c-4fb0-b92e53d6f537.png)

### (2) グループの名前設定と、ページの設定ノードを追加
グループの設定ノードでは、ダッシュボード画面でグループの領域の先頭に表示する名前を設定できるようになっています。もし必要な場合は、ここで名前の欄に入力されている「グループ名」を変更しましょう。

![Screenshot 2024-02-11 at 20.23.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/a3ac11a2-785a-988b-9019-e88a2bab73e7.png)

「ページ」という項目からページの設定ノードを作れる様になっています。前の操作と同じ様に鉛筆マークをクリックします。

### (3) ページの名前設定と、画面の設定ノードを追加
ページのプロパティ設定では、ダッシュボード画面の上に表示されるタイトルを設定できるようになっています。変更したい場合は名前の欄にある「ページ名」を書き換えます。

![Screenshot 2024-02-11 at 20.23.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/385015d3-61b7-7097-481f-f9db142b7355.png)

次に画面とテーマの設定ノードをそれぞれ作ってゆきます。まずは、画面の右側にある鉛筆マークをクリックしてください。

### (4) 画面の設定ノードのプロパティ画面
以下の画面の設定ノードは特に変更することなく、右上の追加ボタンをクリックするだけでOKです。

![Screenshot 2024-02-11 at 20.23.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/7111a1ea-3bb2-8a65-d04b-85ee8fcdce94.png)

### (5) テーマの設定ノードを追加
画面の設定ノードが追加されると、ページの設定ノードのプロパティ画面に戻ります。

![Screenshot 2024-02-11 at 20.23.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/f0b4b88f-c1d9-1f6a-c6bb-0392e23b843b.png)

次に、テーマの設定ノードを作るために、右側の鉛筆ボタンをクリックします。

### (6) テーマの設定ノードのプロパティ画面
テーマの設定では、ダッシュボードの配色や余白のサイズを設定できるようになっています。必要に応じて変更してみましょう。

![Screenshot 2024-02-11 at 20.23.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/60448e6f-fcd1-31c8-4aef-0d5479db6427.png)

設定後は、右上の追加ボタンをクリックします。

### (7) ページの設定ノードのプロパティ画面
すると、画面とテーマの設定ノードが追加されているページの設定ノードのプロパティ設定画面に戻ります。

![Screenshot 2024-02-11 at 20.23.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/d0156fd1-e094-4fae-fcff-ab1dcae25940.png)

このまま右上の追加ボタンをクリックして、ページの設定ノードをグループの設定ノードに追加します。

### (8) グループの設定ノードのプロパティ画面
グループの設定ノードのプロパティ設定画面に戻ります。

![Screenshot 2024-02-11 at 20.24.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/39a4c9e7-6303-4bf3-fe17-0d3c9cb5f397.png)

ここでも右上の追加ボタンをクリックします。

### (9) ダッシュボード部品のノードのプロパティ設定画面
最後に、ダッシュボード部品のノードのプロパティ設定画面に戻るため、右上の完了ボタンをクリックします。

![Screenshot 2024-02-11 at 20.24.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/c4163390-9bca-2f8f-f095-70a6ec026d74.png)

最後にデプロイボタンをクリックしてフローを反映させます。

![Screenshot 2024-02-11 at 20.24.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/57893f20-c7f2-f1da-af00-e9d7e23eb5de.png)

# ダッシュボードの動作確認
上手くフローが動作するか確認してみましょう。injectノードの左側のボタンをクリックして、Hello worldという文字列をtextノードに送ります。

![Screenshot 2024-02-11 at 21.26.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/0f98033d-5e76-3cbf-7111-91aaf51cca2b.png)

次に、右側のサイドエリアにあるダッシュボード2.0タブを表示して、その中にある「ダッシュボードを開く」ボタンをクリックしましょう。すると、ダッシュボードの画面に遷移します。

![Screenshot 2024-02-11 at 20.27.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/9756eabc-782f-fa16-0e89-39a1c58eb6ca.png)

上手くフローが動作していれば、Hello worldという文字列が表示されていることでしょう。

# まとめ
本記事では、文字列を表示するだけのtextノードを用いて、Node-REDダッシュボード2.0の使い方を紹介しました。これ以外のノードもほぼ従来のNode-REDダッシュボードにあったノードと同じように扱うことができます。Node-REDダッシュボード2.0は2024年1月に正式リリースされ、製品やサービスでの利用もできるようになっています。今後、こちらのダッシュボードがNode-REDコミュニティの標準となってゆくでしょう。

<!--
# 従来のダッシュボードとの比較 

<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/4652a66b-b085-5526-1f78-ac495616e8df.png width=200px>
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/e59dcc6a-fe0f-5417-c862-598abc1d41e3.png width=200px>
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/c3efd4c0-9191-33af-9a3e-51fd38c56baa.png width=200px>

|  # |     部品名     |          説明          | ダッシュボード1.0 | ダッシュボード2.0 |
|:--:|---------------|-----------------------|:---------------:|:--------------:|
|  1 | button        | ボタン              | ⚪︎              | ⚪︎             | 
|  2 | dropdown      | ドロップダウンメニュー | ⚪︎              | ⚪︎             | 
|  3 | switch        | ON/OFF切り替えUI | ⚪︎              | ⚪︎             | 
|  4 | slider        | スライドバー | ⚪︎              | ⚪︎             | 
|  5 | numeric       | スライドバー | ⚪︎              |             | 
|  6 | text input    | テキスト入力UI | ⚪︎              | ⚪︎             | 
|  7 | date picker   | スライドバー | ⚪︎              |              | 
|  8 | colour picker | スライドバー | ⚪︎              |             | 
|  9 | form          | 入力フォーム   | ⚪︎              | ⚪︎             | 
| 10 | text | テキスト表示 | ⚪︎              | ⚪︎             | 
| 11 | gauge | ゲージメータ | ⚪︎              | ⚪︎             | 
| 12 | chart | グラフ | ⚪︎              | ⚪︎             | 
| 13 | audio out | スライドバー | ⚪︎              |              | 
| 14 | notification | 通知ダイアログ | ⚪︎              | ⚪︎             | 
| 15 | ui control  | | ⚪︎              | ⚪︎             | 
| 16 | template | コードで記述したUI表示 | ⚪︎              | ⚪︎             | 
| 17 | radio group | ラジオボタン | | ⚪︎ |
| 18 | table | 表 | | ⚪︎ |
| 19 | markdown | マークダウン描画UI | | ⚪︎ |
| 20 | event | hoge | | ⚪︎ |
-->