5
1

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 1 year has passed since last update.

enebularAdvent Calendar 2021

Day 4

enebularのFreeプランに追加された機能(プライベートノード機能)を試してみた

Last updated at Posted at 2021-12-03

はじめに

これまで有料版で提供されていた機能が2021年9月21日に無料版でも利用できるようになりました!

  • カスタム作成ノードを非公開で扱うためのプライベートノード機能
  • ファイルのデバイスへの配信機能
  • AIモデルのデバイスへの配信機能(β版)

今回はプライベートノード機能を試してみました。

プライベートノード機能とは

独自に作成したNode-REDのノードをnpmに公開することなく使用することができます。
作成したノードは販売することもできるとのことですが、こちらは試していません。

公式ドキュメントはこちら。

# プライベートノード機能を利用する流れ

Node-REDのノードを公開する流れと比較します。

スクリーンショット 2021-11-28 10.49.01.png

左側はNode-REDのノードを公開して利用する流れで、右側はenebularでプライベートノードを利用する流れです。
Node-REDのノードを開発する部分は変わりませんが、開発したノードを直ぐに利用開始できるのがメリットです。

プライベートノードのサンプル

プライベートノードを直ぐに試してみたい方へサンプルを用意しました。

プライベートノードを登録する手順

準備

なるべくWindows、macOSで共通の手順になるように説明します。

1. Node.jsのインストール

npmコマンドを利用できるようにします。
Node.jsのホームページへアクセスして該当するインストーラーをダウンロードしてインストールします。

node.jpg

2. npmコマンドの実行確認

npmコマンドを実行できるか確認します。

macOSの場合
ターミナルを開きます。

npm -v
6.14.10

Windows
コマンドプロンプトを開きます。

npm -v
8.1.0

3. サンプルノードのダウンロード

githubのページからZIPファイルでダウンロードする場合

github_zip.jpg

gitコマンドでダウンロードする場合

git clone https://github.com/kitazaki/enebular-privatenode-contrib-test01

github_git.png

4. パッケージファイルの作成

npm packコマンドを実行してパッケージファイルを作成します。
ZIPファイルでダウンロードした場合、ダウンロードしたサンプルノードを解凍してフォルダの中でnpm packコマンドを実行します。
gitコマンドでダウンロードした場合、ダウンロードしたフォルダの中へ移動してnpm packコマンドを実行します。
コマンドが正常に完了すると、enebular-privatenode-contrib-test01-0.0.1.tgzというファイルが作成されます。

npm pack

macOSの実行例

npm_macos.jpg

Windowsの実行例

npm_windows.jpg

5. プライベートノードの登録

enebular.comへアクセスしてログインします。(初めての方はenebular.comでアカウントを作成します。)
次にプロジェクトを選択します。(初めての方はプロジェクトを作成します。)

project.png

左側のメニューから「Private Nodes」を選択し、右下の「+」ボタンを押します。

regist_1.png

手順4.で作成したパッケージファイル(enebular-privatenode-contrib-test01-0.0.1.tgz)を赤枠の中にドラッグ&ドロップします。

regist_2.png

右下の「Upload」ボタンを押します。

regist_3.png

正常に完了するとプライベートノードが一覧に表示されます。

regist_4.png

6. プライベートノードの使用

最後にフローの中でプライベートノードを使用します。
左側のメニューから「Flows」を選択し、フローを開きます。(初めての方は右下の「+」ボタンを押してフローを作成します。)

flow_1.png

今回登録したプライベートノード(test01ノード)は左側のパレットの分析カテゴリにあります。

flow_2.png

injectノード、test01ノード、debugノードをつなげてデプロイボタンを押します。

flow_3.png

injectノードを実行すると、右側のデバッグ画面に「enebularサイコー」と表示されます。

flow_4.png

サンプルコードの説明

プライベートノードは3つのファイル(package.json、test01.html、test01.js)から構成されます。
サンプルコードは入力の値に関わらず、「enebularサイコー」という文字列を出力するノードです。
サンプルコードを書き換えて、入力の値によって出力の値を変えることも可能です。

package.jsonにはnode-redセクションを記述する必要があります。

package.json
{
  "name": "enebular-privatenode-contrib-test01",
  "version": "0.0.1",
  "description": "This is a test node.",
  "main": "test01.js",
  "scripts": {},
  "repository": {
    "type": "git",
    "url": "git+https://github.com/kitazaki/enebular-privatenode-contrib-test01.git"
  },
  "keywords": [
    "node-red",
    "kitazaki"
  ],
  "dependencies": {
  },
  "author": "kitazaki",
  "license": "Apache-2.0",
  "bugs": {
    "url": "https://github.com/kitazaki/enebular-privatenode-contrib-test01/issues"
  },
  "homepage": "https://github.com/kitazaki/enebular-privatenode-contrib-test01#readme",
  "node-red": {
    "nodes": {
      "test01": "test01.js"
    }
  }
}

package.jsonのnode-redセクションで記載されたtest01.jsファイルにNode.jsモジュールを記述します。

test01.js
module.exports = function(RED) {
	function test01(config) {
		RED.nodes.createNode(this,config);
		var node = this;
		node.on('input', async function(msg) {
			const mes = msg.payload;
		        msg.payload = 'enebularサイコー';
            		node.send(msg);
        	});
    	}
	RED.nodes.registerType('test01', test01);
}

test01.htmlにプライベートノードに関する3つの情報(ノード定義、編集テンプレート、ヘルプテキスト)を記述する必要があります。

test01.html
<script type="text/javascript">
	RED.nodes.registerType('test01', 
		{
			category: 'analysis-function', 
			color: '#E6E0F8',
			defaults:
			{
				name: {value: ""}
			},
			inputs: 1, 
			outputs: 1, 
			icon: 'arrow-in.png', 
			label: function()
			{
				return this.name || "test01"
			},
		});
</script>

<script type="text/x-red" data-template-name="test01">
	<div class="form-row">
		<label for="node-config-input-name"><i class="icon-tag"></i>name</label>
		<input type="text" id="node-input-name" placeholder="name">
	</div>
</script>

<script type="text/x-red" data-help-name="test01">
	<p>
		output is test01 <br>
	</p>
</script>

さいごに

Node-REDへカスタムノードを公開せずに、プロジェクト内でプライベートノードを共有することができます。
個人用途ではカスタムノードを公開しても問題ありませんが、業務用途では機密情報や知財保護の観点で便利だと思います。
それでは、良きenebularライフを!

5
1
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
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?