enebular のデータストア機能を初めてさわってみる（ひとまず保存を試す）【enebular】

この記事は、「[enebular Advent Calendar 2023](https://qiita.com/advent-calendar/2023/enebular)」の 18日目の記事です。

## 今回の内容
今回の記事の内容は、つい先日のイベント「[忘年enebular meetup：最近の成果のシェア会](https://enebular.connpass.com/event/303475/)」に参加した時にも話を聞いた「enebular のデータストア機能」に関する内容です。

【↓イベントの動画アーカイブ】
●お元気ですか？ 忘年enebular meetup：最近の成果のシェア会 - YouTube
https://www.youtube.com/watch?v=1MvekdxH5w4

## enebular について
enebular については、以下の公式の説明をご覧ください。

●enebularについて | enebular - あらゆるデバイスとクラウドサービスを「つなぐ」、IoTのためのデータ連携プラットフォーム
https://www.enebular.com/ja/about/

ノードベースのビジュアルプログラミングを使い、オンラインでの開発などが行える環境です。

### データストア機能について
今回扱うデータストア機能は、最近リリースされた新機能です。

公式の説明は以下になりますが、「enebular でデータ保存を扱うための機能」で、「外部のクラウドサービスと連携させることなく、enebular単体でデータ保存が扱える」というものです（それを、フリープランでも利用可能）。

●データストア機能のご紹介 | enebular blog
　https://blog.enebular.com/function/data-store/

## データストア機能を試す
早速、試していきます。

新規にプロジェクトを作成し、フローの編集画面を開いていきました。
そうすると、自動でデータストア機能を使う準備ができているようでした。

https://twitter.com/youtoy/status/1736204183370620946

### 公式の概要説明
ここで、公式ブログの概要説明の記事があるので、ざっと見てみます。

- [データストアの概要 · enebular](https://docs.enebular.com/ja/datastore/overview)
- [データストア機能のご紹介（その2） | enebular blog](https://blog.enebular.com/function/data-store-2/)

以下の準備の部分は、プロジェクトの新規作成をしたところ、上で書いたように自動で対応されていました。
![準備](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/55c0073b-3ffa-547a-88fc-977499e6dd1d.png)

その次は、プロジェクトの画面から「左メニューの データストア をクリックして...」という手順が書いてありますが、それをやらずにフローを実行してみるとどうなるか気になったので、その方向で試してみます。

### お試し用の簡単なフローを作成
「inject」ノードを使って保存を試してみようと思って、まずは以下のフローを作ってみました。まずは、配置してつなげてみただけです。

![フロー1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/80798a5c-6386-b3a9-c0cd-efbd8b5d72a1.png)

#### DSデータ保存 ノードでコンフィグ作成
明らかに DSデータ保存 ノードで何かしないといけない表示（アイコンでの表示）が出ているので、プロパティを開いてみて、新規にコンフィグを作成してみます。
設定はデフォルトのまま進めてみます。

https://twitter.com/youtoy/status/1736207934600991006

以下は、コンフィグ作成後の画面と、その画面の下のほうにある「出力」タブを選択してみた時の表示です。

![コンフィグ作成後の画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/bfe8157b-cdeb-f378-d9c6-8ee836d69ead.png)

![「出力」タブを選択してみた時の表示](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/65b54d64-573c-57da-a3e7-845bbac1c5cd.png)

#### フローにノードを追加
出力が `msg.payload` に出てくるようなので、デバッグ出力のノードを追加しました。

![ノード追加後のフロー](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/b0a7c19f-30e1-a497-0b60-736476cdd487.png)

#### フローをいったん実行してみる
上で書いていた公式の記事の流れを見ると、このままだとうまくいかなそうですが、お試しのためにフローをいったん実行してみます。そして、想定通りエラーが出ました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/b39f8adc-b234-c816-eec0-71a27721045f.png)

### データストアの設定をする
素直に、プロジェクトの画面から「データストアの設定」を行っていきます。

![データストアの設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/b49e4d70-f72f-761f-d4fc-9b99613bcf57.png)

[公式記事「データストア機能のご紹介」](https://blog.enebular.com/function/data-store/)と同じ手順で、データストア用のテーブルを作ります。

設定は、以下のとおりデフォルトのままにしました。

![テーブル作成](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/178eb175-a5df-499e-948f-fceffbbb8ba3.png)

テーブル作成後の画面は以下です。無事に作成ができたようです。

![テーブル作成後](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/a9ee4eb9-4105-5227-a5df-79ca6afaec19.png)

ここで、「設定」タブを選び、「テーブルID」を確認しました。

![「テーブルID」を確認](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/a51db7e2-da5b-69a9-1588-659ffc912527.png)

### フローを修正する
フローの作成に戻ります。
データストア作成前から編集していたフローで、後から作成したデータストアを利用するとうまくいかないようだったので、フローの編集を開き直します。

そして、上で掲載した公式記事の内容（以下の内容）を見て、自分が作っているフローの各ノードの設定を見なおしてみます。具体的には以下のとおりです。

#### フロー全体
![フロー全体](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/c91b227f-7248-6ffb-dc37-00c2d20c7a4a.png)

#### 「inject」ノード
![「inject」ノード](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/78eae236-f476-fd58-af43-247173416684.png)

#### 「template」ノード
![「template」ノード](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/f97e6773-922b-284b-9357-5eb14b0169fa.png)

```json:テンプレートの内容
{
    "label": "{{name}}",
    "ts": {{payload}},
    "temp": {{payload}}
}
```

#### 「DSデータ保存」ノード

![「DSデータ保存」ノード -1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/97a38f29-5f78-b2ac-6490-91f33ef2045c.png)

※ 上記の下のタブを「出力」タブにした時の画面
![「DSデータ保存」ノード -2](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/1c0ac9ac-5491-7c32-7dd1-2623901289c0.png)

※ コンフィグの画面
![「DSデータ保存」ノード -2](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/4ff45655-cd05-5c50-7826-ea6b7938232b.png)

### フローを実行
それでは、データの保存を試してから、結果を確認してみます。

右上の保存ボタンを押してデプロイをして、それから「inject」ノードを 3回ほど押してみました。

デバッグの出力を見た感じだとエラーも出てないので、プロジェクトの画面から、保存がうまくいったかを確認してみます。

#### 保存結果の確認
プロジェクトの画面で、左メニューの「データストア」を選択します。
そして、以下のリストに出ているテーブルを選択します。

![プロジェクトの画面で、左メニューの「データストア」を選択した後](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/49eb4599-6e4e-a1bb-791c-f25a8d6399a6.png)

その後の画面で、3回の操作を行った際の、データ保存が成功していることを確認できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/5026aa25-acb5-b390-3e42-b1c285c5d390.png)

## おわりに
今回、enebular のデータストア機能を初めてさわってみました。外部サービスを用いなくても、データ保存・取得が行えるようになったのは、便利で良さそうです。

また引き続き、この新機能も活用していこうと思います。

### 関連記事
本文では扱ってない、データストア関連の記事をいくつか掲載してみます。

●データストアの管理 · enebular
　https://docs.enebular.com/ja/datastore/managedatastore

●enebularのデータストア機能を試してみた #node-red - Qiita
　https://qiita.com/kitazaki/items/8c539a9211bd3c92df63