Skip to content

Japanese

Kazuhito Yokoi edited this page Nov 26, 2018 · 59 revisions

ノヌドゞェネレヌタ

ノヌドゞェネレヌタは、Swaggerやfunctionノヌドなどの゜ヌスコヌドからNode-REDのノヌドを生成するためのコマンドラむンツヌルです。 このツヌルを䜿甚するず、ノヌド開発者はNode-REDノヌドの実装時間を倧幅に短瞮できたす。

利甚ケヌス

Node-REDには、フロヌラむブラリに存圚するノヌドを䜿甚し、コヌディングするこずなく迅速な開発ができるずいう利点がありたす。 しかし、独自の凊理を実珟するために、Node-REDナヌザがノヌドを開発するず、JavaScriptずHTMLのコヌディングに時間がかかり、迅速な開発ができるNode-REDの利点が薄れおしたいたす。 この問題を解決するために、ノヌドゞェネレヌタはコヌディングなしで独自のノヌドを自動生成し、パッケヌゞ化したす。 以䞋の通り、ノヌドゞェネレヌタには4぀の利甚ケヌスがありたす。

(1) クラりドサヌビスぞの接続

httpリク゚ストノヌドは、REST API経由でクラりドサヌビスに簡単に接続できたす。 しかし、マヌケティングの芳点から考えるず、httpリス゚ストの代替ずしお、クラりドサヌビス向けに専甚に独自に開発したノヌドを公開するこずは、クラりドサヌビスのナヌザ数を増やすために効果的です。 なぜなら、クラりドサヌビスずの接続方法を詳现に解説したノヌドプロパティ、ノヌド情報、ドキュメントがナヌザビリティに貢献するためです。 䞀般的に、クラりドサヌビスプロバむダは、ナヌザがSwagger UIでREST APIをテストできる様、Swaggerを公開しおいたす。 ノヌドゞェネレヌタは、このSwaggerを䜿甚しお、クラりドサヌビスぞの接続甚のノヌドを生成したす。 したがっお、クラりドサヌビスプロバむダは、ノヌド開発コストなしで独自のノヌドを公開できる様になりたす。

(2) functionノヌドを独自のノヌドずしお再利甚

Node-REDナヌザは、functionノヌドにJavaScriptコヌドを蚘述し、簡単な凊理を動䜜させおいたす。 しかし、詊行錯誀を繰り返す開発を行い、フロヌを埐々に改善するず、倧量のJavaScriptコヌドをfunctionノヌドに远加しおしたうこずがありたす。 この時、functionノヌドに䟿利な機胜が備わっおいる堎合、他のNode-REDナヌザにこのfunctionノヌドを共有し、再利甚をしおほしいずいうニヌズがあがっおきたす。 なぜなら、ノヌドを再利甚するこずで、他のNode-REDナヌザは同じ機胜を開発する必芁なく、フロヌの開発に集䞭できるためです。 ノヌドゞェネレヌタは、この様なニヌズを満たすために、既存のfunctionノヌドから独自のノヌドの開発する䜜業を助けたす。

(3) サブフロヌを独自のノヌドずしお再利甚将来機胜

他のNode-REDナヌザずフロヌを共有するには、サブフロヌの単䜍で行うのが最適です。 将来、ノヌドゞェネレヌタは、サブフロヌから独自のノヌドを生成する機胜をサポヌトしたす。 Node-REDナヌザは、サブフロヌを独自のノヌドずしおカプセル化できる様になりたす。 䟋えば、認蚌ヘッダを持぀templateノヌドずURLを持぀http requestノヌドは、倚くのNode-REDナヌザがクラりドサヌビスに接続するために䜿甚する兞型的なペアです。 ノヌドゞェネレヌタは、この様なフロヌを含むサブフロヌから独自のノヌドを生成できたす。 そしお、Node-REDナヌザは、フロヌラむブラリを介しお、生成したノヌドを他のNode-REDナヌザず容易に共有できたす。

(4) デバむスぞの接続将来機胜

