はじめに
これまで有料版で提供されていた機能が2021年9月21日に無料版でも利用できるようになりました!
- カスタム作成ノードを非公開で扱うためのプライベートノード機能
- ファイルのデバイスへの配信機能
- AIモデルのデバイスへの配信機能(β版)
今回はプライベートノード機能を試してみました。
プライベートノード機能とは
独自に作成したNode-REDのノードをnpmに公開することなく使用することができます。
作成したノードは販売することもできるとのことですが、こちらは試していません。
公式ドキュメントはこちら。
# プライベートノード機能を利用する流れ
Node-REDのノードを公開する流れと比較します。
左側はNode-REDのノードを公開して利用する流れで、右側はenebularでプライベートノードを利用する流れです。
Node-REDのノードを開発する部分は変わりませんが、開発したノードを直ぐに利用開始できるのがメリットです。
プライベートノードのサンプル
プライベートノードを直ぐに試してみたい方へサンプルを用意しました。
プライベートノードを登録する手順
準備
なるべくWindows、macOSで共通の手順になるように説明します。
1. Node.jsのインストール
npmコマンドを利用できるようにします。
Node.jsのホームページへアクセスして該当するインストーラーをダウンロードしてインストールします。
2. npmコマンドの実行確認
npmコマンドを実行できるか確認します。
macOSの場合
ターミナルを開きます。
npm -v
6.14.10
Windows
コマンドプロンプトを開きます。
npm -v
8.1.0
3. サンプルノードのダウンロード
githubのページからZIPファイルでダウンロードする場合
gitコマンドでダウンロードする場合
git clone https://github.com/kitazaki/enebular-privatenode-contrib-test01
4. パッケージファイルの作成
npm packコマンドを実行してパッケージファイルを作成します。
ZIPファイルでダウンロードした場合、ダウンロードしたサンプルノードを解凍してフォルダの中でnpm packコマンドを実行します。
gitコマンドでダウンロードした場合、ダウンロードしたフォルダの中へ移動してnpm packコマンドを実行します。
コマンドが正常に完了すると、enebular-privatenode-contrib-test01-0.0.1.tgzというファイルが作成されます。
npm pack
macOSの実行例
Windowsの実行例
5. プライベートノードの登録
enebular.comへアクセスしてログインします。(初めての方はenebular.comでアカウントを作成します。)
次にプロジェクトを選択します。(初めての方はプロジェクトを作成します。)
左側のメニューから「Private Nodes」を選択し、右下の「+」ボタンを押します。
手順4.で作成したパッケージファイル(enebular-privatenode-contrib-test01-0.0.1.tgz)を赤枠の中にドラッグ&ドロップします。
右下の「Upload」ボタンを押します。
正常に完了するとプライベートノードが一覧に表示されます。
6. プライベートノードの使用
最後にフローの中でプライベートノードを使用します。
左側のメニューから「Flows」を選択し、フローを開きます。(初めての方は右下の「+」ボタンを押してフローを作成します。)
今回登録したプライベートノード(test01ノード)は左側のパレットの分析カテゴリにあります。
injectノード、test01ノード、debugノードをつなげてデプロイボタンを押します。
injectノードを実行すると、右側のデバッグ画面に「enebularサイコー」と表示されます。
サンプルコードの説明
プライベートノードは3つのファイル(package.json、test01.html、test01.js)から構成されます。
サンプルコードは入力の値に関わらず、「enebularサイコー」という文字列を出力するノードです。
サンプルコードを書き換えて、入力の値によって出力の値を変えることも可能です。
package.jsonにはnode-redセクションを記述する必要があります。
{
"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モジュールを記述します。
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つの情報(ノード定義、編集テンプレート、ヘルプテキスト)を記述する必要があります。
<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ライフを!