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!

CyberAgent SGE Engineer

October 03, 2021
Tweet

More Decks by CyberAgent SGE Engineer

Other Decks in Programming

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. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