Blockly/CustomBlock ¤Î¥Ð¥Ã¥¯¥¢¥Ã¥×¥½¡¼¥¹(No.8)


[[Programing]] > [[Blockly2017>Programing/Blockly2017]] > ¥«¥¹¥¿¥à¥Ö¥í¥Ã¥¯¤Îºî¤êÊý

#title("Blockly1.0¡§¥«¥¹¥¿¥à¥Ö¥í¥Ã¥¯¤Îºî¤êÊý")

#ref(final.png,nolink)

#contents()

* ³µÍ× [#f08c9217]

¤³¤³¤Ç¤Ï¡¢Blockly¤Î¥Ç¥â¤ò²þÎɤ·¤Æ¡¢Íð¿ô¤òºî¤ë¥Ö¥í¥Ã¥¯¤òÄɲä·¤Þ¤¹¡£

Blockly¤Î¥Ö¥í¥Ã¥¯¤Ï¡¢Blockly¤Î¥¨¥Ç¥£¥¿UI¤Ë¤è¤ê¡¢¥É¥é¥Ã¥°¡õ¥É¥í¥Ã¥×¤Çºî¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

°ÊÁ°¤Ï¡¢¥Ö¥í¥Ã¥¯¤òºî¤Ã¤¿¸å¡¢Google Closure tools¤ÇºÆ°µ½Ì¤È¤«¤·¤Æ¤¿¤±¤É¡¢¤½¤ì¤¬ÉÔÍפʤΤǡ¢¤±¤Ã¤³¤¦´Êñ¤Ç¤¹¡£


** ¥Ç¥â¤ÎÆâÍÆ [#h771662c]

¸µ¤Ë¤Ê¤ë¥Ç¥â¤Ï¡¢Blockly¤Î¥Ç¥â¤Ë´Þ¤Þ¤ì¤ëGenerating JavaScript¤Ç¤¹¡£¤³¤Î¥Ç¥â¤Ç¤Ï¡¢Blockly¤ò»È¤Ã¤Æ¡¢Javascript¤Î¥³¡¼¥É¤òÊÔ½¸¤Ç¤­¤Þ¤¹¡£

-[[Blockly Demo: Generating JavaScript:https://blockly-demo.appspot.com/static/demos/generator/index.html]]

** Äɲ乤ë¥Ö¥í¥Ã¥¯ [#hee713c2]

Toolbox¤ÎMath¥«¥Æ¥´¥ê¤Ë¡Örandom¡×¥Ö¥í¥Ã¥¯¤òÄɲä·¤Þ¤¹¡£


*ºî¶È½àÈ÷ [#f176a70c]

** ¥½¡¼¥¹¥³¡¼¥É¤ò¥À¥¦¥ó¥í¡¼¥É [#v3942239]

Blockly¤Î¥½¡¼¥¹¥³¡¼¥É¤ò¡¢¼¡¤Î¤É¤Á¤é¤«¤«¤é¥À¥¦¥ó¥í¡¼¥É¤·¤ÆŸ³«¤·¤Þ¤¹¡£

-[[Github¤«¤éClone:https://github.com/google/blockly]]
-[[ZIP¥Õ¥¡¥¤¥ë¤Î¥À¥¦¥ó¥í¡¼¥É:https://github.com/google/blockly/archive/master.zip]]


** ¥Ç¥â¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤¹¤ë [#x2d2441a]

Generating JavaScript¤Ï¡¢¥À¥¦¥ó¥í¡¼¥É¤·¤¿¥Õ¥¡¥¤¥ë¤Î/demos/generator¤Ë¤¢¤ê¤Þ¤¹¡£


** ¥Ç¥â¥×¥í¥°¥é¥à¤òÊ£À½¤¹¤ë [#b367259f]

/demos/generator¥Õ¥©¥ë¥À¤ò¡¢Æ±¤¸/demos¥Õ¥©¥ë¥ÀÆâ¤Ë´Ý¤´¤ÈÊ£À½¤·¤Þ¤¹¡£

¤³¤³¤Ç¤ÏÎã¤È¤·¤Æ¡¢/demos/test¤È¤·¤ÆÊ£À½¤·¤Æ¤¤¤Þ¤¹¡£

index.html¤ò³«¤¤¤Æ¡¢Æ°ºî³Îǧ¤·¤Æ¤ª¤­¤Þ¤·¤ç¤¦¡£

*  ¥Ö¥í¥Ã¥¯¤òºî¤ë [#mc94f82e]

** ¥Ö¥í¥Ã¥¯¤ò¥Ç¥¶¥¤¥ó¤¹¤ë [#e7f30605]

¥Ö¥í¥Ã¥¯¤Î¥Ç¥¶¥¤¥ó¤Ï¡¢Blockly Demo¤Ë¤¢¤ë[[Blockly Developer Tools:https://blockly-demo.appspot.com/static/demos/blockfactory/index.html]]¤Ç¹Ô¤¤¤Þ¤¹¡£

+[[Blockly Developer Tools:https://blockly-demo.appspot.com/static/demos/blockfactory/index.html]]¤ò³«¤¯
+ ¡ÖBlock Factory¡×¥¿¥Ö¤ò¥¯¥ê¥Ã¥¯
+ ¼¡¿Þ¤Î¤è¤¦¤Ë¥Ö¥í¥Ã¥¯¤òÁȤ߹ç¤ï¤»¤ë
+ ¡ÖSave "¡¦¡¦¡¦¡¦"¡×¥Ü¥¿¥ó¤Þ¤¿¤Ï ¡ÖUpdate "¡¦¡¦¡¦¡¦"¡×¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯

#ref(block_factoy_s3.png,nolink)

Êݸ¤·¤¿¥³¡¼¥É¤Ï¡¢¥Ö¥é¥¦¥¶¤Î¥í¡¼¥«¥ë¥¹¥È¥ì¡¼¥¸¤Ë¡Ö¥é¥¤¥Ö¥é¥ê¡×¤È¤·¤ÆÊݸ¤µ¤ì¤Þ¤¹¡£

** ¥Ö¥í¥Ã¥¯¤ò¥¨¥¯¥¹¥Ý¡¼¥È¤¹¤ë [#ha2db5b3]

+¡ÖBlock Exporter¡×¥¿¥Ö¤ò¥¯¥ê¥Ã¥¯
+ º¸Â¦¤Ç¡¢¥¨¥¯¥¹¥Ý¡¼¥È¤·¤¿¤¤¥Ö¥í¥Ã¥¯¤Î¥Á¥§¥Ã¥¯¥Ü¥Ã¥¯¥¹¤ò¥ª¥ó¤Ë¤¹¤ë
+ Export Settings¤òÀßÄê
-- Block Definition(s): ¥Ö¥í¥Ã¥¯ÄêµÁ
--- Format: Javascript
--- File Name¡§(Îã)random_block.js
-- Generator Stub(s): ÊÑ´¹¥³¡¼¥É
--- Language: Javascript
--- File Name:(Îã)random.js
+¡ÖExport¡×¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¡¢²¼µ­¤Î¥Õ¥©¥ë¥À¤Ë³ÊǼ¤¹¤ë
-- ¥Ö¥í¥Ã¥¯ÄêµÁ /blocks/random_block.js
-- ÊÑ´¹¥³¡¼¥É /generators/javaScript/random.js

#ref(block_expoter_s.png,nolink)

¢¨¥¨¥¯¥¹¥Ý¡¼¥È»þ¤ËÊ£¿ô¤Î¥Ö¥í¥Ã¥¯¤òÁªÂò¤·¤Æ¤ª¤¯¤È¡¢°ìÁȤΥե¡¥¤¥ë¤Ë¤Þ¤È¤á¤é¤ì¤ë¡£¤·¤«¤·¡¢¤³¤Î¸å¤Î¡ÖÊÑ´¹¥³¡¼¥É¤ÎÄɲáפ¬¾å½ñ¤­¤µ¤ì¤Æ¤·¤Þ¤¦¤Î¤ÇÃí°Õ¡£

** ÊÑ´¹¥³¡¼¥É¤òÄɲ乤ë [#kc1a1548]

random.js¤òÊÔ½¸¤·¤Æ¡¢¥Ö¥í¥Ã¥¯¤«¤éÊÑ´¹¤¹¤ë¥³¡¼¥É¤òµ­½Ò¤·¤Þ¤¹(5¹ÔÌÜ)¡£

 Blockly.JavaScript['random'] = function(block) {
   var value_min = Blockly.JavaScript.valueToCode(block, 'min', Blockly.JavaScript.ORDER_ATOMIC);
   var value_max = Blockly.JavaScript.valueToCode(block, 'max', Blockly.JavaScript.ORDER_ATOMIC);
   // TODO: Assemble JavaScript into code variable.
   var code = 'Math.floor( Math.random() * (' + value_max + ' - ' + value_min + ' + 1 )) + ' +  value_min;
   // TODO: Change ORDER_NONE to the correct strength.
   return [code, Blockly.JavaScript.ORDER_NONE];
 };


** index.html¤Ë¥Ö¥í¥Ã¥¯¤òÆɤ߹þ¤à [#tb02c9bb]

/demos/test/index.html¤ò³«¤¤¤Æ¡¢¡Örandom_block.js¡×¤È¡Örandom.js¡×¤òÆɤ߹þ¤ß¤Ç¤­¤ë¤è¤¦¤Ë¤·¤Þ¤¹(6¹ÔÌܤÈ7¹ÔÌÜ)¡£

 <title>Blockly Demo: Generating JavaScript</title>
 <script src="../../blockly_compressed.js"></script>
 <script src="../../blocks_compressed.js"></script>
 <script src="../../javascript_compressed.js"></script>
 <script src="../../msg/js/en.js"></script>
 <script src="../../blocks/random_block.js"></script>
 <script src="../../generators/javaScript/random.js"></script>


** Toolbox¤Ë¥«¥¹¥¿¥à¥Ö¥í¥Ã¥¯¤òÄɲ乤ë [#t2a9dbdd]

Toobox¤Ï¡¢<xml id="toolbox" style="display: none"> - </xml>¤Ç¡¢index.html¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

¤³¤ÎToolbox¤ÎMath¥«¥Æ¥´¥ê¤Ë¡¢ºîÀ®¤·¤¿¡Örandom¡×¥Ö¥í¥Ã¥¯¤òÄɲä·¤Þ¤¹(5¹ÔÌÜ)¡£

 <category name="Math">
   <block type="math_number"></block>
   <block type="math_arithmetic"></block>
   <block type="math_single"></block>
   <block type="random"></block>
 </category>


** Æ°ºî³Îǧ [#s6dd5f6c]

ÊÔ½¸¤·¤¿/demos/test/index.html¤ò³«¤¯¤È¡¢Math¥«¥Æ¥´¥ê¤Ërandom¥Ö¥í¥Ã¥¯¤¬Äɲ䵤ì¤Æ¤¤¤Þ¤¹¡£

#ref(add_toolbox.png,nolink)

¤â¤Á¤í¤ó¡¢¤³¤Î¥Ö¥í¥Ã¥¯¤ò»È¤Ã¤Æ¡¢¥×¥í¥°¥é¥à¤òÁȤßΩ¤Æ¤¿¤ê¡¢³Îǧ¤·¤¿¤ê¡¢¼Â¹Ô¤·¤¿¤ê¤Ç¤­¤Þ¤¹¡£

#ref(final.png,nolink)

* ¤½¤Î¾ [#g3701ce6]

** ¹Í»¡ [#b6e7342f]

°ÊÁ°¤Î¥Ð¡¼¥¸¥ç¥ó¤Ï¡¢python¤Î¥¹¥¯¥ê¥×¥È(build.py)¤òÆ°¤«¤¹É¬Íפ¬¤¢¤Ã¤¿¡£¤¢¤ì¤Ï¡¢Google Clusur template(GCT)¤ÇJS¤Î¥¹¥¯¥ê¥×¥È¤ò¥Þ¡¼¥¸¡Ü¥ß¥Ë¥Þ¥¤¥º¤·¤Æ¤¤¤¿¤Î¤Ç¤Ï¤Ê¤¤¤«¡©

Ê̤ËGCT¤ò»È¤¦É¬ÍפϤʤ¤¤Î¤Ç¡¢¼«Ê¬¤Î¹¥¤ß¤Î¥Ä¡¼¥ë¤Ç¥ß¥Ë¥Þ¥¤¥º¤¹¤ì¤Ð¤¤¤¤¤È»×¤¦¡£

** ´ØÏ¢¥Ú¡¼¥¸ [#ab720fb9]

- [[Blockly2017>Programing/Blockly2017]] 
- [[Blockly1.0¡§¥Ä¡¼¥ë¥Ü¥Ã¥¯¥¹¤È¥ï¡¼¥¯¥¹¥Ú¡¼¥¹¤ÎÀßÄêÊýË¡>Blockly/Toolbox_WorkSpace]]

¥È¥Ã¥×   °ìÍ÷ ñ¸ì¸¡º÷ ºÇ½ª¹¹¿·   ¥Ø¥ë¥×   ºÇ½ª¹¹¿·¤ÎRSS