{"id":2622,"date":"2023-10-13T13:39:46","date_gmt":"2023-10-13T04:39:46","guid":{"rendered":"https:\/\/blog.smartlight.co.jp\/?p=2622"},"modified":"2023-10-17T15:38:34","modified_gmt":"2023-10-17T06:38:34","slug":"%e5%88%9d%e5%8f%b0%e3%83%a9%e3%83%9c%e3%80%81%e3%83%87%e3%82%b8%e3%82%bf%e3%83%ab%e3%83%84%e3%82%a4%e3%83%b3%e3%83%bb%e3%83%81%e3%83%a5%e3%83%bc%e3%83%88%e3%83%aa%e3%82%a2%e3%83%ab%e3%82%92%e3%82%84","status":"publish","type":"post","link":"https:\/\/blog.smartlight.co.jp\/?p=2622","title":{"rendered":"\u521d\u53f0\u30e9\u30dc\u3001\u30c7\u30b8\u30bf\u30eb\u30c4\u30a4\u30f3\u30fb\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3092\u3084\u308b\uff01"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/blog.smartlight.co.jp\/?p=2733\" data-type=\"link\" data-id=\"https:\/\/blog.smartlight.co.jp\/?p=2733\">\u524d\u306e\u8a18\u4e8b<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/blog.smartlight.co.jp\/?p=2887\" data-type=\"link\" data-id=\"https:\/\/blog.smartlight.co.jp\/?p=2887\">\u6b21\u306e\u8a18\u4e8b<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u6ce8\u610f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u306e\u8a18\u4e8b\u3060\u3051\u3092\u898b\u3066\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306e\u64cd\u4f5c\u306f\u591a\u5206\u3067\u304d\u306a\u3044\u3002\u53c2\u8003\u306b\u3057\u305f\u8cc7\u6599\u3092\u57fa\u306b\u30dd\u30a4\u30f3\u30c8\u3084\u3084\u3063\u3066\u307f\u305f\u611f\u60f3\u306a\u3069\u3092\u8f09\u305b\u3066\u3044\u304f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u53c2\u8003\uff1a<a href=\"https:\/\/smartlight.co.jp\/category\/hatsudai-lab-digital-twin-project\/\">\u521d\u53f0DT \u2013 \u30b9\u30de\u30fc\u30c8\u30e9\u30a4\u30c8\u682a\u5f0f\u4f1a\u793e (smartlight.co.jp)<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e8b\u524d\u77e5\u8b58\uff1a<a href=\"https:\/\/blog.smartlight.co.jp\/?p=2470\" data-type=\"link\" data-id=\"https:\/\/blog.smartlight.co.jp\/?p=2470\">https:\/\/blog.smartlight.co.jp\/?p=2470<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb1<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/smartlight.co.jp\/2023\/05\/20\/hatsudai-lab-digital-twin-tutorial-1\/\">\u521d\u53f0\u30e9\u30dc\u30fb\u30c7\u30b8\u30bf\u30eb\u30c4\u30a4\u30f3\u30fb\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\uff11 \u2013 \u30b9\u30de\u30fc\u30c8\u30e9\u30a4\u30c8\u682a\u5f0f\u4f1a\u793e (smartlight.co.jp)<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span style=\"text-decoration: underline;\">~PC\u306e1\u3092\u62bc\u3059\u3053\u3068\u3067\u30b9\u30dd\u30c3\u30c8\u30e9\u30a4\u30c8\u306e\u70b9\u706f\u6d88\u706f\u3092\u5236\u5fa1\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b~<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u30d2\u30a8\u30e9\u30eb\u30ad\u30fc\u304b\u3089add entity\u3067spot light\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u8ffd\u52a0\u3002\u30b3\u30fc\u30c9\u5185\u3067\u540d\u524d\u3092\u4f7f\u3046\u305f\u3081\u899a\u3048\u3066\u304a\u304f\u3088\u3046\u306b\u3002\u30b9\u30dd\u30c3\u30c8\u30e9\u30a4\u30c8\u306e\u4f4d\u7f6e\u306f\u9ad8\u3044\u4f4d\u7f6e\u306b\u8abf\u7bc0\u3059\u308b\u3068\u3088\u3044\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u30a2\u30bb\u30c3\u30c8\u306b\u306f\u307e\u3060\u4f55\u3082\u5165\u3063\u3066\u3044\u306a\u3044\u306e\u3067\u30d5\u30a9\u30eb\u30c0\u3092\u65b0\u3057\u304f\u4f5c\u308a\u3001\u305d\u306e\u4e2d\u306blightHandler.js\u3092\u4f5c\u6210\u3059\u308b\u3002\u3053\u308c\u306fROOT\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306bSCRIPT\u3067\u8ffd\u52a0\u3059\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">lightHandler.js\u306b\u306f\u4ee5\u4e0b\u306e\u5185\u5bb9\u3092\u66f8\u304d\u8fbc\u3080\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>var LightHandler = pc.createScript(&#39;lightHandler&#39;);\n\n\/\/ initialize code called once per entity\nLightHandler.prototype.initialize = function() {\n    var app = this.app;\n    this.spot = app.root.findByName(&quot;SpotLight&quot;);\n};\n\n\/\/ update code called every frame\nLightHandler.prototype.update = function(dt) {\n    var app = this.app;\n    if (app.keyboard.wasPressed(pc.KEY_1)){\n        this.spot.light.enabled = !this.spot.light.enabled;\n    }\n};\n\n\/\/ swap method called for script hot-reloading\n\/\/ inherit your script state here\n\/\/ LightHandler.prototype.swap = function(old) { };\n\n\/\/ to learn more about script anatomy, please read:\n\/\/ https:\/\/developer.playcanvas.com\/en\/user-manual\/scripting\/<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb2<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/smartlight.co.jp\/2023\/05\/20\/hatsudai-lab-digital-twin-tutorial-2\/\">\u521d\u53f0\u30e9\u30dc\u30fb\u30c7\u30b8\u30bf\u30eb\u30c4\u30a4\u30f3\u30fb\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb2 \u2013 \u30b9\u30de\u30fc\u30c8\u30e9\u30a4\u30c8\u682a\u5f0f\u4f1a\u793e (smartlight.co.jp)<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span style=\"text-decoration: underline;\">~\u30dc\u30bf\u30f3\u3092\u62bc\u3059\u3068\u30a2\u30e9\u30fc\u30c8\u753b\u9762\u304c\u8868\u793a\u3055\u308c\u308b~<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u30d2\u30a8\u30e9\u30eb\u30ad\u30fc\u304b\u30892D Screen\u3092\u8ffd\u52a0\u3002\u5b50\u8981\u7d20\u306bButton\u3092\u8ffd\u52a0\u3002<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">playcanvas\u306b\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30d5\u30a9\u30f3\u30c8\u30c7\u30fc\u30bf\u304c\u306a\u3044\uff01<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u3053\u306e\u30d5\u30a9\u30f3\u30c8\u3092\u4f7f\u3044\u307e\u3057\u3087\u3046\uff1a<a href=\"https:\/\/playcanvas.com\/editor\/scene\/547900\" data-type=\"link\" data-id=\"https:\/\/playcanvas.com\/editor\/scene\/547900\">https:\/\/playcanvas.com\/editor\/scene\/547900<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Button\u306e\u8981\u7d20\u306eText\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u958b\u304d\u3001ELEMENT\u306b\u30d5\u30a9\u30f3\u30c8\u3092\u30c9\u30e9\u30c3\u30b0\uff06\u30c9\u30ed\u30c3\u30d7\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3067Button\u3092\u30db\u30d0\u30fc\u3057\u305f\u3068\u304d\u3084\u62bc\u3057\u305f\u3068\u304d\u306e\u8272\u306e\u7de8\u96c6\u7b49\u304c\u3067\u304d\u308b\u3002\u51e6\u7406\u306f\u65b0\u3057\u304fbutton.js\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u4f5c\u6210\u3057\u3001Button\u306b\u8ffd\u52a0\u3059\u308b\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>var Button = pc.createScript(&#39;button&#39;);\nButton.attributes.add(&quot;message&quot;, {type:&quot;string&quot;, default: &quot;message&quot;})\n\n\/\/ initialize code called once per entity\nButton.prototype.initialize = function() {\n    if(this.app.touch){\n        this.entity.element.on(pc.EVENT_TOUCHSTART, () =&gt; this.show(this.message))\n    }else{\n        this.entity.element.on(&quot;click&quot;, () =&gt; this.show(this.message))\n    }\n};\n\n\/\/ update code called every frame\nButton.prototype.update = function(dt) {\n\n};\nButton.prototype.show = (message) =&gt; alert(message)\n\n\/\/ swap method called for script hot-reloading\n\/\/ inherit your script state here\n\/\/ Button.prototype.swap = function(old) { };\n\n\/\/ to learn more about script anatomy, please read:\n\/\/ https:\/\/developer.playcanvas.com\/en\/user-manual\/scripting\/<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">\u7591\u554f\u70b9(\u539f\u56e0\u4e0d\u660e)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u30a8\u30c7\u30a3\u30bf\u753b\u9762\u3067\u306e\u30dc\u30bf\u30f3\u306e\u4f4d\u7f6e\u3068\u5b9f\u884c\u753b\u9762\u306e\u30dc\u30bf\u30f3\u306e\u4f4d\u7f6e\u304c\u7570\u306a\u308b\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"292\" src=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/image-198-1024x292.png\" alt=\"\" class=\"wp-image-2666\" srcset=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/image-198-1024x292.png 1024w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/image-198-300x85.png 300w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/image-198-768x219.png 768w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/image-198-1536x437.png 1536w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/image-198.png 1861w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/image-198-1024x292.png 856w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"489\" src=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/image-199-1024x489.png\" alt=\"\" class=\"wp-image-2667\" srcset=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/image-199-1024x489.png 1024w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/image-199-300x143.png 300w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/image-199-768x367.png 768w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/image-199-1536x734.png 1536w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/image-199.png 1915w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/image-199-1024x489.png 856w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">\u73fe\u6642\u70b9\u3067\u308f\u304b\u308b\u3053\u3068<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u30dc\u30bf\u30f3\u306f\u5e38\u306b\u753b\u9762\u306e\u4e2d\u592e\u306b\u5b58\u5728\u3059\u308b\u304c\u3001\u305d\u308c\u4ee5\u5916\uff08\u5730\u9762\u3001\u30dc\u30c3\u30af\u30b9\u3001\u30e9\u30a4\u30c8\u7b49\uff09\u306f\u30a8\u30c7\u30a3\u30bf\u4e0a\u306e\u8868\u793a\u3068\u540c\u3058\u306b\u306a\u308b\u3002<\/p>\n\n\n\n<div class=\"wp-block-jetpack-tiled-gallery aligncenter is-style-rectangular\"><div class=\"tiled-gallery__gallery\"><div class=\"tiled-gallery__row\"><div class=\"tiled-gallery__col\" style=\"flex-basis:49.02186%\"><figure class=\"tiled-gallery__item\"><img decoding=\"async\" srcset=\"https:\/\/i0.wp.com\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2023-10-12-111328.png?strip=info&#038;w=600&#038;ssl=1 600w,https:\/\/i0.wp.com\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2023-10-12-111328.png?strip=info&#038;w=798&#038;ssl=1 798w\" alt=\"\" data-height=\"454\" data-id=\"2672\" data-link=\"https:\/\/blog.smartlight.co.jp\/?attachment_id=2672\" data-url=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2023-10-12-111328.png\" data-width=\"798\" src=\"https:\/\/i0.wp.com\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2023-10-12-111328.png?ssl=1\" data-amp-layout=\"responsive\"\/><\/figure><\/div><div class=\"tiled-gallery__col\" style=\"flex-basis:50.97814%\"><figure class=\"tiled-gallery__item\"><img decoding=\"async\" srcset=\"https:\/\/i1.wp.com\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2023-10-12-111401-1024x560.png?strip=info&#038;w=600&#038;ssl=1 600w,https:\/\/i1.wp.com\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2023-10-12-111401-1024x560.png?strip=info&#038;w=900&#038;ssl=1 900w,https:\/\/i1.wp.com\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2023-10-12-111401-1024x560.png?strip=info&#038;w=1200&#038;ssl=1 1200w,https:\/\/i1.wp.com\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2023-10-12-111401-1024x560.png?strip=info&#038;w=1500&#038;ssl=1 1500w,https:\/\/i1.wp.com\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2023-10-12-111401-1024x560.png?strip=info&#038;w=1671&#038;ssl=1 1671w\" alt=\"\" data-height=\"914\" data-id=\"2673\" data-link=\"https:\/\/blog.smartlight.co.jp\/?attachment_id=2673\" data-url=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2023-10-12-111401-1024x560.png\" data-width=\"1671\" src=\"https:\/\/i1.wp.com\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2023-10-12-111401-1024x560.png?ssl=1\" data-amp-layout=\"responsive\"\/><\/figure><\/div><\/div><\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb3<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/smartlight.co.jp\/2023\/05\/24\/hatsudai-lab-digital-twin-tutorial-3\/\">\u521d\u53f0\u30e9\u30dc\u30fb\u30c7\u30b8\u30bf\u30eb\u30c4\u30a4\u30f3\u30fb\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb3 \u2013 \u30b9\u30de\u30fc\u30c8\u30e9\u30a4\u30c8\u682a\u5f0f\u4f1a\u793e (smartlight.co.jp)<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span style=\"text-decoration: underline;\">~\u30dc\u30bf\u30f3\u3092\u62bc\u3059\u3053\u3068\u3067\u30b9\u30dd\u30c3\u30c8\u30e9\u30a4\u30c8\u306e\u70b9\u706f\u6d88\u706f\u3092\u5236\u5fa1\u3059\u308b~<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">button.js\u3092\u7de8\u96c6\u3059\u308b\u3053\u3068\u3067<code><span class=\"marker2\"><span class=\"marker\"><mark style=\"background-color:#f78da7\" class=\"has-inline-color\">Text<\/mark><\/span><\/span><\/code>\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u305f\u3068\u304d\u306e\u51e6\u7406\u3092\u5909\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>var Button = pc.createScript(&#39;button&#39;);\n\/\/Button.attributes.add(&quot;message&quot;, {type:&quot;string&quot;, default: &quot;message&quot;})\n\n\/\/ initialize code called once per entity\nButton.prototype.initialize = function() {\n    var app = this.app;\n    this.spot = app.root.findByName(&quot;SpotLight&quot;);\n    \/\/ if(this.app.touch){\n    \/\/     this.entity.element.on(pc.EVENT_TOUCHSTART, () =&gt; this.show(this.message))\n    \/\/ }else{\n    \/\/     this.entity.element.on(&quot;click&quot;, () =&gt; this.show(this.message))\n    \/\/ }\n    if(this.app.touch){\n        this.entity.button.on(&quot;click&quot;, (event) =&gt; {\n            this.spot.light.enabled = !this.spot.light.enabled;\n        });   \n    }else{\n        this.entity.button.on(&quot;click&quot;, (event) =&gt; {\n            this.spot.light.enabled = !this.spot.light.enabled;\n        });\n        \n    }\n};\n\n\/\/ update code called every frame\nButton.prototype.update = function(dt) {\n\n};\n\/\/Button.prototype.show = (message) =&gt; alert(message)\n\n\/\/ swap method called for script hot-reloading\n\/\/ inherit your script state here\n\/\/ Button.prototype.swap = function(old) { };\n\n\/\/ to learn more about script anatomy, please read:\n\/\/ https:\/\/developer.playcanvas.com\/en\/user-manual\/scripting\/<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">\u6ce8\u610f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u53c2\u8003\u306b\u3057\u305f\u8a18\u4e8b\u306e\u30b3\u30fc\u30c9\u3092\u4e38\u5199\u3057\u3059\u308b\u3068button\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u3068\u3044\u3046\u30a8\u30e9\u30fc\u3092\u5410\u304d\u51fa\u3059\u3002\u30a2\u30ed\u30fc\u95a2\u6570 (<code>() =&gt; { ... }<\/code>)\u304c\u6b63\u3057\u304f\u5229\u7528\u3067\u304d\u3066\u3044\u306a\u3044\u306e\u3067\u4fee\u6b63\u3057\u305f\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb4<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/smartlight.co.jp\/2023\/05\/24\/hatsudai-lab-digital-twin-tutorial-4\/\">\u521d\u53f0\u30e9\u30dc\u30fb\u30c7\u30b8\u30bf\u30eb\u30c4\u30a4\u30f3\u30fb\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb4 \u2013 \u30b9\u30de\u30fc\u30c8\u30e9\u30a4\u30c8\u682a\u5f0f\u4f1a\u793e (smartlight.co.jp)<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span style=\"text-decoration: underline;\">~Node-RED\u304b\u3089PLAYCANVAS\u306bMQTT\u901a\u4fe1\u3092\u884c\u3046~<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4eca\u307e\u3067\u306fRapsberry Pi\u4e0a\u3067Node-RED\u3092\u52d5\u304b\u3057\u3066\u3044\u305f\u304c\u4eca\u56de\u306fwindows\u3067node-RED\u3092\u4f7f\u7528\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Node-RED\u3092PC\u306b\u5165\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3057\u3087\u3046<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Node-RED\u3092\u6271\u3046\u306b\u306fPC\u306bNode.js\u306e\u74b0\u5883\u304c\u306a\u3044\u3068\u3044\u3051\u306a\u3044\u3002\u3082\u3057Node.js\u304c\u306a\u3044\u5834\u5408\u306f<a href=\"https:\/\/nodejs.org\/ja\" data-type=\"link\" data-id=\"https:\/\/nodejs.org\/ja\">\u516c\u5f0f\u30b5\u30a4\u30c8<\/a>\u304b\u3089\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3088\u3046\u3002\u5165\u3063\u3066\u3044\u308b\u304b\u308f\u304b\u3089\u306a\u3044\u6642\u306f\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u307f\u3066\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u8fd4\u3063\u3066\u304f\u308c\u3070\u554f\u984c\u306a\u3044\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">windows\u30b9\u30bf\u30fc\u30c8\u753b\u9762\u306e\u691c\u7d22\u306b\u300ccmd\u300d\u3068\u5165\u308c\u308c\u3070\u30b3\u30de\u30f3\u30c9\u30d7\u30ed\u30f3\u30d7\u30c8\u3092\u9078\u3079\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7acb\u3061\u4e0a\u3052\u305f\u3089\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>node --version && npm --version<\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-media-text is-stacked-on-mobile\" style=\"grid-template-columns:40% auto\"><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"130\" height=\"48\" src=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2023-10-13-102937.png\" alt=\"\" class=\"wp-image-2839 size-full\"\/><\/figure><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">\u5de6\u306e\u3088\u3046\u306a\u30d0\u30fc\u30b8\u30e7\u30f3\u60c5\u5831\u304c\u8fd4\u3063\u3066\u304f\u308c\u3070\u74b0\u5883\u304c\u6574\u3063\u3066\u3044\u308b\u3002<\/p>\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u518d\u3073\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3002\u3053\u308c\u3067Node-RED\u3092\u6271\u3046\u74b0\u5883\u304c\u69cb\u7bc9\u3067\u304d\u305f\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>npm install -g --unsafe-perm node-red<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u6b21\u304b\u3089\u306f\u30b3\u30de\u30f3\u30c9\u30d7\u30ed\u30f3\u30d7\u30c8\u304b\u3089<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>node-red<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u3068\u6253\u3066\u3070Node-RED\u304c\u8d77\u52d5\u3059\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/blog.smartlight.co.jp\/?p=2467\" data-type=\"link\" data-id=\"https:\/\/blog.smartlight.co.jp\/?p=2467\">Node-RED\u3001MQTT\u304c\u5206\u304b\u3089\u306a\u3044\u6642<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u63a5\u7d9a\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"974\" height=\"320\" src=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/image-215.png\" alt=\"\" class=\"wp-image-2739\" srcset=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/image-215.png 974w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/image-215-300x99.png 300w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/image-215-768x252.png 768w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/image-215.png 856w\" sizes=\"auto, (max-width: 974px) 100vw, 974px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b5\u30fc\u30d0\u306b\u65b0\u898f\u306b\u8ffd\u52a0\u3067<a href=\"https:\/\/www.shiftr.io\/try\">Try &#8211; shiftr.io<\/a>\u3067\u51fa\u3066\u304d\u305f\u30b3\u30fc\u30c9\u3092\u5165\u529b\u3059\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u3053\u304b\u3089mqtt.js\u3092\u30b3\u30d4\u30fc\u3059\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/playcanvas.com\/project\/1079108\/overview\/light-buttonmqtt\">https:\/\/playcanvas.com\/project\/1079108\/overview\/light-buttonmqtt<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">manage.js\u306e\u30b3\u30fc\u30c9<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>var Manage = pc.createScript(&#39;manage&#39;);\n\n\/\/ initialize code called once per entity\nManage.prototype.initialize = function() {\n    let client = mqtt.connect(&#39;wss:\/\/public:public@public.cloud.shiftr.io:443&#39;);\n    let topic = &quot;bz&quot;;\n\n    client.subscribe(topic);\n    this.app.client = client;\n\n    client.on(&quot;message&quot;, (topic, message) =&gt; this.control(message));\n};\n\nManage.prototype.control = function(message){\n    var data = message.toString();\n    \/\/data = JSON.parse(data);\n    console.log(data);\n}\n\n\/\/ update code called every frame\nManage.prototype.update = function(dt) {\n\n};\n\n\/\/ swap method called for script hot-reloading\n\/\/ inherit your script state here\n\/\/ Manage.prototype.swap = function(old) { };\n\n\/\/ to learn more about script anatomy, please read:\n\/\/ https:\/\/developer.playcanvas.com\/en\/user-manual\/scripting\/<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Node-RED\u5074\u306e\u30ce\u30fc\u30c9\u306e\u30c8\u30d4\u30c3\u30af\u306b\u5165\u308c\u305f\u6587\u5b57\u3068\u3001js\u5074\u306e\u30c8\u30d4\u30c3\u30af\u306e\u6587\u5b57\u306f\u540c\u4e00\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb5<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/smartlight.co.jp\/2023\/05\/24\/hatsudai-lab-digital-twin-tutorial-5\/\">\u521d\u53f0\u30e9\u30dc\u30fb\u30c7\u30b8\u30bf\u30eb\u30c4\u30a4\u30f3\u30fb\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb5 \u2013 \u30b9\u30de\u30fc\u30c8\u30e9\u30a4\u30c8\u682a\u5f0f\u4f1a\u793e (smartlight.co.jp)<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span style=\"text-decoration: underline;\">~Node-RED\u3067\u30b9\u30dd\u30c3\u30c8\u30e9\u30a4\u30c8\u306e\u70b9\u706f\u6d88\u706f\u3092\u5236\u5fa1\u3059\u308b~<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u306f\u5225\u306b\u306a\u304f\u3066\u3082\u3088\u3044<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ON\/OFF\u306f\u6587\u5b57\u5217\u3067\u8a2d\u5b9a\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"849\" height=\"227\" src=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/image-248.png\" alt=\"\" class=\"wp-image-2819\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">manage.js\u3092\u66f8\u304d\u63db\u3048\u308b\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>var Manage = pc.createScript(&#39;manage&#39;);\n\n\/\/ initialize code called once per entity\nManage.prototype.initialize = function() {\n    let client = mqtt.connect(&#39;wss:\/\/public:public@public.cloud.shiftr.io:443&#39;);\n    let topic = &quot;bz&quot;;\n\n    client.subscribe(topic);\n    this.app.client = client;\n\n    client.on(&quot;message&quot;, (topic, message) =&gt; this.control(message));\n};\n\nManage.prototype.control = function(message){\n    var app = this.app;\n\n    this.spot = app.root.findByName(&quot;SpotLight&quot;);\n    var data = message.toString();\n    \/\/data = JSON.parse(data);\n    if (data == &quot;ON&quot;){\n        this.spot.light.enabled = true;\n    }\n    if (data == &quot;OFF&quot;){\n        this.spot.light.enabled = false;\n    }\n}\n\n\/\/ update code called every frame\nManage.prototype.update = function(dt) {\n\n};\n\n\/\/ swap method called for script hot-reloading\n\/\/ inherit your script state here\n\/\/ Manage.prototype.swap = function(old) { };\n\n\/\/ to learn more about script anatomy, please read:\n\/\/ https:\/\/developer.playcanvas.com\/en\/user-manual\/scripting\/<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb6<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/smartlight.co.jp\/2023\/05\/24\/hatsudai-lab-digital-twin-tutorial-6\/\">\u521d\u53f0\u30e9\u30dc\u30fb\u30c7\u30b8\u30bf\u30eb\u30c4\u30a4\u30f3\u30fb\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb6 \u2013 \u30b9\u30de\u30fc\u30c8\u30e9\u30a4\u30c8\u682a\u5f0f\u4f1a\u793e (smartlight.co.jp)<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span style=\"text-decoration: underline;\">~Node-RED\u3067\u5236\u5fa1\u3059\u308b\u706f\u4f53\u3092\u5897\u3084\u3059~<\/span><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u6ce8\u610f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">SpotLight\u3092\u5897\u3084\u3057\u305f\u304c\u30a8\u30c7\u30a3\u30bf\u4e0a\u3067\u78ba\u8a8d\u3067\u304d\u306a\u3044\u6642\u3001\u5168\u304f\u540c\u3058\u5834\u6240\u306b\u30b3\u30d4\u30fc\u3055\u308c\u305f\u306e\u3067\u91cd\u306a\u3063\u3066\u4e00\u3064\u306b\u898b\u3048\u3066\u3044\u308b\u3060\u3051\u3002\u305d\u308c\u305e\u308c\u306e\u898b\u5206\u3051\u304c\u3064\u304f\u3088\u3046\u306b\u5834\u6240\u3092\u79fb\u52d5\u3055\u305b\u3088\u3046\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"754\" height=\"353\" src=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/image-264.png\" alt=\"\" class=\"wp-image-2849\"\/><\/figure>\n\n\n\n<div class=\"wp-block-media-text is-stacked-on-mobile\"><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"554\" height=\"416\" src=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2023-10-13-110145.png\" alt=\"\" class=\"wp-image-2850 size-full\"\/><\/figure><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">\u51e6\u7406\u306e\u533a\u5225\u306e\u305f\u3081\u306b\u540d\u524d\u3082\u4ed8\u3051\u3088\u3046\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">msg\u306b\u306f\u8907\u6570\u306e\u60c5\u5831\u3092\u9001\u308b\u305f\u3081JSON\u5f62\u5f0f\u3067\u66f8\u304f\u5fc5\u8981\u304c\u3042\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7de8\u96c6\u304b\u3089\u4e0b\u8a18\u306e\u3088\u3046\u306b\u4e2d\u8eab\u3092\u8a18\u8ff0\u3059\u308b\u3002<\/p>\n<\/div><\/div>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-json\" data-lang=\"JSON\"><code>{\n    &quot;fixture&quot;: &quot;SpotLight1&quot;,\n    &quot;light&quot;: &quot;ON&quot;\n}<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">manage.js\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u4fee\u6b63\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>var Manage = pc.createScript(&#39;manage&#39;);\n\n\/\/ initialize code called once per entity\nManage.prototype.initialize = function() {\n    let client = mqtt.connect(&#39;wss:\/\/public:public@public.cloud.shiftr.io:443&#39;);\n    let topic = &quot;bz&quot;;\n\n    client.subscribe(topic);\n    this.app.client = client;\n\n    client.on(&quot;message&quot;, (topic, message) =&gt; this.control(message));\n};\n\nManage.prototype.control = function(message){\n    var app = this.app;\n\n    var data = message.toString();\n    data = JSON.parse(data);\n\n    var fixture = data[&quot;fixture&quot;];\n    var lightStatus = data[&quot;light&quot;];\n\n    this.spot = app.root.findByName(fixture);\n\n    if ( lightStatus === &quot;ON&quot;){\n        this.spot.light.enabled = true;\n    }\n    if ( lightStatus === &quot;OFF&quot;){\n        this.spot.light.enabled = false;\n    }\n}\n\n\/\/ update code called every frame\nManage.prototype.update = function(dt) {\n\n};\n\n\/\/ swap method called for script hot-reloading\n\/\/ inherit your script state here\n\/\/ Manage.prototype.swap = function(old) { };\n\n\/\/ to learn more about script anatomy, please read:\n\/\/ https:\/\/developer.playcanvas.com\/en\/user-manual\/scripting\/<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb7<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/smartlight.co.jp\/2023\/05\/24\/hatsudai-lab-digital-twin-tutorial-7\/\">\u521d\u53f0\u30e9\u30dc\u30fb\u30c7\u30b8\u30bf\u30eb\u30c4\u30a4\u30f3\u30fb\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb7 \u2013 \u30b9\u30de\u30fc\u30c8\u30e9\u30a4\u30c8\u682a\u5f0f\u4f1a\u793e (smartlight.co.jp)<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span style=\"text-decoration: underline;\">~PLAYCANVAS\u306e\u30dc\u30bf\u30f3\u304b\u3089Node-RED\u306bMQTT\u901a\u4fe1\u3059\u308b~<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">button.js\u3092\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u7de8\u96c6\u3059\u308b\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>var Button = pc.createScript(&#39;button&#39;);\n\/\/Button.attributes.add(&quot;message&quot;, {type:&quot;string&quot;, default: &quot;message&quot;})\n\n\/\/ initialize code called once per entity\nButton.prototype.initialize = function() {\n    this.entity.button.on(&quot;click&quot;,this.onPress, this);\n};\n\n\/\/ update code called every frame\nButton.prototype.update = function(dt) {\n    \n};\n\nButton.prototype.onPress = function(dt) {\n    let client = this.app.client;\n\n    let topic = &quot;bz&quot;;\n    let metric = `&quot;ultra soul!&quot;`;\n\n    client.publish(topic, metric);\n};\n\/\/Button.prototype.show = (message) =&gt; alert(message)\n\n\/\/ swap method called for script hot-reloading\n\/\/ inherit your script state here\n\/\/ Button.prototype.swap = function(old) { };\n\n\/\/ to learn more about script anatomy, please read:\n\/\/ https:\/\/developer.playcanvas.com\/en\/user-manual\/scripting\/\n<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u30ce\u30fc\u30c9\u304c\u3057\u3063\u304b\u308a\u53d7\u3051\u53d6\u308c\u308b\u3088\u3046\u306b\u63a5\u7d9a\u3057\u3066\u304a\u304f\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"769\" height=\"89\" src=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/image-269.png\" alt=\"\" class=\"wp-image-2858\"\/><\/figure>\n\n\n\n<div class=\"wp-block-media-text is-stacked-on-mobile\"><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"387\" height=\"88\" src=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2023-10-13-111601.png\" alt=\"\" class=\"wp-image-2857 size-full\"\/><\/figure><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">PLAYCANVAS\u306e\u30dc\u30bf\u30f3\u3092\u62bc\u3059\u3068Node-RED\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u9001\u4fe1\u3055\u308c\u305f\u3002<\/p>\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">\u554f\u984c\u70b9<\/h3>\n\n\n\n<div class=\"wp-block-media-text is-stacked-on-mobile\"><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"230\" height=\"22\" src=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2023-10-13-114932.png\" alt=\"\" class=\"wp-image-2869 size-full\"\/><\/figure><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">\u306f\u3058\u3081\u9001\u4fe1\u3059\u308bmetric\u30c7\u30fc\u30bf\u3092\u3053\u306e\u3088\u3046\u306b\u7de8\u96c6\u3057\u305f\u3002<\/p>\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u3059\u308b\u3068\u30e1\u30c3\u30bb\u30fc\u30b8\u306fNode-RED\u306b\u6b63\u3057\u304f\u9001\u4fe1\u3055\u308c\u305f\u3082\u306e\u306e\u610f\u5473\u306e\u5206\u304b\u3089\u306a\u3044\u30a8\u30e9\u30fc\u304cPLAYCANAVS\u5074\u304b\u3089\u5410\u304d\u51fa\u3055\u308c\u305f\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"874\" height=\"71\" src=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/image-271.png\" alt=\"\" class=\"wp-image-2860\" srcset=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/image-271.png 874w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/image-271-300x24.png 300w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/image-271-768x62.png 768w, https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/image-271.png 856w\" sizes=\"auto, (max-width: 874px) 100vw, 874px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u8abf\u3079\u3066\u3044\u304f\u3068\u30a8\u30e9\u30fc\u6587\u306b\u3042\u308b\u300cu\u300d\u304c\u60aa\u3044\u3068\u3044\u3046\u3088\u308a\u9001\u4fe1\u3057\u3066\u3044\u308b\uff11\u6587\u5b57\u76ee\u304c\u60aa\u3055\u3092\u3057\u3066\u3044\u308b\u3088\u3046\u3060\u3063\u305f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u554f\u984c\u304c\u8d77\u3053\u3063\u3066\u3044\u308b\u5834\u6240\u306f\u7279\u5b9a\u3067\u304d\u305f\u3082\u306e\u306e\u539f\u56e0\u306f\u4e0d\u660e\u3067\u3042\u3063\u305f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5bfe\u51e6\u65b9\u6cd5\u3068\u3057\u3066`(\u30d0\u30c3\u30af\u30af\u30a9\u30fc\u30c8)\u3067\u56f2\u3080\u3053\u3068\u3067\u30a8\u30e9\u30fc\u304c\u8d77\u3053\u3089\u305a\u30c7\u30fc\u30bf\u3082\u6b63\u3057\u304f\u9001\u4fe1\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb8<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/smartlight.co.jp\/2023\/05\/24\/hatsudai-lab-digital-twin-tutorial-8\/\">\u521d\u53f0\u30e9\u30dc\u30fb\u30c7\u30b8\u30bf\u30eb\u30c4\u30a4\u30f3\u30fb\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb8 \u2013 \u30b9\u30de\u30fc\u30c8\u30e9\u30a4\u30c8\u682a\u5f0f\u4f1a\u793e (smartlight.co.jp)<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span style=\"text-decoration: underline;\">~PLAYCANVAS\u5074\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u3092Node-RED\u306b\u9001\u4fe1~<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">button.js\u306etopic\u3068\u6587\u8a00\u304c\u4e00\u81f4\u3057\u3066\u3044\u308c\u3070\u30ce\u30fc\u30c9\u306e\u30c8\u30d4\u30c3\u30af\u3092\u66f8\u304d\u63db\u3048\u308b\u5fc5\u8981\u306f\u306a\u3044\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">button.js\u3092\u66f8\u304d\u63db\u3048\u308b\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>var Button = pc.createScript(&#39;button&#39;);\n\nButton.attributes.add(&quot;fixture&quot;, {type: &quot;string&quot;});\nButton.attributes.add(&quot;command&quot;, {type: &quot;string&quot;});\n\n\/\/ initialize code called once per entity\nButton.prototype.initialize = function() {\n    this.entity.button.on(&quot;click&quot;,this.onPress, this);\n};\n\n\/\/ update code called every frame\nButton.prototype.update = function(dt) {\n    \n};\n\nButton.prototype.onPress = function(dt) {\n    var fixture = this.fixture;\n    var command = this.command;\n\n    let client = this.app.client;\n\n    let topic = &quot;fromPlayCanvas&quot;;\n    let metric = `{&quot;fixture&quot;:&quot;` + fixture + `&quot;, &quot;command&quot;:&quot;` + command + `&quot;}`;\n\n    client.publish(topic, metric);\n};\n\/\/Button.prototype.show = (message) =&gt; alert(message)\n\n\/\/ swap method called for script hot-reloading\n\/\/ inherit your script state here\n\/\/ Button.prototype.swap = function(old) { };\n\n\/\/ to learn more about script anatomy, please read:\n\/\/ https:\/\/developer.playcanvas.com\/en\/user-manual\/scripting\/<\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-media-text is-stacked-on-mobile\"><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"395\" height=\"215\" src=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2023-10-13-120018.png\" alt=\"\" class=\"wp-image-2873 size-full\"\/><\/figure><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">\u2190\u3053\u3053\u306efixture\u3068command\u306b\u66f8\u304b\u308c\u3066\u3044\u308b\u5185\u5bb9\u304c\u9001\u3089\u308c\u308b\u3002<\/p>\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">\u6ce8\u610f\u70b9<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u9001\u4fe1\u3059\u308b\u5185\u5bb9\u3092\u6c7a\u5b9a\u3057\u3066\u3044\u308blet metric\u306b\u3064\u3044\u3066\u4eca\u56de\u306f&#8221;(\u30c0\u30d6\u30eb\u30af\u30a9\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3)\u3068`(\u30d0\u30c3\u30af\u30af\u30a9\u30fc\u30c8)\u3092\u4f7f\u3044\u5206\u3051\u3066\u3044\u308b\u3002'(\u30b7\u30f3\u30b0\u30eb\u30af\u30a9\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3)\u306f\u4f7f\u3063\u3066\u3044\u306a\u3044\u3002\u30d0\u30c3\u30af\u30af\u30a9\u30fc\u30c8\u306e\u4ee3\u308f\u308a\u306b\u30b7\u30f3\u30b0\u30eb\u30af\u30a9\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u3082\u52d5\u4f5c\u3059\u308b\u3053\u3068\u304c\u78ba\u8a8d\u3067\u304d\u305f\u305f\u3081\u3001\u597d\u307f\u3067\u5909\u66f4\u3057\u3066\u554f\u984c\u306a\u3044\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u76f8\u9055\u70b9<\/h3>\n\n\n\n<div class=\"wp-block-media-text is-stacked-on-mobile\"><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"379\" height=\"106\" src=\"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2023-10-13-113858.png\" alt=\"\" class=\"wp-image-2865 size-full\"\/><\/figure><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3068\u306e\u9055\u3044\u306fNode-RED\u306bJSON\u306e\u5909\u63db\u3092\u884c\u3046\u30ce\u30fc\u30c9\u3092\u8ffd\u52a0\u3057\u306a\u304f\u3066\u3082\u3057\u3063\u304b\u308a\u3068JSON\u5f62\u5f0f\u306b\u306a\u3063\u3066\u3044\u305f\u3068\u3044\u3046\u70b9\u3002<\/p>\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb9<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/smartlight.co.jp\/2023\/05\/24\/hatsudai-lab-digital-twin-tutorial-9\/\">\u521d\u53f0\u30e9\u30dc\u30fb\u30c7\u30b8\u30bf\u30eb\u30c4\u30a4\u30f3\u30fb\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb9 \u2013 \u30b9\u30de\u30fc\u30c8\u30e9\u30a4\u30c8\u682a\u5f0f\u4f1a\u793e (smartlight.co.jp)<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span style=\"text-decoration: underline;\">~\u30dc\u30bf\u30f3\u3092\u5897\u3084\u3057\u3066\u9001\u308b\u4fe1\u53f7\u3092\u5909\u3048\u308b~<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u30dc\u30bf\u30f3\u3092\u5897\u3084\u3057\u3066\u540d\u524d\u3092\u5909\u3048\u308b\u3002\u4f4d\u7f6e\u3082\u5909\u3048\u308b\u3053\u3068\u3067\u4e8c\u3064\u306e\u30dc\u30bf\u30f3\u3092\u62bc\u305b\u308b\u3088\u3046\u306b\u306a\u308b\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">PLAYCANVAS<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">PLAY:<a href=\"https:\/\/playcanv.as\/p\/LKgPMk6u\/\" data-type=\"link\" data-id=\"https:\/\/playcanv.as\/p\/LKgPMk6u\/\">https:\/\/playcanv.as\/p\/LKgPMk6u\/<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">FORK:<a href=\"https:\/\/playcanvas.com\/project\/1149680\/overview\/digital-twin\" data-type=\"link\" data-id=\"https:\/\/playcanvas.com\/project\/1149680\/overview\/digital-twin\">https:\/\/playcanvas.com\/project\/1149680\/overview\/digital-twin<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/blog.smartlight.co.jp\/?p=2733\" data-type=\"link\" data-id=\"https:\/\/blog.smartlight.co.jp\/?p=2733\">\u524d\u306e\u8a18\u4e8b<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/blog.smartlight.co.jp\/?p=2887\" data-type=\"link\" data-id=\"https:\/\/blog.smartlight.co.jp\/?p=2887\">\u6b21\u306e\u8a18\u4e8b<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u306e\u8a18\u4e8b \u6b21\u306e\u8a18\u4e8b \u6ce8\u610f \u3053\u306e\u8a18\u4e8b\u3060\u3051\u3092\u898b\u3066\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306e\u64cd\u4f5c\u306f\u591a\u5206\u3067\u304d\u306a\u3044\u3002\u53c2\u8003\u306b\u3057\u305f\u8cc7\u6599\u3092\u57fa\u306b\u30dd\u30a4\u30f3\u30c8\u3084\u3084\u3063\u3066\u307f\u305f\u611f\u60f3\u306a\u3069\u3092\u8f09\u305b\u3066\u3044\u304f\u3002 \u53c2\u8003\uff1a\u521d\u53f0DT \u2013 \u30b9\u30de\u30fc\u30c8\u30e9\u30a4\u30c8\u682a\u5f0f\u4f1a\u793e (smartlight.co.j<\/p>\n","protected":false},"author":8,"featured_media":2878,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jin_ogp_image_url":"","_jin_last_featured_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[10,3],"tags":[],"class_list":["post-2622","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oikawa","category-intern"],"jetpack_featured_media_url":"https:\/\/blog.smartlight.co.jp\/wp-content\/uploads\/2023\/10\/dmx13.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/blog.smartlight.co.jp\/index.php?rest_route=\/wp\/v2\/posts\/2622","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.smartlight.co.jp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.smartlight.co.jp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.smartlight.co.jp\/index.php?rest_route=\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.smartlight.co.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2622"}],"version-history":[{"count":22,"href":"https:\/\/blog.smartlight.co.jp\/index.php?rest_route=\/wp\/v2\/posts\/2622\/revisions"}],"predecessor-version":[{"id":2967,"href":"https:\/\/blog.smartlight.co.jp\/index.php?rest_route=\/wp\/v2\/posts\/2622\/revisions\/2967"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.smartlight.co.jp\/index.php?rest_route=\/wp\/v2\/media\/2878"}],"wp:attachment":[{"href":"https:\/\/blog.smartlight.co.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2622"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.smartlight.co.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2622"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.smartlight.co.jp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2622"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}