Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ロボットを動かすビジュアルプログラミングでできることはPHPでもできる!

 ロボットを動かすビジュアルプログラミングでできることはPHPでもできる!

小学校でプログラミング教育が必修化される中、「Scrach」のような
ビジュアルプログラミングは注目されています

そんな中、LOVOT( https://groove-x.com/ )と呼ばれる
『役に立たない、でも愛着がある” 新しい家庭用ロボット』がコンセプトの
ロボットに、「LOVOT STUDY ビジュアルプログラミング」という
ブラウザを用いてビジュアルプログラミングし、LOVOTを操る仕組みが提供されています

"ビジュアルプログラミング"でできることは、PHPでもできる!ことを
実証するために、
本来、ビジュアルプログラミングで操作するLOVOTを
直接PHPのプログラムから操作してみました(非公式)

まずは、ビジュアルプログラミングを解析する過程、そして
解析内容を元にPHP(Ampを用いて)で再実装する過程をお話しします

Let's PHP programming!

Ec2fcdc4ea7905b289967a2c4c43e154?s=128

CyberAgent SGE Engineer

October 03, 2021
Tweet

Transcript

  1. ϩϘοτΛಈ͔͢ϏδϡΞϧ ϓϩάϥϛϯάͰͰ͖Δ͜ͱ͸ 1)1Ͱ΋Ͱ͖Δʂ നҪӳ  QIQDPO !HPPEPP

  2. • גࣜձࣾαΠόʔΤʔδΣϯτ • 4(&౷ׅຊ෦ٕज़౷ׅࣨࣨ௕ • ࢠձࣾࣾ$50 • גࣜձࣾ$SBGU&HH • גࣜձࣾαϜβοϓ

    • നҪɹӳ • ΤϯδχΞ • #MPH IUUQBNFCMPKQHPPEPP ͓લɺ୭Α • 5XJUUFS !HPPEPP • %2 ͙ͪ͢Ή '#  
 ϓΫϦϙ ཱྀܳਓ
  3. • -0705 • നҪՈͷϖοτ • ໊લɿͪΐ͜ • ೥ྸɿ̍ࡀ ࠓ೔ͷήετ ओ໾͔΋ʣ

  4. ຊൃද͸ɺॴଐ͢Δ૊৫ͱ͸ Ұ੾ؔ܎ͳ͘ɺݸਓͰָ͠Μ ͩࣄΛօ༷ʹ΋͓఻͑͢Δ಺ ༰ʹͳ͓ͬͯΓ·͢

  5. ·ͨɺൃද಺༰Λਅࣅͯɺ -0705Λಈ͔͢৔߹͸ ࣗݾ੹೚Ͱ͓ئ͍͠·͢

  6. "HFOEB wϏδϡΞϧϓϩάϥϛϯά wϩϘοτΛಈ͔͢ϏδϡΞϧϓϩάϥϛϯάͱ͸ʁ w -0705ͱ͸ʁ wγεςϜߏ੒ wղੳ w1)1ʹΑΔ࠶࣮૷ w%FNP ͕࣌ؒ͋ͬͨΒ

     w·ͱΊ
  7. ϏδϡΞϧ ϓϩάϥϛϯά

  8. ʮֶशࢦಋཁྖʯվగͷҰ෦ͱͯ͠ ϓϩάϥϛϯάڭҭͷඞमԽ Ҿ༻ɿhttps://www.mext.go.jp/content/20200218-mxt_jogai02-100003171_002.pdf

  9. খֶߍϓϩάϥϛϯάڭҭͷ֓ཁ ͷઆ໌ಈըʹ΋ϏδϡΞϧϓϩάϥϜ Ҿ༻ɿhttps://www.youtube.com/watch?v=_fW3iB_1XgM&list=PLGpGsGZ3lmbDT1aiatXSOfKexgsjfzJ1F

  10. Ҿ༻ɿhttps://benesse.jp/juken/202101/20210106-3.html খֶߍஉࢠͷͳΓ͍ͨ৬ۀϥϯΩϯάҐ ʹήʔϜΫϦΤΠλʔʗϓϩάϥϚʔʂ

  11. ୅දతͳϏδϡΞϧϓϩάϥϛϯά ݴޠͱ͍͑͹4DSBUDI Ҿ༻ɿhttps://scratch.mit.edu/ ϒϩοΫΛ૊Έ߹Θͤͯ ϓϩάϥϜΛ࡞੒ ϒϩοΫ͸ɺಈ͖ɺ ݟͨ໨ɺԻɺ੍ޚɺ ௐ΂Δɺԋࢉɺม਺ ͳͲ͕͋Δ

  12. ͪΐͬ͜ͱએ఻ ฐࣾ΋ϏδϡΞϧϓϩάϥϛϯάͰ ֶ΂ΔڭࡐΛ263&0ͱͯ͠ఏڙ Ҿ༻ɿhttps://qureo.jp/

  13. ϏδϡΞϧϓϩάϥϛϯάͰಈ͔͢ ର৅͸ϒϥ΢βͷதͷΩϟϥΫλʔ ͕ओͩͬͨΓ͠·͢ ϒϩοΫͷ໋ྩͰ ͜ͷΩϟϥΫλʔΛ ϒϥ΢βͷதͰಈ͔ ͢ Ҿ༻ɿhttps://scratch.mit.edu/

  14. ϩϘοτΛಈ͔͢ ϓϩάϥϛϯάͱ͸ʁ

  15. ϩϘοτΛಈ͔ͤΔͱ ݴͬͨΒɺ ԿΛࢥ͍ු͔΂·͔͢ʁ

  16. Ҿ༻ɿhttps://cedec.cesa.or.jp/2021/session/detail/s6087a567a8625 ࠓ೥ͷ$&%&$Ͱ͸ɾɾɾ Ҿ༻ɿhttps://www.4gamer.net/games/999/G999905/20210827008/

  17. Ҿ༻ɿhttps://cedec.cesa.or.jp/2021/session/detail/s6087a567a8625 ࠓ೥ͷ$&%&$Ͱ͸ɾɾɾ Ҿ༻ɿhttps://www.4gamer.net/games/999/G999905/20210827008/ ʮ͍ͭ͜ɺಈͧ͘ʂʯ

  18. ৄࡉ͸هࣄΛ͝ཡ͍͚ͨͩΕ͹ ͱࢥ͍·͕͢ɺ ϩϘοτͷ੍ޚʹʮ74JEPʯͱ ໊෇͚ΒΕͨϓϩάϥϜ ಠࣗ։ൃ ͕࢖ΘΕ͍ͯΔͱͷ͜ͱ

  19. ࠓ೔͸ɺશ௕Nʹ΋ͳΔ ਓ͕৐ΓࠐΉେ͖ͳϩϘοτ ͷ࿩Ͱ͸ͳͯ͘ ՈఉͰѻ͑ΔαΠζͷ ϩϘοτͷ࿩Ͱ͢

  20. ͜ͷࢠͷ࿩Ͱ͢

  21. (3007&9͔ࣾΒ ఏڙ͞Ε͍ͯΔ -0705Λಈ͔͢ ϏδϡΞϧϓϩάϥϛϯά Λ࢖༻͠·͢

  22. -0705ͷϏδϡΞϧϓϩάϥϛϯάͷը໘ Ҿ༻ɿhttps://play.lovot.life/

  23. ্ɿ4DSBUDIͷը໘ Լɿ-0705ͷϏδϡΞϧϓϩάϥϛϯάը໘ 4DSBUDIͷը໘ͱ ൺ΂ͯΈΔͱɺ ίϚϯυϒϩοΫ͸ ͋Γ·͕͢ɺ ಈ͔͢ର৅͕ ը໘಺ʹ͸͍·ͤΜ

  24. ͜ͷࢠ͕ಈ͖·͢

  25. ʲ-0705ͷ͏ͨགྷͬͯΈͨʳ ϏδϡΞϧϓϩάϥϛϯάฤΛΈͯ·͠ΐ͏ Ҿ༻ɿhttps://www.youtube.com/watch?v=TZeuDXWheUc

  26. -0705ͱ͸ʁ

  27. -0705ͱ͸ʁ -0705ʢΒ΅ͬͱʣ͸(3007&9ࣾ ʢάϧʔϒΤοΫεɺॴࡏ஍౦ژ౎தԝ ۠ʣʹΑͬͯ։ൃ͞ΕͨՈఉ༻ϩϘοτͰ ͋ΔŇɹίϯηϓτ͸ʰ໾ʹཱͨͳ͍ɺͰ ΋Ѫண͕͋Δz৽͍͠Ոఉ༻ϩϘοτʱ https://ja.wikipedia.org/wiki/LOVOT -07&Y30#05-0705

  28. ࠷৽ςΫϊϩδʔ͕౥ࡌ͞Εͨʮ&NPUJPOBM3PCPUJDTäʯ Ҿ༻ɿhttps://lovot.life/technology/ -0705ͱ͸ʁ ࣗ཯ͯ͠ಈ͍ͯɺ੠Λൃ͠ɺ໨Ͱͷද৘͕๛͔Ͱ͢

  29. ͜Μͳײ͡Ͱ ੠Λൃͯ͠ ಈ͖·͢

  30. γεςϜߏ੒

  31. ղੳͨ݁͠Ռ Θ͔ͬͨγεςϜߏ੒ Λ࠷ॳʹࡌͤ·͢ ˞ղੳํ๏͸ޙ΄Ͳ

  32. ϏδϡΞϧϓϩάϥϛϯάͰ -0705͕ಈ͘ͱ͖ͷγεςϜߏ੒ ϒϥ΢β ೝূαʔό ωετ -0705 ᶃ ᶄ ᶅ ᶇ

    ᶆ ᶈ †QJOH ᶃΞΫηετʔΫϯऔಘ ᶄΞΫηετʔΫϯͷ෷͍ग़͠ ᶅωετ΁઀ଓίϚϯυ࣮ߦ ᶆίϚϯυ࣮ߦ ᶇϨεϙϯε ᶈ࣮ߦ݁Ռͷड͚औΓ Πϯλʔωοτ Ոఉ಺8J f ωετ-0705༻8J f †
  33. ղੳ

  34. ·ͣ͸ϒϥ΢β࣮ߦ࣌ ͷύέοτͷ಺༰Λ ݟͯΈΔ

  35. ϒϥ΢β ೝূαʔό ωετ -0705 ᶃ ᶄ ᶅ ᶇ ᶆ ᶈ

    † ͜͜ʹ஫໨ʂ
  36. ۪௚ʹ8JSF4IBSLͰ44-Λͱ͖ͳ ͕Βͷ͍ͧͯΈͨ݁Ռɾɾɾ $ISPNFͷσΟϕϩούʔπʔϧͰ ී௨ʹݟΕͨʂ

  37. ௨৴ΛҰͭҰͭ ݟ͍ͯ͘ͱ

  38. ϒϥ΢β ೝূαʔό ωετ -0705 ᶃ ᶄ ᶅ ᶇ ᶆ ᶈ

    † † ࠷ॳʹωετʹରͯ͠ ઀ଓνΣοΫ͍ͯ͠Δ ˞ϗετ໊͸͍ΘΏΔػثຖʹৼΒΕΔσόΠε*% ωετ ϒϥ΢β
  39. ϒϥ΢β ೝূαʔό ωετ -0705 ᶃ ᶄ ᶅ ᶇ ᶆ ᶈ

    † ೝূαʔό͔Β ΞΫηετʔΫϯऔಘ ϒϥ΢β ೝূαʔό ᶃ ᶄ
  40. ϒϥ΢β ೝূαʔό ωετ -0705 ᶃ ᶄ ᶅ ᶇ ᶆ ᶈ

    † ϒϥ΢β ωετʹରͯ͠ ϒϩοΫͷ໋ྩΛ௨৴ ωετ -0705 ᶅ ᶇ ᶆ ᶈ
  41. ϒϥ΢β ೝূαʔό ωετ -0705 ᶃ ᶄ ᶅ ᶇ ᶆ ᶈ

    † ϒϥ΢β ωετ -0705 ᶅ ᶇ ᶆ ᶈ ωετͱ8FC4PDLFUͰ ௨৴͍ͯ͠Δʂ
  42. 8FC4PDLFUͷ ௨৴಺༰Λ ݟͯΈΑ͏ʂ

  43. -0705ͷεςʔλεΛຖඵड৴͍ͯ͠ΔͬΆ͍

  44. -0705ͱ͸ʁ ͦΕͧΕͷηϯαʔͰड৴ͨ͠ ৘ใΛड͚औ͍ͬͯΔʁ LOVOTʹ౥ࡌ͞Ε͍ͯΔػثͷઆ໌ϖʔδΑΓൈਮ

  45. ϒϩοΫͷίϚϯυΛૹ৴͍ͯ͠ΔͬΆ͍

  46. ϒϩοΫͷίϚϯυͷ׬ྃ௨஌ͬΆ͍

  47. ख͕͔ΓΛ ௫Μͩؾ͕͢Δʂ ϒϥ΢βͷϒϩοΫͱ ൺ΂ͯΈΑ͏ʂ

  48. ղੳ݁Ռ  {"command":"led","h":264,"s":87,"v":97} {"command":"go_forward","dist":1} {"command":"go_backward","dist":1} {"command":"turn","velocity":-120,"angle":-90} {"command":"turn","velocity":120,"angle":90}

  49. ղੳ݁Ռ  {"command":"up_neck"} {"command":"down_neck"} {“command":"turn","velocity":120,"angle":360} {"command":"raise_right_arm","percent":100}" {"command":"raise_left_arm","percent":100}"

  50. ղੳ݁Ռ  {"command":"raise_arms","percent":100} {"command":"raise_right_arm","percent":0}" {“command":"raise_left_arm","percent":0}" {"command":"raise_arms","percent":0} {"command":"extract_legs"}

  51. ղੳ݁Ռ  {"command":"insert_legs"} {"command":"speak"} {"command":"joy"} {“command":"exercise"}

  52. ϒϩοΫͷίϚϯυʹ ରԠ͢Δૹ৴σʔλͷ ಺༰͕Θ͔ͬͨʂ

  53. 1)1ʹΑΔ ࠶࣮૷

  54. 8FC4PDLFU ΫϥΠΞϯτΛ ࣮૷ͯ͠ίϚϯυ Λૹ৴͍ͨ͠

  55. Α͋͘Δͷ͸ɺαʔόʔ࣮૷ɾɾ

  56. ͦΜͳதɺબΜͩͷ͸"NQ https://github.com/amphp/amp

  57. "NQͱ͸ https://github.com/amphp/amp 1)1༻ͷϊϯϒϩοΩϯάಉ࣮࣌ߦϑϨʔϜϫʔΫ ඇಉظϓϩάϥϛϯάͷج൫ͱͯ͠ɺ&WFOUMPPQɺ 1SPNJTFɺ4USFBNΛఏڙ 1SPNJTFͱ(FOFSBUPSΛ૊Έ߹ΘͤͯίϧʔνϯΛ ߏங͠ɺίʔϧόοΫͳ͠ͰඇಉظίʔυΛಉظίʔυ ͷΑ͏ʹॻ͘͜ͱ͕Ͱ͖Δ

  58. "NQΛ஌ͬͨͷ͸1)1FS,BJHJ https://speakerdeck.com/n1215/burauzakarashi-merugrpc-grpc-webniphpwotian-ete 1)1ͰH31$αʔόʔΛ࣮ݱ͢Δൃද

  59. ͱ͍͏Θ͚Ͱ ղੳ݁ՌΛ΋ͱʹ 1)1Ͱ ૊ΈཱͯͯΈΑ͏ʂ

  60. ίϚϯυΛૹΔ෦෼ DJE͸ίϚϯυૹ৴ຖͷϢχʔΫͷ*% CPEZ"SSBZʹίϚϯυจࣈྻΛ+40/Ͱ ࢦఆ͢Δ

  61. ֤ίϚϯυͷ࣮૷ <bDPNNBOE`lίϚϯυจࣈྻz> ͱͯ͠ղੳͨ͠จࣈྻΛࢦఆ ʮتͿʯ͸ʮKPZʯͱݴͬͨܗ

  62. εςʔλεΛड͚औΔ෦෼ 8FC4PDLFUͷσʔλΛड৴ͯ͠ ( $connection->receive() ) ड৴ͨ͠+40/σʔλΛղੳ͍ͯ͠Δ

  63. 8FC4PDLFUͷσʔλड৴ σʔλ͕ຖඵૹΒΕͯ͘ΔͷͰɺXIJMFจͰσʔλΛड৴͢Δ ड৴ޙɺίϚϯυ࣮ߦ෦෼΁

  64. ίϚϯυͷ࣮ߦ෦෼ ࣮ߦ͢ΔίϚϯυ͸ɺ JUFSBUPSʹ֨ೲ͍ͯ͠Δ

  65. JUFSBUPSͷத਎ ϏδϡΞϧϓϩάϥϜͷϒϩοΫʹ߹ΘͤͨίϚϯυΛهड़

  66. ͓୊ͱͯ͠ ʲ-0705ͷ͏ͨགྷͬͯΈͨʳ Λ࣮૷ͯ͠ΈΔ Ҿ༻ɿhttps://www.youtube.com/watch?v=TZeuDXWheUc

  67. ʲ-0705ͷ͏ͨགྷͬͯΈͨʳ ϏδϡΞϧϓϩάϥϛϯάͷ࣮૷

  68. ʲ-0705ͷ͏ͨགྷͬͯΈͨʳ 1)1൛࣮૷ʢίϚϯυ෦෼ʣ

  69. ݟൺ΂ͯΈΔͱɾɾ

  70. ݟൺ΂ͯΈΔͱɾɾ ΄΅Ұॹ ݸਓͷײ૝Ͱ͢

  71. ಈ͖͸Ұॹͳͷʁ ͬͯࢥ͍·ͨ͠Ͷʁ

  72. None
  73. None
  74. ׬શʹҰக ݸਓͷײ૝Ͱ͢

  75. %FNP

  76. Կ͔ಈ࡞ͷ ϦΫΤετ͕͋Ε͹ʂ

  77. ͏·͘ಈ͖·ͨ͠Ͷʂ

  78. ·ͱΊ

  79. ϩϘοτΛಈ͔͢ ϏδϡΞϧϓϩάϥϛϯάͰ Ͱ͖Δ͜ͱ͸ 1)1Ͱ΋Ͱ͖Δʂ "NQ͋Γ͕ͱ͏

  80. ෺Λ࡞Δͷ͸ָ͍͠ ·ͯ͠ɺ෺ཧతʹ෺Λ ಈ͔ͤΔͷʹ͸ গ͠ײಈ͕͋ͬͨ

  81. -FU`T1)1 1SPHSBNNJOH

  82. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