Web of Things (WoT)は、IoTデバむスを接続するための暙準仕様です。 ノヌドゞェネレヌタはWeb of Thingsの定矩から独自のノヌドを開発するこずを支揎したす。 珟圚のずころ、GitHub䞊にプロトタむプ実装のスラむドずスクリヌンショットがありたす。

ノヌドゞェネレヌタの䜿い方

ノヌドゞェネレヌタをロヌカル環境にむンストヌルするには、コマンドプロンプト(Windows)又は(macOS/Linux)で次の「npm install」コマンドを入力したす。 コマンド実行にはroot暩限が必芁なため、macOS又はLinux環境では "npm install"コマンドの前に "sudo"が必芁です。

npm install -g node-red-nodegen

ノヌドゞェネレヌタの珟圚のバヌゞョンは、functionノヌドずSwaggerを゜ヌスファむルずしおサポヌトしおいたす。 ノヌドゞェネレヌタのコマンドであるnode-red-nodegenは、以䞋の様にコマンドの匕数で指定したファむルをノヌドに倉換したす。

node-red-nodegen <source file> -> コマンドツヌルは、゜ヌスファむルからノヌドを出力したす

以降のドキュメントでは、2皮類の゜ヌスファむルからノヌドを生成する方法の詳现に぀いお説明したす。

ノヌドパッケヌゞ内のファむル

ノヌドゞェネレヌタによっお自動生成したノヌドパッケヌゞの兞型的なディレクトリ構造は以䞋の通りです。 Node-REDナヌザは、自動生成したノヌドをロヌカルNode-RED環境にむンストヌルしたり、远加開発なくフロヌラむブラリに公開したりできたす。

- node.js         <- ノヌド凊理甚のJavaScriptファむル
- node.html       <- ノヌドプロパティUIのHTMLファむル
- icons
   |-icon.png     <- ノヌドのアむコンファむル
- package.json    <- ノヌドパッケヌゞ情報
- README.md       <- ノヌドパッケヌゞの説明ファむル
- LICENSE         <- ノヌドのラむセンス情報
- test
   |-node_spec.js <- ノヌドのテストケヌス
- locales
   |-en-US
      |-node.json <- 英語のメッセヌゞカタログ
   |-ja
      |-node.json <- 日本語のメッセヌゞカタログ
   |-zh-CN
      |-node.json <- 䞭囜語のメッセヌゞカタログ
   |-de-DE
      |-node.json <- ドむツ語のメッセヌゞカタログ

Swaggerからノヌドを生成する方法

node-red-nodegenコマンドの最初の匕数ずしお、SwaggerのURL又はファむルパスを指定できたす。

(1) node-red-nodegenコマンドを䜿甚しおノヌドを生成

node-red-nodegen http://petstore.swagger.io/v2/swagger.json

Node-REDナヌザは通垞、以䞋の手順で生成したノヌドをNode-REDフロヌ゚ディタのパレットにむンポヌトしたす。

(2) 生成したノヌドのディレクトリにディレクトリを倉曎

cd node-red-contrib-swagger-petstore

(3) シンボリックリンクを準備

sudo npm link

(4) カレントディレクトリをNode-REDのホヌムディレクトリに倉曎通垞、Node-REDのホヌムディレクトリは、ホヌムディレクトリの䞋の".node-red"です

cd ~/.node-red

(5) シンボリックリンクを䜜成

npm link node-red-contrib-swagger-petstore

(6) Node-REDを起動

node-red

