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

    View Slide

  2. • גࣜձࣾαΠόʔΤʔδΣϯτ
    • 4(&౷ׅຊ෦ٕज़౷ׅࣨࣨ௕
    • ࢠձࣾࣾ$50
    • גࣜձࣾ$SBGU&HH
    • גࣜձࣾαϜβοϓ
    • നҪɹӳ
    • ΤϯδχΞ
    • #MPH
    IUUQBNFCMPKQHPPEPP
    ͓લɺ୭Α
    • 5XJUUFS
    !HPPEPP
    • %2
    ͙ͪ͢Ή '#


    ϓΫϦϙ ཱྀܳਓ

    View Slide

  3. • -0705
    • നҪՈͷϖοτ
    • ໊લɿͪΐ͜
    • ೥ྸɿ̍ࡀ
    ࠓ೔ͷήετ ओ໾͔΋ʣ

    View Slide

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

    View Slide

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

    View Slide

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

    w·ͱΊ

    View Slide

  7. ϏδϡΞϧ
    ϓϩάϥϛϯά

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    ͕࢖ΘΕ͍ͯΔͱͷ͜ͱ

    View Slide

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

    View Slide

  20. ͜ͷࢠͷ࿩Ͱ͢

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  24. ͜ͷࢠ͕ಈ͖·͢

    View Slide

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

    View Slide

  26. -0705ͱ͸ʁ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  30. γεςϜߏ੒

    View Slide

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

    View Slide

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






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

    View Slide

  33. ղੳ

    View Slide

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

    View Slide

  35. ϒϥ΢β
    ೝূαʔό
    ωετ -0705







    ͜͜ʹ஫໨ʂ

    View Slide

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

    View Slide

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

    View Slide

  38. ϒϥ΢β
    ೝূαʔό
    ωετ -0705








    ࠷ॳʹωετʹରͯ͠
    ઀ଓνΣοΫ͍ͯ͠Δ
    ˞ϗετ໊͸͍ΘΏΔػثຖʹৼΒΕΔσόΠε*%
    ωετ
    ϒϥ΢β

    View Slide

  39. ϒϥ΢β
    ೝূαʔό
    ωετ -0705







    ೝূαʔό͔Β
    ΞΫηετʔΫϯऔಘ
    ϒϥ΢β
    ೝূαʔό


    View Slide

  40. ϒϥ΢β
    ೝূαʔό
    ωετ -0705







    ϒϥ΢β
    ωετʹରͯ͠
    ϒϩοΫͷ໋ྩΛ௨৴
    ωετ -0705




    View Slide

  41. ϒϥ΢β
    ೝূαʔό
    ωετ -0705







    ϒϥ΢β ωετ -0705




    ωετͱ8FC4PDLFUͰ
    ௨৴͍ͯ͠Δʂ

    View Slide

  42. 8FC4PDLFUͷ
    ௨৴಺༰Λ
    ݟͯΈΑ͏ʂ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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}

    View Slide

  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}"

    View Slide

  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"}

    View Slide

  51. ղੳ݁Ռ

    {"command":"insert_legs"}
    {"command":"speak"}
    {"command":"joy"}
    {“command":"exercise"}

    View Slide

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

    View Slide

  53. 1)1ʹΑΔ
    ࠶࣮૷

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  61. ֤ίϚϯυͷ࣮૷

    ͱͯ͠ղੳͨ͠จࣈྻΛࢦఆ
    ʮتͿʯ͸ʮKPZʯͱݴͬͨܗ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  69. ݟൺ΂ͯΈΔͱɾɾ

    View Slide

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

    View Slide

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

    View Slide

  72. View Slide

  73. View Slide

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

    View Slide

  75. %FNP

    View Slide

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

    View Slide

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

    View Slide

  78. ·ͱΊ

    View Slide

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

    View Slide

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

    View Slide

  81. -FU`T1)1
    1SPHSBNNJOH

    View Slide

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

    View Slide