æ¬ãã³ãºãªã³ã¯ãNode-REDå ¬åŒãµã€ããå ã«ãæé ããŸãšãçŽãããã®ã«ãªããŸããããã§ã¯ãåããŠããŒãéçºãè¡ãæ¹åãã«æé ãã·ã³ãã«ã«ããŠããŸãã ãªãªãžãã«ã®æ å ±ã¯ Node-REDå ¬åŒãµã€ã ããŒãã®éçº ã埡芧ãã ããã
æ¬ãã³ãºãªã³ãå®æœããã«åœããã以äžãäºåæºåããŠãã ããã
- GitHub ã¢ã«ãŠã³ãäœæ
- npm ã¢ã«ãŠã³ãäœæ
- Node-RED ã€ã³ã¹ããŒã« (ããŒã«ã«ç°å¢ãžã®ã¹ã¿ã³ãã¢ãã³)
- IBM Cloud ã¢ã«ãŠã³ãäœæ
ããŒãéçºã®äž»ãªæµãã¯ä»¥äžã®éãã§ãã
- ããŒãããã°ã©ã éçº(JavaScript)
- ããŒãå€èŠ³äœæ(HTML)
- ããã±ãŒãžå
- ããŒãã®ã€ã³ã¹ããŒã«
- ããŒãåã®å€æŽ
- ããŒãåŠçã®å€æŽ
- ããŒãã¢ã€ã³ã³å€æŽ
- ããŒãè²å€æŽ
- Node-RED Libraryãžã®å ¬é
- å ¬éããããŒãã®åé€
- å ¬éããããŒãã®ã€ã³ã¹ããŒã«
æ°ããããŒããäœæããæã«ã¯ãããã€ãã®äžè¬çãªã«ãŒã«ã«åŸãå¿ èŠããããŸãããããã¯ã³ã¢ããŒãã§æ¡çšãããŠããã¢ãããŒãã«æºæ ããŠãããäžè²«ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããŸãã
ããŒãäœæã«ãããŠã¯ä»¥äžã®ã«ãŒã«ã«åŸããŸã:
-
ç®çãæ確ã«å®çŸ©ãããŠããããš
- APIã«å«ãŸãããã¹ãŠã®é ç®ãèšå®ã§ããããã«ããããŒãã¯ã åäžã®ç®çã®ããã«åå²ããè€æ°ã®ããŒãããã䜿ãã«ããããšãå€ãã§ãã
-
å ã®æ©èœã«é¢ä¿ãªãç°¡åã«äœ¿ããããš
- è€éããé èœããŠå°éçšèªããã¡ã€ã³åºæã®ç¥èã®äœ¿çšãé¿ããŸãã
-
å€æ§ãªã¡ãã»ãŒãžåãæž¡ãããŠãæ£åžžã«åŠçã§ããããš
- ã¡ãã»ãŒãžã¯æååãæ°å€ãBooleanãBufferããªããžã§ã¯ããé åãnullãªã©ã®æ§ã ãªåã§æž¡ãããå¯èœæ§ããããŸãã ãããã®åã§ãã£ãŠãæ£ããåŠçãããå¿ èŠããããŸãã
-
éä¿¡ãããå 容ã«äžè²«æ§ãæã€ããš
- ããŒãã¯ã¡ãã»ãŒãžã«ã©ã®ãããªããããã£ãè¿œå ããã®ããææžåããå¿ èŠããããåäœã«ãããŠäžè²«æ§ãããã äºæž¬å¯èœã§ãªããã°ãªããŸããã
-
ãããŒã®å é ãäžéããŸãã¯æ«å°Ÿã«é 眮ãããããã«ããããš - ãã¹ãŠãäžåºŠã«ããããšããªãããš
-
ãšã©ãŒããã£ããããããš
- ããŒãããã£ããã§ããªããšã©ãŒãã¹ããŒãããšã Node-REDã¯ã·ã¹ãã å šäœã®ç¶æ ãããããªããªãããåæ¢ããŸãã
- ããŒãã¯ã§ãããããã ãšã©ãŒããã£ãããããéåæåŒã³åºãã®ããã®ãšã©ãŒãã³ãã©ãç»é²ããªããã°ãªããŸããã
Node-REDã®ããŒãã¯ãåŠçãå®çŸ©ããJavaScriptãã¡ã€ã«ãšãèšå®ç»é¢ãªã©ã®UIãæäŸããhtmlãã¡ã€ã«ã®2ã€ããæ§æãããŠããŸãã JavaScriptã§ã¯ãåã®ããŒãããæž¡ãããã¡ãã»ãŒãžã«å¯ŸããŠè¡ãåŠçãå®è£ ããŸããhtmlãã¡ã€ã«ã¯ãNode-REDã®ãããŒãšãã£ã¿ã§è¡šç€ºãããããããã£èšå®ç»é¢ãèšè¿°ãããŠããŸãããã®htmlãã¡ã€ã«ã§è¡šç€ºããããããã£èšå®ç»é¢ã§å ¥åããèšå®å€ãjsãã¡ã€ã«ããåŒã³åºããŠåŠçãè¡ããŸãã
https://github.com/ ãžã¢ã¯ã»ã¹ããGitHubã¢ã«ãŠã³ãã§ãã°ã€ã³ããŸãã GitHubããŒãžã®å³äžã«ãããïŒããã«ããŠã³ãããNew repositoryããéžæããŸãã
ããã§äœæãããªããžããªã¯ãããŒããéçºããããã®ãããžã§ã¯ããšããŠååšãããã®åŸããã±ãŒãžåãããŠnpmãžå ¬éããããã®ã«ãªããŸããïŒå ¬éãããã©ããã¯ãã¡ããä»»æã§ãïŒ
ã§ãã®ã§ããªããžããªåã¯ããŒãéçºã®åœåèŠåã«æ²¿ã£ããã®ã«ããŸãããã
ã«ãŒã«ã§ã¯ãnode-red-contrib-<ããŒãã®ã°ã«ãŒããè¡šãå称>ã§ãã®ã§ãããã«åŸããŸãã以äžã®ç»åã®ã§äŸã§ã¯ãnode-red-contrib-taiponrockãã«ããŠããŸãã ãªããžããªåãæå®ãããããªããžããªå ¬éç¯å²ãPublicã«ããREADMEãã¡ã€ã«ã®ãã§ãã¯ãONã«ããŠãã©ã€ã»ã³ã¹ãæå®ããŸããäŸã§ã¯Apache License 2.0ã©ã€ã»ã³ã¹ã§äœæããŸãã ãã¹ãŠèšå®ããããCreate repositoryããã¿ã³ãã¯ãªãã¯ããŠãªããžããªãäœæããŠãã ããã
ç¡äºãªããžããªãäœæãããŸããã
ã§ã¯ã次ã«ããŒã«ã«ã®éçºç°å¢ã«ãå çšäœæãããªããžããªãã¯ããŒã³ããŸãããã
ãªããžããªã®URLãã¯ãªããããŒããžã³ããŒããŸããç·è²ã®ãCodeãã®ãã«ããŠã³ãã¯ãªãã¯ããŠãã¯ãªããããŒããã¿ã³ãã¯ãªãã¯ããŠURLãã³ããŒããŸãã
ãªããžããªãããŒã«ã«ã«ååŸ(git clone) Bashãå®è¡ã§ããã³ãã³ãã©ã€ã³ã€ã³ã¿ãŒãã§ãŒã¹ïŒã¿ãŒããã«ãªã©ïŒãããªããžããªãã¯ããŒã³ããïŒã³ããŒããïŒäœæ¥ãã£ã¬ã¯ããªãžç§»åããŸããããã§ã¯ããŠãŒã¶ãŒãã£ã¬ã¯ããªã®äžãžworkãã£ã¬ã¯ããªãäœæãããããžç§»åããŸããã
$ mkdir work
$ cd work
å
çšäœæãããªããžããªã®URLã§git clone
ã³ãã³ããå®è¡ããŠãã ãããã¯ããŒã³ãçµäºããããls
ã³ãã³ãã§æ£åžžã«ã¯ããŒã³ãããŠããããšã確èªããŸãããã
git clone https://github.com/<GitHubã¢ã«ãŠã³ã>/node-red-contrib-<æå®ããä»»æã®æåå>.git
ããããã¯ãå®éã®ããŒãã®åŠçãäœæããŸãããšãèšã£ãŠããã§ã«ã³ãŒãã¯çšæããŠãããŸãã®ã§ãå®å¿ãã ããã çšæããŠããã³ãŒãã¯éåžžã«ã·ã³ãã«ãªåŠçã®ããŒãã«ãªããŸããã€ã³ããããšããŠæž¡ãããæååãå°æå(lower case)ã«å€æããã ãã®åŠçã§ãã
ãŸãã¯ãã¯ããŒã³ãããªããžããªã®ãã£ã¬ã¯ããªã®äžãžç§»åããŸãã
cd node-red-contrib-<æå®ããä»»æã®æåå>
ãã¡ãã®ãã£ã¬ã¯ããªé äžã«ã以äžã®ã³ãŒãã®éã node.js ãšãããã¡ã€ã«åã§ããã¡ã€ã«ãäœæããŸãã
module.exports = function(RED) {
function LowerCaseNode(config) {
RED.nodes.createNode(this,config);
var node = this;
node.on('input', function(msg) {
msg.payload = msg.payload.toLowerCase();
node.send(msg);
});
}
RED.nodes.registerType("lower-case",LowerCaseNode);
}
node.jsãäœæãããŸããã
ããã§ã¯viã䜿ã£ãŠäœæããŠããŸããããã¡ããä»»æã®ãšãã£ã¿ãŒã䜿ã£ãŠæ§ããŸããã
ç¶ããŠãåããã£ã¬ã¯ããªé äžã«ã以äžã®ã³ãŒãã®éã node.html ãšãããã¡ã€ã«åã§ããã¡ã€ã«ãäœæããŸãã
<script type="text/javascript">
RED.nodes.registerType('lower-case',{
category: 'function',
color: '#a6bbcf',
defaults: {
name: {value:""}
},
inputs:1,
outputs:1,
icon: "file.png",
label: function() {
return this.name||"lower-case";
}
});
</script>
<script type="text/html" data-template-name="lower-case">
<div class="form-row">
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
</script>
<script type="text/html" data-help-name="lower-case">
<p>A simple node that converts the message payloads into all lower-case characters</p>
</script>
node.htmlãäœæãããŸããã
ããŒãã®åŠç(JavaScript)ãšå€èŠ³(HTML)ã®äœæãçµããã®ã§ãä»åºŠã¯ãããããã±ãŒãžåããŠãããŸããNode-REDã¯ãã®ãããŒãšãã£ã¿èªèº«ãnode.jsã¢ããªã§ãããããã®äžã§åãåããŒãããŸãnode.jsã¢ããªãšããããšã«ãªããŸããã€ãŸããããã§ã®ããã±ãŒãžåãšããã®ã¯ npm ã䜿ã£ãåŠçã®ããšã§ãã
npmã«ã€ããŠã¯ããã§ã¯è©³ãã説æããŸããã詳现ãç¥ãããæ¹ã¯ npmå ¬åŒãµã€ã ãžã¢ã¯ã»ã¹ããã ãããåçš®æè¡èšäºãªã©ããåç §ãã ããã
å çšãnode.jsãnode.htmlãäœæãããã£ã¬ã¯ããªãšåãå Žæã§ã以äžã®éãã³ãã³ããå®è¡ããŸãã
npm init
npm initãå®è¡ãããšã察話åŒã«åçš®ãã©ã¡ãŒã¿ãŒãèãããŸãã®ã§ãããã«åŸãå ¥åããŠå ã«é²ãã§ãã ããã
é ç® | èšå®å€ |
---|---|
name | ããã©ã«ãå€ |
version | ããã©ã«ãå€ |
description | ããŒãã®èª¬æ (ã©ã€ãã©ãªãã€ã³ã¹ããŒã«æã®èª¬æãšããŠè¡šç€ºããã) |
entry point | ããã©ã«ãå€ |
test command | â»å ¥åäžèŠ |
git repository | ããã©ã«ãå€ |
keywords | ã€ã³ã¹ããŒã«æã®æ€çŽ¢çã§çšããããŒã¯ãŒããã«ã³ãåºåãã§æå®ãä»åã¯ã©ã€ãã©ãªç»é²äºå®ãªã®ã§ãnode-redããå¿ããã«å ¥åããããšã |
author | npmã¢ã«ãŠã³ãå |
license | Apache-2.0 (ä»»æã®ãã®ã§OK) |
æåŸãŸã§å¯Ÿè©±ãçµäºãããšnpm initã³ãã³ãã«ãã package.json ãçæãããŸãã
package.jsonã«ã¯ãæåã§Node-REDåºæã®èšå®ãè¿œå ããå¿
èŠããããŸããpackage.jsonãã¡ã€ã«ãããã¹ããšãã£ã¿ã§éãã以äžã®æ§ã«"name"ã"version"ãšäžŠåã㊠"node-red":{"nodes":"{"lower-case":"node.js"}},
ã®éšåãè¿œå ããŸãã
{
"name": "node-red-contrib-<æå®ããä»»æã®æåå>",
"version": "1.0.0",
(çç¥)
"node-red" : {
"nodes": {
"lower-case": "node.js"
}
},
(çç¥)
}
ãããŸã§ã§äœæããããŒãããããŒã«ã«ç°å¢ã®Node-REDãžè¿œå ããŠãããŸãããã
ããŒãã¢ãžã¥ãŒã«ãããŒã«ã«ã§ãã¹ãããã«ã¯ npm link
ã³ãã³ãã䜿ãããšãã§ããŸãã ããã«ããéçºäžã«ãããŠãããŒã«ã«ãã£ã¬ã¯ããªã§ããŒããéçºããããŒã«ã«ã®Node-REDã€ã³ã¹ããŒã«ã«ãªã³ã¯ãããããšãã§ããŸãã
CLIäžã§ä»¥äžã®éãã³ãã³ããå®è¡ããããŒãã®è¿œå ãšNode-REDã®èµ·åãè¡ããŸãã
$ cd <ããŒãã¢ãžã¥ãŒã«ãžã®ãã¹>
$ npm link
ããã«ããããã£ã¬ã¯ããªãžé©åãªã·ã³ããªãã¯ãªã³ã¯ãäœæããã Node-REDã¯èµ·åæã«ããŒããæ€åºããŸãã Node-REDãåèµ·åããã ãã§ãããŒãã®ãã¡ã€ã«ã«å¯Ÿããå€æŽãååŸã§ããŸãã
ã³ãã³ãã©ã€ã³ã§ node-red
ã³ãã³ããå®è¡ããããŒã«ã«ã®Node-REDãèµ·åããŸãããã§ã«èµ·åæžã¿ã®å Žåã¯åèµ·åããŠãã ããã
èµ·ååŸïŒåèµ·ååŸïŒã®ãã¬ããã®functionã«ããŽãªã« lower case ãšããããŒããè¿œå ãããŠããããšã確èªã§ããã¯ãã§ãã
ã§ã¯ãã¡ãããšäœ¿ãããè©ŠããŠã¿ãŸãããã 以äžã®ããã«ãããŒãäœæããŸãã Inject -> lower case -> debug ã®åããŒããã·ãŒã±ã³ã·ã£ã«ã«ã€ãªããŸããInjectããŒãã®ããããã£ãããæåååã«èšå®ããä»»æã®æååããã¹ãŠå€§æåã§åºåããããèšå®ããŸããäŸãã°ããã§ã¯ãMY NAME IS TAIJIããšããŠããŸãã
äœæãããããŒããããã€ããŠãInjectããŒããå®è¡ãããšãèšå®ãããã¹ãŠå€§æåã®æååããã¹ãŠå°æåãžå€æãããŠãããã°ãŠã£ã³ããŠãžåºåãããããšã確èªã§ããŸãã
èªåã§äœæããããŒãããããŒã«ã«ç°å¢ã§äœ¿ããããšã確èªã§ããŸãããããããã¯ããã®ããŒããã«ã¹ã¿ãã€ãºããŠãããŸããJavaScriptãHTMLã®ä¿®æ£ãè¡ãããšã§ããã®ããŒãã®åŠçãå€èŠ³ãç·šéããããšãå¯èœã§ãããããã®å€æŽã¯ãNode-REDãåèµ·åãããšåæ ãããŸãã
çŸç¶ãäœæããããŒãã¯ããŒãåããµã³ãã«ããã°ã©ã ã®ãlower-caseãã®ãŸãŸã§ããããã§ã¯ããã®ååãä»»æã®ååã«å€æŽããŸãã以äžã®æé ã«åŸã£ãŠãã ããã
- pakcage.jsonã«èšè¿°ãããŠãã lower-case ãèªåã®ããŒãåã«å€æŽ
äŸã¯ããŒãã®ãªããžããªã node-red-contrib-taiponrock ãªã®ã§ taiponrock ããŒãã«å€æŽããŸãã
- node.jsã«èšè¿°ãããŠãã lower-case ãš LowerCaseNode ãèªåã®ããŒãåã«å€æŽ
äŸã¯ **lower-case** ã **taiponrock** ã«ã **LowerCaseNode** ã **TaiponrockNode** ã«ãããããå€æŽããŸãã
- node.htmlã«èšè¿°ãããŠãã lower-case ãèªåã®ããŒãåã«å€æŽ
äŸã¯ **lower-case** ã **taiponrock** ã«å€æŽããŸãã
Node-REDãåèµ·åãããšãæ£ããååãå€æŽãããŠããããšã確èªã§ããŸãã
ããŒãã®åŠçãå®è£
ããŠããã®ã¯äž»ã«ä»¥äžã®éšåã«ãªããŸããããã§å®çŸ©ããŠãã msg.payload = msg.payload.toLowerCase();
ã®éšåãæžãæãããšãããŒãã®åŠçãå€æŽã§ããŸãã
node.js
(çç¥)
node.on('input', function(msg) {
msg.payload = msg.payload.toLowerCase();
node.send(msg);
}
(çç¥)
ããã§ã¯ãäœæ¥ãããããããããããã«ãèªåã®ååãããã¯ããŒã ã®æååãè¿åŽããã ãã®ã¡ãœãããžå€æŽããŠã¿ãŸãã 以äžã®ããã«node.jsãæžãæããŠã¿ãŸãããã
node.js
(çç¥)
node.on('input', function(msg) {
msg.payload = "Taiponrock";
node.send(msg);
}
(çç¥)
ã§ã¯ãã¡ãããšå€æŽããããè©ŠããŠã¿ãŸãããã å ã»ã©äœæãããããŒã䜿ããŸãã Inject -> lower case -> debug ã®lower caseããŒããååãšåŠçãå€æŽããããŒãã«å€æŽãããŠããŸãããäžåºŠãããã€ãçŽããŠäžããå¿ èŠããããŸããããããããããã«ãäžåºŠå lower caseããŒãã ã£ãããŒããåé€ããŠãå床é 眮ãçŽããŸãã
äœæãããããŒããããã€ããŠãInjectããŒããå®è¡ãããšãå çšåŠçå€æŽã§å®æ°ãšããŠèšå®ããæååïŒååãŸãã¯ããã¯ããŒã ïŒãããããã°ãŠã£ã³ããŠãžåºåãããããšã確èªã§ããŸãã
ããŒãã®ã¢ã€ã³ã³ã¯ãå®çŸ©å ã®iconããããã£ã«æå®ããŸãã
ããããã£ã®å€ã¯ãæååãŸãã¯é¢æ°ãèšå®ã§ããŸãã
ããããã£ã®å€ãæååã®å Žåã¯ããã®æååãã¢ã€ã³ã³åãšããŠæ±ããŸãã
ããããã£ã®å€ãé¢æ°ã®å Žåã¯ãããŒããæåã«èªã¿èŸŒãŸããæããŸãã¯ããŒããç·šéãããåŸã«è©äŸ¡ãããŸããé¢æ°ã¯ã¢ã€ã³ã³åãšããŠäœ¿ãæååãè¿ãããã«ããŠãã ããã
é¢æ°ã¯ãã¯ãŒã¯ã¹ããŒã¹äžã®ããŒãïŒthisãåç §ããããŒãã€ã³ã¹ã¿ã³ã¹ïŒãšããã¬ããäžã®ããŒãã®äž¡æ¹ã®ã¢ã€ã³ã³ã衚瀺ããããã«äœ¿çšãããŸãã ãã¬ããäžã®ããŒãåãã®å Žåãthisã¯ç¹å®ã®ããŒãã€ã³ã¹ã¿ã³ã¹ãåç §ããŸããã é¢æ°ã¯æå¹ãªå€ãè¿ãå¿ èŠããããŸãã
icon: "file.png",
ã¢ã€ã³ã³ã¯æ¬¡ã®ãããããšãªããŸã:
- Node-REDã«ãã£ãŠçšæãããã¢ã€ã³ã³ã®åå
- ã¢ãžã¥ãŒã«ã«ãã£ãŠçšæãããã«ã¹ã¿ã ã¢ã€ã³ã³ã®åå
- Font Awesome 4.7ã®ã¢ã€ã³ã³
ããã§ã¯ãNode-REDãããã©ã«ãã§çšæããŠããã¢ã€ã³ã³ã䜿ã£ãŠå€æŽããŸãããã ããŒãã®ã¢ã€ã³ã³ãå€æŽããã«ã¯ãnode.htmlãã¡ã€ã«ã®"icons"ã®èšå®ãå€æŽããŸããNode-REDã¯ããã©ã«ãã§ä»¥äžã®æ§ãªã¢ã€ã³ã³ãæã£ãŠããŸãã
奜ããªã¢ã€ã³ã³ãéžãã§ãã ãããäŸã§ã¯ bridge.svg ã䜿ããŸãã
泚æïŒ Node-RED 1.0以éãèŠæ ããè¯ãããããã«ãããã®ã¢ã€ã³ã³ããã¹ãŠSVGã«çœ®ãæããããŸãããäžäœäºææ§ã確ä¿ããããã«ãpngãæå®ããããšãå¯èœã§ããããšãã£ã¿ãŒã¯pngãšããŠã®ãªã¯ãšã¹ããSVGã«èªåçã«å€æŽããŸãïŒå©çšå¯èœãªå ŽåïŒãã§ãã®ã§ãSVGãæå®ããã»ããè¯ãã§ãããã
node.htmlãéããŠä»¥äžã®ããã«ç·šéããŠãã ããã
Node-REDãåèµ·åããŠãã¢ã€ã³ã³ãå€æŽãããŠããããšã確èªããŸãã
ããŒãè²ã®å€æŽã¯ããããã§ããã¢ã€ã³ã³ã®å€æŽæãšåãããã«ãnode.htmlãã¡ã€ã«ã®äžã«èšè¿°ãããŠãã"color"èŠçŽ ã®èšå®ãå€æŽããã ãã§ããããã§ã¯"red"ãæå®ããŸããã
Node-REDãåèµ·åããŠãããŒãè²ãå€æŽãããŠããããšã確èªããŸãã
ããŒããæå±ããã«ããŽãªãŒãå€æŽããŸããçŸç¶ã¯ãµã³ãã«ã³ãŒãããã®ãŸãŸäœ¿ã£ãŠããã®ã§ããã®ããŒãã®æå±ããã«ããŽãªãŒã¯ function ã§ããã
ããã§ã¯ãè©Šãã«æ°ãã devdojo ã«ããŽãªãèšããŠããããžæå±ãããããšæããŸããnode.htmlãã¡ã€ã«ã®äžã«èšè¿°ãããŠãã"category"èŠçŽ ã®å€ã function ãã devdojo ãžãšå€æŽããŠãã ããã
Node-REDãåèµ·åããŠãæå±ã«ããŽãªãŒãå€æŽãããŠããããšã確èªããŸãã
ä»ã«ããå€èŠ³å€æŽã«ã€ããŠã®è©³çŽ°ãç¥ãããæ¹ã¯Node-REDã®å ¬åŒãµã€ããã確èªãã ããã
äœæããããŒãã Node-RED Library ã«å ¬éããããã«ãããã€ãäœæ¥ãå¿ èŠãšãªããŸãã
ããŒãã®èª¬æã README.md ãžèšèŒããŠãããŸãããã README.mdãã¡ã€ã«ã¯ååãªæ å ±ãèšèŒãããŠãããããã¯ããŒã©ãŒã«èªåå€å®ãããŠããããã§ãããã®ãããäžå®æåæ°ä»¥äžã®å 容ãæžããªããšNode-RED Libraryã«ç»é²ãããªãããã§ãã èšèŒããèšèªã¯ãäžçäžã®æ¹ãžå ¬éããã®ãèæ ®ãããšè±èªã®æ¹ãè¯ãã§ãããä»åã¯ãã³ãºãªã³ã®äžè²«ã§ãã¹ãçã«å ¬éããã®ã§æ¥æ¬èªã§ã倧äžå€«ã§ãã
åèãšããŠãäŸãã°ä»¥äžã®å 容ãªã©ãèšèŒããŠãããšæãŸããã§ãã
- æŠèŠèª¬æ
- 䜿çšæ¹æ³
- ã¹ã¯ãªãŒã³ã·ã§ãã
- æ¬ããŒããçšãããµã³ãã«ãããŒ
- åæç°å¢
- æŽæ°å±¥æŽ
ããã§ã¯ããã³ãºãªã³ãšããããšã§å®çµã«æŠèŠãšäœ¿çšæ¹æ³ã®ã¿ãèšèŒããŠãããŸãã以äžã®å 容ã§README.mdãæŽæ°ããŠãã ããã
# node-red-contrib-<æå®ããä»»æã®æåå>
## æŠèŠ
æ¬ããŒãã¯ãã€ã³ããããšããŠæž¡ãããŠããã¢ã«ãã¡ãããæååããã¹ãŠåŒ·å¶çã«ãTaiponrockããšããæååãžå€æããããã®ããŒãã§ãã
æž¡ãããŠããã€ã³ããããã©ã¡ãŒã¿ãŒãæåå以å€ã§ãã匷å¶çã«ãTaiponrockããè¿åŽãããŸãããã¯ãé¿ãããããããŸããã
æ¬åŠçã§ã¯ãJavaScriptã«ãããStringãªããžã§ã¯ãã®ã€ã³ã¹ã¿ã³ã¹ã¡ãœããã§ããtoLowerCaseãå®è¡ããŠãããµã³ãã«ããŒãããªãã®æå³ããªãå®æ°ãè¿åŽããã ãã®åŠçã«å€æŽããçŽ æŽãããããŒãã§ãã
## 䜿çšæ¹æ³
æž¡ããã©ã¡ãŒã¿ãŒã®æååããã¹ãŠåŒ·å¶çã«ãTaiponrockããžå€æãããå Žåã«äœ¿çšããŸããèªå·±é¡ç€ºæ¬²ãæ¿èªæ¬²æ±ãæºããããã ãã®èªå·±æºè¶³ãšããŠäœ¿çšãããŸããèªèº«ã®ç²Ÿç¥è¡çäžãèæ
®ãã䜿çšé »åºŠã«ã¯ååã泚æãã ããã
ç·šéãããREADME.mdã¯ä¿åããŠéããŠãããŸãã
node.js node.html package.json README.md LICENSE ã®5ã€ã®ãã¡ã€ã«ãããããšã確èªããŸããïŒpackage.lock.jsonãå«ãŸããŠããŠãåé¡ãããŸããïŒ
ãããã®ãã¡ã€ã«ãGitHubäžã®ãªããžããªãžã¢ããããŒãããŸãã ãããŸã§ã®äœæ¥ã¯ãã¯ããŒã³ãããªããžããªã®ãã£ã¬ã¯ããªã§è¡ã£ãŠããã¯ãã§ãããããå¥ã®å Žæãžããå Žåã¯åœè©²ãªããžããªã®ãã£ã¬ã¯ããªãžç§»åããŸãã ãã®äžã§ä»¥äžã®ã³ãã³ããå®è¡ããŸãããã
git add .
git commit -m "Node has been published"
git push
git commitã§ã¡ãŒã«ã¢ãã¬ã¹ãšãŠãŒã¶åãæ±ããããå Žåã¯ãèªåã®Gitã®ãŠãŒã¶ãŒåãšã¡ãŒã«ã¢ãã¬ã¹ãèšå®ããŸãã以äžã®ã³ãã³ããå®è¡ããããšã§ç°å¢å€æ°ãžèšå®ããŠããããšãã§ããŸãã
git config --global user.email "<ã¡ãŒã«ã¢ãã¬ã¹>"
git config --global user.name "<ãŠãŒã¶å>"
git pushã§GitHubãžã®ãã°ã€ã³ãæ±ããããå Žåã¯ãGitHubã¢ã«ãŠã³ãã®ãŠãŒã¶åãšãã¹ã¯ãŒããå ¥åããŸãã
pushãæ£åžžã«çµäºãããšãGitHubäžã®ãªããžããªã§å¯Ÿè±¡ã®ãã¡ã€ã«ãã¢ããããŒããããŠããããšã確èªã§ããŸãã
ã§ã¯æ¬¡ã«ãããŒããã¢ãžã¥ãŒã«ãšããŠå ¬éããŸããnpmã³ãã³ããçšããŠãã¡ã€ã«äžåŒãã¢ããããŒãããŸããããã§ãåãããã¯ããŒã³ãããªããžããªã®ãã£ã¬ã¯ããªã§äœæ¥ãè¡ããŸãã
npm adduser
npm publish
npm publish
ãå®è¡ããéã«ããŒãžã§ã³ã®ç¢ºèªãè¡ãããŸãã2åç®ä»¥é npm publish
ãå®è¡ããéã«ã¯ããŒãžã§ã³ãäžãã£ãŠããå¿
èŠãããã®ã§ãpachage.jsonãç·šéããŠããŒãžã§ã³çªå·ãäžããããšãå¿ããªãã§ãã ããã
publishãæ£åžžã«çµäºãããš https://www.npmjs.com/package/node-red-contrib-<ä»»æã®æåå> ãšããURLã«ãŠå ¬éãããŸãã
äŸã ãš https://www.npmjs.com/package/node-red-contrib-taiponrock ã«ãªããŸãã
Node-RED Libraryã®Adding a nodeãããäœæããããŒããç»é²ããŸãã
Add your node to the Flow Libraryã«ãäœæããããŒãã®å称ãå ¥åã㊠add node ãã¿ã³ãã¯ãªãã¯ããŸãã
ç»é²ãå®äºãããšãäœæããããŒããã©ã€ãã©ãªãŒãžè¿œå ãããããšã確èªã§ããŸãã
Node-RED Libraryã«ãŠç»é²äœæ¥ãè¡ã£ãŠãããå®éã«Node-REDãããŒãšãã£ã¿ãŒäžã§æ€çŽ¢ã«HITããããã«ãªããŸã§15åçšåºŠããããŸãã®ã§ã泚æãã ããã
ããŒãžã§ã³ãäžããŠå床publishãè¡ã£ãå Žåã¯ãNode-RED Libraryã®èªåã®nodeã®ããŒãžãããªãã¬ãã·ã¥ãè¡ã£ãŠãã ãããããŒãç»é¢ã®å³åŽActionsããã«ã®äžã«ãã request refresh ãã¯ãªãã¯ããã°OKã§ãã
å ¬éããããŒãã®åé€ã«ã¯æ³šæãå¿ èŠã§ããçŸåš(2020/10æç¹)ãnpmã®ããã±ãŒãžã®unpublishããªã·ãŒã«ãããšãunpublishæéã¯ å ¬é24æé以å ãã72æé以å ã§ããããŸãã72æé以äžã§ã ããŠã³ããŒãæ°300æªæº ãªã©ç¹å®æ¡ä»¶ãæºãã圱é¿ã®å°ãªãããã±ãŒãžãªãunpublishå¯èœãšããŠããã
ãã¡ãã®æ å ±ã¯éææŽæ°ãããããšãæ³å®ãããã®ã§ãææ°æ å ±ã¯npmã®å ¬åŒãµã€ããé©å®åç §ããŠãã ããã
unpublishãè¡ã£ãããšãæŽæ°æãšåãããã«Node-RED Libraryã®èªåã®nodeã®ããŒãžãããªãã¬ãã·ã¥ãè¡ã£ãŠãã ãããããŒãç»é¢ã®å³åŽActionsããã«ã®äžã«ãã request refresh ãã¯ãªãã¯ããã°OKã§ãã
unpublishã¯ã¢ãžã¥ãŒã«ã®ãã£ã¬ã¯ããªïŒCloneãããªããžããªã®ãã£ã¬ã¯ããªïŒé äžã§ã以äžã®ã³ãã³ããå®è¡ããŸãã
npm unpublish --force node-red-contrib-<ä»»æã®æåå>
ããã®ç« ã¯ãã5-4. Node-RED Libraryãžã®ç»é²ãã®äœæ¥åŸã15å以äžçµã£ãŠããå®æœããããšãããããããŸãã
ããŒã«ã«ç°å¢ã®Node-REDã§ã¯èªäœããŒãããã®ãŸãŸäœ¿ããããã«åæ ãããŸããããŸããå ¬éçšã«npmãžpublishããŠãNode-RED Libraryã«ãããŒãç»é²ãè¡ããŸãããããã§ãã ãã§ããã®ããŒãã䜿ãããšãã§ããããã«ãªã£ãã¯ãã§ãã
ããã§ã¯ãè©Šãã«IBM Cloudã®Node-REDãããä»åäœæããããŒããåé¡ãªãã€ã³ã¹ããŒã«ããŠäœ¿ãããã確èªããŠãããŸãããã
IBM Cloudã®ã¢ã«ãŠã³ããå¿ èŠã«ãªããŸãããæã¡ã§ãªãæ¹ã¯ãã¡ãããäœæããŠäžããã
IBM Cloudã«ãã°ã€ã³ããNode-REDãµãŒãã¹ãäœæããŠNode-REDãããŒãšãã£ã¿ãèµ·åããŸãããããŒãšãã£ã¿ãŒã®ãã¬ããã®ç®¡çãéããŸãã
Installã¿ããéžæããèªåã§äœæããããŒãåã®äžéšãå ¥åããŠæ€çŽ¢ããŸããæ€çŽ¢çµæã§èªäœããããŒãã衚瀺ãããã°å ¬éããã€ã³ã¹ããŒã«å¯Ÿè±¡ã«ãªã£ãŠãããšããããšã§ããInstallãã¿ã³ãã¯ãªãã¯ããŠã€ã³ã¹ããŒã«ããŸãããã
â» ããã§æ€çŽ¢çµæã«è¡šç€ºãããªãå ŽåãããŒãç»é²ãããŸã æéãçãããå¯èœæ§ããããŸãã30åã1æéåŸã«å床詊ããŠã¿ãŠãã ãããããã§ãæ€çŽ¢ã«HITããªãå Žåã¯äœãããã®åå ããããšæãããŸãã®ã§ããããŸã§ã®æé ãèŠçŽããŠå床å®æœããŠã¿ãŠãã ããã
ãã¬ããã«èªäœããããŒãããèªåã§èšå®ããã«ããŽãªãŒã§è¡šç€ºãããŠããããšã確èªããŸãã
以äžã®å³ã®ããã«ãããŒãäœæããŠInjectããŒããå®è¡ããŸããäŸã¯ãNode-REDãããŒãšãã£ã¿ãŒãååèµ·åããéã«ããã©ã«ãã§çšæãããŠãã Hello Node-RED! ã®ãããŒã®éã«ãèªäœããŒããæãã§ã¿ãŠããŸãã
InjectããŒãå®è¡åŸããããã°ãŠã£ã³ããŠã«çµæã衚瀺ãããŠããããšã確èªããŸãã
ãã€ããããŸã§ãããããŒããèªäœãããšèšã£ãŠããæã£ãã»ã©é£ããã¯ãªãã£ãã®ã§ã¯ãªãã§ããããããã®æé ãããŒã¹ã«ãåŠçå 容ã®äœæãå€èŠ³ã¢ã¬ã³ãžãããŠããã ããã°ãæ¢åã«ç¡ãèªåã ãã®ã圹ç«ã¡ããŒããå ¬éããŠäžçäžã®éçºè ãžäœ¿ã£ãŠãããããšãã§ããŸããïŒ