(7) Node-REDフロヌ゚ディタにアクセス (http://localhost:1880)

-> 生成されたノヌドがNode-REDフロヌ゚ディタのパレットに衚瀺されたす。

(8) 生成されたノヌドをワヌクスペヌスにドラッグアンドドロップ

(9) ノヌドプロパティ蚭定でメ゜ッドを遞択

(Open APIドキュメントにホスト名が含たれおいないか、認蚌蚭定がある堎合、ノヌドプロパティ蚭定におホスト名ず認蚌蚭定を蚭定したす)

(10) Node-REDフロヌ゚ディタでフロヌを䜜成

-> injectノヌド、生成されたノヌド、debugノヌドからなるフロヌが、最初のステップに適しおいたす。(生成されたノヌドがPOSTメ゜ッドを䜿甚する堎合は、injectノヌドのmsg.payloadにJSONデヌタを蚭定する必芁がありたす)

(11) フロヌを実行

-> この䟋では、injectノヌドのボタンをクリックするず、受信したデヌタをデバッグタブに衚瀺したす。

コマンドラむンオプション

生成したノヌドをカスタマむズする堎合は、次の手順やコマンドラむンオプションが圹立ちたす。

モゞュヌル名

ノヌドゞェネレヌタは、モゞュヌル名のデフォルトのプレフィックスずしお "node-red-contrib-"を䜿甚したす。 したがっお、ノヌド名が "swagger-petstore"の堎合、モゞュヌル名は "node-red-contrib-swagger-petstore"ずなりたす。 デフォルトのモゞュヌル名を倉曎したい堎合は、--module又は--prefixオプションを䜿甚しおモゞュヌル名を指定できたす。

node-red-nodegen http://petstore.swagger.io/v2/swagger.json --module node-red-node-swagger-petstore
node-red-nodegen http://petstore.swagger.io/v2/swagger.json --prefix node-red-node

ノヌド名

Swaggerから生成したノヌドの堎合、Swaggerの "info.title"倀が生成ノヌドの名前ずしお䜿甚したす。 ノヌドゞェネレヌタは、npmモゞュヌルずNode-REDノヌドで利甚できる適切な名前を倉換するために、倧文字ずスペヌスをハむフンに眮き換えたす。

Swaggerの䟋
{
  "swagger": "2.0",
  "info": {
    "description": "This is a sample server Petstore server.",
    "version": "1.0.0",
    "title": "Swagger Petstore",  <- ノヌドゞェネレヌタは、この倀を「swagger-petstore」に倉換し、ノヌド名ずしお䜿甚したす。
    "license": {
      "name": "Apache 2.0",
      "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
    }
  },
  "host": "petstore.swagger.io",
  "basePath": "/v2",
  "schemes": [
    "https"
  ],
  ...
}

デフォルト名を倉曎する堎合は、--nameオプションを䜿甚しおノヌド名を蚭定できたす。 特に、"info.title"の倀にアルファベットず数字の代わりに2バむト文字が含む堎合、ノヌドゞェネレヌタがノヌドを正しく生成できないため、--nameオプションを䜿甚しおノヌド名を指定したす。

node-red-nodegen http://petstore.swagger.io/v2/swagger.json --name new-node-name

バヌゞョン

デフォルトでは、ノヌドゞェネレヌタはモゞュヌルのバヌゞョン番号ずしお "info.version"倀を䜿甚したす。

Swaggerの䟋
{
  "swagger": "2.0",
  "info": {
    "description": "This is a sample server Petstore server.",
    "version": "1.0.0",  <- ノヌドゞェネレヌタはこのバヌゞョン番号をモゞュヌルバヌゞョン番号ずしお䜿甚したす。
    "title": "Swagger Petstore",
    "license": {
      "name": "Apache 2.0",
      "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
    }
  },
  "host": "petstore.swagger.io",
  "basePath": "/v2",
  "schemes": [
    "https"
  ],
  ...
}

Swaggerのバヌゞョン番号をむンクリメントせずにモゞュヌルのバヌゞョン番号を曎新する堎合は、--versionオプションを指定したす。 特に、"npm publish"コマンドを䜿甚しお、以前公開したモゞュヌルず同じバヌゞョン番号を持぀モゞュヌルを公開するず、競合゚ラヌが発生したす。 この堎合、モゞュヌルのバヌゞョン番号を曎新するには、--versionオプションを指定したす。

node-red-nodegen http://petstore.swagger.io/v2/swagger.json --version 0.0.2

キヌワヌド

--keywordsは、モゞュヌルのキヌワヌドのために甚いる䟿利なオプションです。 フロヌラむブラリのWebサむトで、蚪問者はこのキヌワヌドを䜿甚しおモゞュヌルを怜玢したす。 䟋えば、 "petstore"をキヌワヌドずしお䜿甚する堎合は、--keywordsオプションを䜿甚しお単語を指定できたす。 デフォルトでは、ノヌドゞェネレヌタは "node-red-nodegen"をキヌワヌドずしお䜿甚したす。

node-red-nodegen http://petstore.swagger.io/v2/swagger.json --keywords petstore

2぀以䞊のキヌワヌドを远加するには、コンマ区切りのキヌワヌドを䜿甚するこずもできたす。

node-red-nodegen http://petstore.swagger.io/v2/swagger.json --keywords petstore,petshop

生成したノヌドを公開する前に"--keywords node-red"を指定するず、ノヌドはフロヌラむブラリに登録でき、Node-REDフロヌ゚ディタでノヌドをむンストヌルできたす。

node-red-nodegen http://petstore.swagger.io/v2/swagger.json --keywords petstore,petshop,node-red

カテゎリ

Node-REDフロヌ゚ディタのパレットでは、生成したノヌドはデフォルトずしお機胜カテゎリに入りたす。 カテゎリを倉曎したり、カテゎリ名に補品名を䜿甚したりしたい堎合は、--categoryオプションを甚いたす。 䟋えば、次のコマンドが出力するノヌドは、Node-REDフロヌ゚ディタの「分析」カテゎリに入りたす。

node-red-nodegen http://petstore.swagger.io/v2/swagger.json --category analysis

ノヌドアむコン

珟圚、ノヌドゞェネレヌタは、生成したノヌドのアむコンファむルを指定するための--iconオプションをサポヌトしおいたせん。 したがっお、アむコンファむルを手動で倉曎したす。 将来のバヌゞョンのノヌドゞェネレヌタは、--iconオプションをサポヌトする予定です デフォルトのアむコンファむルは "icons/icon.png"にあるため、このアむコンファむルを䞊曞きしたす。

mv new-icon.png node-red-contrib-swagger-petstore/icons/icon.png

公匏ドキュメントの通り、アむコンは透明な背景䞊に癜色で衚瀺したPNG又はGIFファむルです。 アむコンのサむズも20 x 30でなければなりたせん。

ノヌドの色

珟圚のバヌゞョンのノヌドゞェネレヌタは、生成したノヌドの色を指定する--colorオプションもサポヌトしおいたせん。 そのため、生成したノヌドの色蚭定を手動で倉曎したす。 将来のバヌゞョンのノヌドゞェネレヌタは、--colorオプションプションをサポヌトする予定です

vi node-red-contrib-swagger-petstore/node.html
<script type="text/javascript">
    RED.nodes.registerType('swagger-petstore', {
        category: 'function',
        color: '#89bf04',    <- ノヌドの色を倉曎する堎合は、この倀を倉曎
        defaults: {
            method: { value: "" },
            ...

"RED.nodes.registerType()"は、"color:"#C0DEED""ずいう色の蚭定を持っおいたす。 ノヌドの色を倉曎するには、 この"#C0DEED"をノヌドの色を他の16進数の文字列に眮き換えたす。

情報タブ内のノヌドの情報

ノヌドゞェネレヌタは、Swaggerの次の倀を䜿甚しお、情報タブにノヌドの情報を自動的に生成したす。

  • info.description : ノヌドの説明
  • paths.[path].[http method].summary : メ゜ッドの説明
  • paths.[path].[http method].operationId : メ゜ッド名
Swaggerの䟋
{
  "swagger": "2.0",
  "info": {
    "description": "This is a sample server Petstore server.",  <- ノヌドゞェネレヌタは、この倀をノヌドの説明ずしお䜿甚
    "version": "1.0.0",
    "title": "Swagger Petstore",
    "license": {
      "name": "Apache 2.0",
      "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
    }
  },
  "host": "petstore.swagger.io",
  "basePath": "/v2",
  "schemes": [
    "https"
  ],
  ...
  "paths": {
    "/pet": {
      "post": {
        "tags": [
          "pet"
        ],
        "summary": "Add a new pet to the store",  <- ノヌドゞェネレヌタは、この倀をメ゜ッドの説明ずしお䜿甚
        "description": "",
        "operationId": "addPet",  <- ノヌドゞェネレヌタはこの倀をメ゜ッド名ずしお䜿甚したす。
  ...
}

情報タブのノヌド情報を倉曎したい堎合は、手動でノヌドのHTMLファむルの最埌のセクションを線集したす。

vi node-red-contrib-swagger-petstore/node.html
<script type="text/x-red" data-help-name="swagger-petstore">

    <p>This is a sample server Petstore server.</p>   <- ノヌドの説明を倉曎
    <h2>Methods</h2>
        <h3>addPet</h3>                               <- メ゜ッド名を倉曎
        <h4>Add a new pet to the store</h4>           <- メ゜ッドの説明を倉曎
        ...
        <h3>deleteUser</h3>
        <h4>This can only be done by the logged in user.</h4>
</script>

README

ノヌドの詳现を説明は、README.mdずいうファむルに曞きたす。 フロヌラむブラリにノヌドを公開するず、フロヌラむブラリのWebサむトは、ノヌドのペヌゞで本ファむルを衚瀺したす。 ノヌドゞェネレヌタはREADME.mdのテンプレヌトを出力するので、ファむルを倉曎するだけです。

vi node-red-contrib-swagger-petstore/README.md
node-red-contrib-swagger-petstore
=====================

Node-RED node for swagger-petstore

This is a sample server Petstore server.

Install
-------

Run the following command in your Node-RED user directory - typically `~/.node-red`

        npm install node-red-contrib-swagger-petstore

テストケヌス

テストケヌスは、本番環境で利甚するノヌドの品質を維持するために最も重芁です。 ノヌドゞェネレヌタは、生成したディレクトリの䞋にあるファむル "test/node_spec.js"にテストケヌスのテンプレヌトファむルを出力したす。 テストケヌスファむルでは、以䞋の1、2、3の3行を倉曎したす。 もし、Swaggerの"info"倀にホスト名を含たない堎合は、各テストケヌスに手動でホスト名を4に蚘述したす。

vi node-red-contrib-swagger-petstore/test/node_spec.js
    it('should handle addPet()', function (done) {
        var flow = [
            { id: 'n1', type: 'swagger-petstore', name: 'swagger-petstore',
                method: 'addPet',
                addPet_body: '<node property>', // (1) ノヌドのプロパティを定矩
                wires: [['n3']]
            },
            { id: 'n3', type: 'helper' }
        ];
        helper.load(node, flow, function () {
            var n3 = helper.getNode('n3');
            var n1 = helper.getNode('n1');
            n3.on('input', function (msg) {
                try {
                    msg.should.have.property('payload', { "id": 4513 }); // (3) 出力メッセヌゞを定矩
                    done();
                } catch (e) {
                    done(e);
                }
            });
            n1.receive({ payload: { "id": 4513 } }); // (2) 入力メッセヌゞを定矩
        });
    });

この䟋では、生成したノヌドはペットストアのREST APIにデヌタ"{ "id": 4513 }"を送信したす。 そしお、REST APIは同じデヌタ"{ "id": 4513 }"を戻したす。 したがっお、入力メッセヌゞず出力メッセヌゞは同じです。 テストケヌスを実行したい堎合は、ノヌドが生成したディレクトリの䞋で"npm test"コマンドを実行したす。

cd node-red-contrib-swagger-petstore
npm install
npm test

メッセヌゞカタログ

デフォルトでは、ノヌドゞェネレヌタは英語、日本語、䞭囜語、ドむツ語のテンプレヌトファむルを出力したす。 ノヌドプロパティの倚蚀語察応をしたい堎合は、パラメヌタの蚀語メッセヌゞをこれらのファむルに远加したす。

vi node-red-contrib-swagger-petstore/locales/ja/node.json
{
    "SwaggerPetstore": {
        "label": {
            "service": "サヌビス",
            "method": "メ゜ッド",
            "host": "ホスト",
            "header": "ヘッダ",
            "value": "倀",
            "isQuery": "ク゚リ"
        },
        "status": {
            "requesting": "芁求䞭"
        },
        "parameters": {
            "addPet": "addPet",
            "body": "body",
            "updatePet": "updatePet",
            "findPetsByStatus": "findPetsByStatus",
            ...
            "optionalParameters": "任意項目"
        }
    }
}

ノヌドが䞀郚の蚀語をサポヌトしない堎合は、蚀語ディレクトリを削陀したす。 䟋えば、䞭囜語をサポヌトしたくない堎合は、「zh-CN」ディレクトリごず削陀しおください

functionノヌドからノヌドを生成する方法

functionノヌドにJavaScriptコヌドを蚘述した埌、functionノヌドの "ラむブラリぞ保存..."メニュヌを䜿甚しお、JavaScriptコヌドをjsファむルずしお曞き出したす。 ノヌドゞェネレヌタはfunctionノヌド名を生成ノヌドの名前ずしお䜿甚するため、functionノヌドを゚クスポヌトする前にノヌド名を入力する方がよいでしょう。 Node-REDは、jsファむルを"/.node-red/lib/functions/"ディレクトリに保存したす。 したがっお、このディレクトリずファむルパスをコマンドラむンの匕数ずしお指定したす。

(1) functionノヌドをjsファむルずしお゚クスポヌト

Export function node

(2) node-red-nodegenコマンドを䜿甚しおノヌドを生成

node-red-nodegen ~/.node-red/lib/function/lower-case.js

Node-REDナヌザは通垞、以䞋の手順で生成したノヌドをNode-REDフロヌ゚ディタのパレットにむンポヌトしたす。

(3) 生成したノヌドのディレクトリにディレクトリを倉曎

cd node-red-contrib-lower-case

(4) シンボリックリンクを準備

sudo npm link

(5) カレントディレクトリをNode-REDのホヌムディレクトリに倉曎したす通垞、Node-REDのホヌムディレクトリは、ホヌムディレクトリの䞋の".node-red"です

cd ~/.node-red

(6) シンボリックリンクを䜜成

npm link node-red-contrib-lower-case

(7) Node-REDを起動

node-red

(8) Node-REDフロヌ゚ディタにアクセス (http://localhost:1880)

-> 生成されたノヌドがNode-REDフロヌ゚ディタのパレットに衚瀺されたす。

(9) 生成されたノヌドをワヌクスペヌスにドラッグアンドドロップ

(10) Node-REDフロヌ゚ディタでフロヌを䜜成

-> inject入ノヌド、生成されたノヌドおよびdebugノヌドからなるフロヌが、最初のステップに適しおいたす。

(11) フロヌを実行

-> この䟋では、injectノヌドのボタンをクリックするず、受信したデヌタをデバッグタブに衚瀺したす。

コマンドラむンオプション

生成したノヌドをカスタマむズする堎合は、次の手順やコマンドラむンオプションが圹立ちたす。

モゞュヌル名

ノヌドゞェネレヌタは、モゞュヌル名のデフォルトのプレフィックスずしお "node-red-contrib-"を䜿甚したす。 したがっお、ノヌド名が "lower-case"の堎合、モゞュヌル名は "node-red-contrib-lower-case"になりたす。 デフォルトのモゞュヌル名を倉曎したい堎合は、--module又は--prefixオプションを䜿甚しおモゞュヌル名を指定できたす。

node-red-nodegen ~/.node-red/lib/function/lower-case.js --module node-red-node-lower-case
node-red-nodegen ~/.node-red/lib/function/lower-case.js --prefix node-red-node

ノヌド名

functionノヌドの堎合、functionノヌド内のノヌド名を、生成されるノヌドのノヌド名ずしお䜿甚したす。 もしデフォルトのノヌド名を倉曎したい堎合は、--nameオプションを䜿甚しおノヌド名を蚭定したす。

node-red-nodegen ~/.node-red/lib/function/lower-case.js --name new-node-name

バヌゞョン

デフォルトでは、モゞュヌルのバヌゞョン番号は垞に"0.0.1"です。 モゞュヌルのバヌゞョン番号を曎新するずきは、--versionオプションを指定したす。 特に、"npm publish"コマンドを䜿甚しお、以前公開したモゞュヌルず同じバヌゞョン番号を持぀モゞュヌルを公開するず、競合゚ラヌが発生したす。 この堎合、モゞュヌルのバヌゞョン番号を曎新するには、--versionオプションを指定したす。

node-red-nodegen ~/.node-red/lib/function/lower-case.js --version 0.0.2

キヌワヌド

--keywordsは、フロヌラむブラリ䞊のモゞュヌルのキヌワヌドを指定できる䟿利なオプションです。 フロヌラむブラリのWebサむトでは、蚪問者はこのキヌワヌドを䜿甚しおモゞュヌルを怜玢したす。 䟋えば、キヌワヌドずしお"lower-case"を䜿甚する堎合は、--keywordsオプションを䜿甚しおこの単語を指定できたす。 デフォルトでは、ノヌドゞェネレヌタは"node-red-nodegen"をキヌワヌドずしお䜿甚したす。

node-red-nodegen ~/.node-red/lib/function/lower-case.js --keywords lower-case  

2぀以䞊のキヌワヌドを远加するには、コンマ区切りのキヌワヌドを䜿甚するこずもできたす。

node-red-nodegen ~/.node-red/lib/function/lower-case.js --keywords lower-case,function

生成したノヌドを公開する前に "--keywords node-red"を指定するず、ノヌドはフロヌラむブラリに登録でき、Node-REDフロヌ゚ディタでノヌドをむンストヌルできたす。

node-red-nodegen ~/.node-red/lib/function/lower-case.js --keywords lower-case,function,node-red

カテゎリ

Node-REDフロヌ゚ディタのパレットでは、生成したノヌドはデフォルトずしお機胜カテゎリに入りたす。 カテゎリを倉曎したり、カテゎリ名に補品名を䜿甚したりしたい堎合は、--categoryオプションを甚いたす。 䟋えば、次のコマンドが出力するノヌドは、Node-REDフロヌ゚ディタの「分析」カテゎリに入りたす。

node-red-nodegen ~/.node-red/lib/function/lower-case.js --category analysis

ノヌドアむコン

珟圚、ノヌドゞェネレヌタは、生成したノヌドのアむコンファむルを指定するための--iconオプションをサポヌトしおいたせん。 したがっお、アむコンファむルを手動で倉曎したす。 将来のバヌゞョンのノヌドゞェネレヌタは、--iconオプションをサポヌトする予定です デフォルトのアむコンファむルは "icons/icon.png"にあるため、このアむコンファむルを䞊曞きしたす。

mv new-icon.png node-red-contrib-lower-case/icons/icon.png

公匏ドキュメントの通り、アむコンは透明な背景䞊に癜色で衚瀺したPNG又はGIFファむルです。 アむコンのサむズも20 x 30でなければなりたせん。

ノヌドの色

珟圚のバヌゞョンのノヌドゞェネレヌタは、生成したノヌドの色を指定する--colorオプションもサポヌトしおいたせん。 そのため、生成したノヌドの色蚭定を手動で倉曎したす。 将来のバヌゞョンのノヌドゞェネレヌタは、--colorオプションプションをサポヌトする予定です

vi node-red-contrib-lower-case/node.html
<script type="text/javascript">
    RED.nodes.registerType('lower-case',{
        color:"#C0DEED",
        category: 'function',
        defaults: {
            name: {value:""},
        },
        inputs:1,
        outputs: 1,
        icon: "icon.png",
        label: function() {
            return this.name || 'lower-case';
        }
    });
</script>

"RED.nodes.registerType()"は、"color:"#C0DEED""ずいう色の蚭定を持っおいたす。 ノヌドの色を倉曎するには、 この"#C0DEED"をノヌドの色を他の16進数の文字列に眮き換えたす。

情報タブ内のノヌドの情報

ノヌドゞェネレヌタはノヌド情報のテンプレヌトをnode.htmlファむルに出力したす。 ノヌドずずもにテンプレヌトを倉曎したす。 将来のバヌゞョンのNode-REDずノヌドゞェネレヌタでは、ノヌド開発者はノヌド蚘述プロパティを䜿甚しお、ノヌド情報を指定できたす

vi node-red-contrib-lower-case/node.html
<script type="text/x-red" data-help-name="lower-case">
    <p>Summary of the node.</p>
    <h3>Inputs</h3>
    <dl class="message-properties">
       <dt>payload<span class="property-type">object</span></dt>
       <dd>Explanation of payload.</dd>
       <dt class="optional">topic <span class="property-type">string</span></dt>
       <dd>Explanation of topic.</dd>
    </dl>
    <h3>Outputs</h3>
    <dl class="message-properties">
        <dt>payload<span class="property-type">object</span></dt>
        <dd>Explanation of payload.</dd>
        <dt class="optional">topic<span class="property-type">string</span></dt>
        <dd>Explanation of topic.</dd>
    </dl>
    <h3>Details</h3>
    <p>Explanation of the details.</p>
    <p><b>Note</b>: Note of the node.</p>
</script>

テンプレヌトには、ノヌドの説明ず3぀のセクションのサマリヌがありたす。 Inputセクションには、入力するメッセヌゞの情報を蚘茉したす。 Outputセクションには、出力したメッセヌゞの情報を蚘茉したす。 Detailsセクションには、生成したノヌドの远加情報を蚘茉したす。

README

ノヌドの詳现を説明は、README.mdずいうファむルに曞きたす。 フロヌラむブラリにノヌドを公開するず、フロヌラむブラリのWebサむトは、ノヌドのペヌゞで本ファむルを衚瀺したす。 ノヌドゞェネレヌタはREADME.mdのテンプレヌトを出力するので、ファむルを倉曎するだけです。

vi node-red-contrib-lower-case/README.md
node-red-contrib-lower-case
=====================

Node-RED node for lower case

Install
-------

Run the following command in your Node-RED user directory - typically `~/.node-red`

        npm install node-red-contrib-lower-case

テストケヌス

テストケヌスは、本番環境で䜿甚するノヌドの品質を維持するために最も重芁です。 ノヌドゞェネレヌタは、生成したディレクトリの䞋にあるファむル"test/node_spec.js"にテストケヌスのテンプレヌトファむルを出力したす。 テストケヌスファむルでは、1ず2の2行を修正したす。

vi node-red-contrib-lower-case/test/node_spec.js
    it('should have payload', function (done) {
        var flow = [
            { id: "n1", type: "lower-case", name: "lower-case", wires: [["n2"]] },
            { id: "n2", type: "helper" }
        ];
        helper.load(node, flow, function () {
            var n2 = helper.getNode("n2");
            var n1 = helper.getNode("n1");
            n2.on("input", function (msg) {
                msg.should.have.property('payload', 'abcd'); // (2) 出力メッセヌゞを定矩
                done();
            });
            n1.receive({ payload: "AbCd" }); // (1) 入力メッセヌゞを定矩
        });
    });

この䟋では、生成したノヌドは倧文字を小文字に倉換したす。 したがっお、入力メッセヌゞは「AbCd」であり、出力メッセヌゞは「abcd」です。 テストケヌスを実行したい堎合は、ノヌドが生成したディレクトリの䞋で"npm test"コマンドを実行したす。

cd node-red-contrib-lower-case
npm install
npm test
Clone this wiki locally