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

Perl meets Real World

mackee
August 29, 2014

Perl meets Real World

YAPC::Asia 2014 2014-08-29 by @mackee_w

mackee

August 29, 2014
Tweet

More Decks by mackee

Other Decks in Programming

Transcript

  1. Perl meets Real World
    2014-08-29 YAPC::Asia 2014

    View Slide

  2. @mackee_w a.k.a Ϛίϐʔ
    • ໘ന๏ਓΧϠοΫ ٕज़෦
    • αʔόαΠυΤϯδχΞ(Perl)
    • ιʔγϟϧήʔϜͷ։ൃ/ӡ༻
    • ࠓ࡞͍ͬͯΔήʔϜ͸ࣄલొ࿥ड෇த

    View Slide

  3. ͯ͞

    View Slide

  4. WebΤϯδχΞ͕
    Կނϋʔυ΢ΣΞ͔ʁ

    View Slide

  5. ڈ೥গ͚ͩ͠ϋʔυ΢ΣΞͷ
    ࢓ࣄΛͨ͠
    • ઇࢁͰϥδίϯϔϦΛඈ͹͢࢓ࣄ
    • Webͷٕज़͔͠ແ͔ͬͨ
    • ௐ΂ͨΒ࠷ۙͷϋʔυ͸͍͢͜͝ͱʹͳͬ
    ͍ͯͨ

    View Slide

  6. ࢖ٕͬͨज़
    • RaspberryPi
    • Arduino
    • OpenCV
    • Ansible

    View Slide

  7. ϋʔυ΢ΣΞ
    શ෦ҰൠతʹೖखՄೳ

    View Slide

  8. ιϑτ΢ΣΞ
    “Web”ʹ΋௨ͣΔٕज़ͨͪ

    View Slide

  9. ۤ࿑΋͚͋ͬͨΕͲ
    ָ͔ͬͨ͠ͷͰ”ํ๏”ͷ
    Ұ෦Λ঺հ͠·͢

    View Slide

  10. ࠓ೔࿩͢͜ͱ
    • RaspberryPiͱArduino
    • Φʔϓϯιʔεϋʔυ΢ΣΞ
    • Perl͚ͩͰωΪΛৼΔ
    • ࣗ࡞ϋʔυ΢ΣΞͱະདྷ

    View Slide

  11. ࠓ೔࿩͞ͳ͍͜ͱ
    • ϋϯμ෇͚ʢձ৔͔Β͓ͦΒౖ͘ΒΕΔʣ
    • ճ࿏ઃܭʢཁ๬͕͋Ε͹ผͷػձʹʣ
    • ΨνͷArduinoʢ͍ͨΒ࠙਌ձͱ͔Ͱʣ
    • ͦͷଞΨνిࢠ޻࡞

    View Slide

  12. ୈҰষ
    Raspberry PiͱArduino

    View Slide

  13. Raspberry Pi
    http://commons.wikimedia.org/wiki/File:Raspberry_Pi_Photo.jpg

    View Slide

  14. • ARM 700MHz
    • 512MB RAM(Model B)
    • SD CARD
    • 100BASE-TX LAN
    • USB2.0 x 2
    • HDMI and RCA VIDEO
    • Audio
    • Power by USB

    View Slide

  15. Q. Ͱɺ͜ΕͰPerl͸ಈ͘ͷʁ

    View Slide

  16. A. ΋ͪΖΜಈ͖·͢ʂ

    View Slide

  17. ී௨ͷLinux͕ಈ͘
    • Raspbian (DebianͷRasPi޲͚ΧελϜ)
    • NOOBS(for beginner)
    • Pidora(FedoraͷRasPi޲͚ΧελϜ)

    View Slide

  18. ͦ΋ͦ΋ͷRasPiͷ໨త
    • খதֶੜ΍ൃల్্ࠃ޲͚ͷITڭҭ
    • RCAϏσΦδϟοΫ͕෇͍͍ͯΔͷ΋ൃల్্
    ࠃͷϒϥ΢ϯ؅ςϨϏͰ࢖͏ͨΊ
    • MinecraftͷRasPi൛ͱ͔΋͋ͬͯPythonͰΧελ
    ϚΠζͰ͖ͨΓ͢Δ

    View Slide

  19. kano
    ࢠڙ޲͚ͷΦʔϧΠϯϫϯͷPCΩοτ
    https://www.kickstarter.com/projects/alexklein/kano-a-computer-anyone-can-make

    View Slide

  20. ͔͠͠େਓ΋஫໨༷ͯ͠ʑͳ
    ϓϩδΣΫτ͕ڵͬͨ

    View Slide

  21. RaspberryPiΛ࢖ͬͨϓϩδΣΫτ

    View Slide

  22. Raspberry Pi͸
    Կނ஫໨/׆༻͞Ε͔ͨ

    View Slide

  23. ·͍͋ΖΜͳཧ༝͸͋Δ
    • ͍҆ (B/B+͕4000ԁఔ౓)
    • ΫϨδοτΧʔυαΠζ
    • ଞʹ΋طʹಉछͷ΋ͷ͸͋ͬͨ
    • ؀ڥ͕੔͍ͬͯΔ(ग़͕ࣗॳ৺ऀ޲͚)
    • ࡞ྫ͕ଟ͍

    View Slide

  24. GPIO

    View Slide

  25. GPIO - ݱ࣮ੈքʹհೖ͢ΔͨΊͷखஈ

    View Slide

  26. ిؾΛݟฉ͖͠ɺ͠Ό΂Δ
    • ϞʔλʔͳͲͷۦಈػثͷಈ࡞ -> ࢛ࢶ
    • ηϯαʔͰͷपғঢ়گͷݕ஌ -> ޒײ

    View Slide

  27. ిؾͱ͍͏࠷΋௿ϨΠϠʔΛ
    खܰʹѻ͑Δͷ͕RasPi

    View Slide

  28. Arduinoͷ࿩

    View Slide

  29. • ిؾΛѻ͏͜ͱʹಛԽ
    • 8bit ϚΠίϯΛ౥ࡌ
    • ॲཧೳྗ͸ඇৗʹখ͍͞
    • USB͸ೖྗઐ༻
    • ྫ֎΋͋Δ
    • LinuxͳͲ౸ఈಈ͔ͳ͍
    • ௚઀ϐϯΛૢ࡞͢Δ

    View Slide

  30. Q. Ͱɺ͜ΕͰPerl͸ಈ͘ͷʁ

    View Slide

  31. A. (‘A`) ಈ͔ͳ͍ɻɻɻ

    View Slide

  32. ϋʔυ΢ΣΞ୯ମͰ͸ඇྗ͕ͩ
    ΤίγεςϜ͕ڧྗ

    View Slide

  33. Arduino IDE
    Arduinoʹඞཁͳ΋ͷΛશͯ٧ΊࠐΜͩιϑτ΢ΣΞ

    View Slide

  34. γʔϧυ
    ਌ُࢠُํࣜͰ֦ு͢ΔΞλονϝϯτ

    View Slide

  35. ϥΠϒϥϦ΍ArduinoΛલఏͱͨ͠Ωοτ

    View Slide

  36. ๻͸͜͏࢖͍෼͚Δ

    View Slide

  37. RaspberryPiͰ΍Γ͍ͨ͜ͱ
    • ը૾ॲཧͱ͔Τϯίʔυͱ͔ॏ͍ͨॲཧ
    • ෳࡶͳΞϧΰϦζϜΛཁ͢Δ΋ͷ
    • PC޲͚ͷϥΠϒϥϦ͕͙͢ಈ͖΍͍͢
    • ௒؆୯ͳΦϯΦϑఔ౓ͷϋʔυ΢ΣΞ੍ޚ

    View Slide

  38. ArduinoͰ΍Γ͍ͨ͜ͱ
    • ࣗ࡞ͷిࢠ෦඼ͳͲͱ࿈ܞ͢Δέʔε
    • Arduino޲͚ϥΠϒϥϦ͕͢Ͱʹ͋Δ৔߹
    • PWM੍ޚͳͲͷߴ଎ʹΦϯɾΦϑΛ΍Δ৔߹
    • RasPiͩͱ͜͏͍͏͜ͱΛ΍ΔͱCPUΛΊͬ
    ͪΌ৯͏

    View Slide

  39. ීஈ͸2ͭΛ૊Έ߹ΘͤΔ͜ͱ
    ͕ଟ͍Ͱ͕͢ɺͦΕ͸ޙͷষͰ

    View Slide

  40. ୈೋষ
    Φʔϓϯϋʔυ΢ΣΞ

    View Slide

  41. ΦʔϓϯιʔεϥΠηϯε
    • ࣗ༝ͳ࠶൦෍͕Մೳ
    • ιʔείʔυ͕ೖखͰ͖Δ
    • ೿ੜ෺Λ࡞ͬͯ΋ྑ͍
    • ͦͷଞϥΠηϯε͕ܧঝ͞ΕΔͱ͔

    View Slide

  42. ϋʔυ΢ΣΞʹ͓͚Δ
    Φʔϓϯιʔεͱ͸

    View Slide

  43. ϋʔυ΢ΣΞͷιʔε
    • ϑΝʔϜ΢ΣΞ
    • ճ࿏ਤ
    • ෦඼৘ใ
    • ج൘഑ஔਤ

    View Slide

  44. Arduinoͷྫ

    View Slide

  45. ճ࿏ਤ(Arduino Unoͷ৔߹)
    http://arduino.cc/en/Main/ArduinoBoardUno

    View Slide

  46. ج൘഑ஔਤ΋Eagleͱ͍͏
    ճ࿏ਤ/ج൘ΤσΟλͷܗࣜͰ
    ൦෍͞Ε͍ͯΔ

    View Slide

  47. ͭ·Γ؆୯ʹArduinoΛ
    ࣗ࡞͢Δ͜ͱ͕ग़དྷΔ

    View Slide

  48. ݱʹΫϩʔϯ͕͍ͬͺ͍ଘࡏ͢Δ

    View Slide

  49. ArduinoΛࣗ࡞͢ΔϝϦοτ
    • ػೳͷ௥Ճ
    • Ϟʔλʔ੍ޚճ࿏Λ૊ΈࠐΉͱ͔
    • ϑοτϓϦϯτͷݮগ
    • ΊͬͪΌখ͍͞ػثʹੵΈ͍ͨ
    • ArduinoͷΤίγεςϜͷԸܙΛड͚ΒΕΔ

    View Slide

  50. ϋʔυΛΦʔϓϯʹ͢Δ͜ͱ
    • ϋοΫΛଅ͢
    • ΤίγεςϜ͕ൃల͠΍͍͢
    • ྲྀߦΔͱ໛଄඼͕ͨ͘͞Μग़ͯ͘Δ
    • Arduino΍RasPi͸໊લΛ࢖͏ͷΛϥΠη
    ϯεͰ੍ݶ͍ͯ͠Δ

    View Slide

  51. ΦʔϓϯʹͳΕ͹ϋʔυ΢ΣΞ
    Ͱ΋ϚογϡΞοϓ(ࢮޠ)
    ग़དྷΔͱ͍͏͜ͱͰ͢Ͷ

    View Slide

  52. ୈࡾষ
    Perl͚ͩͰωΪΛৼΔ

    View Slide

  53. View Slide

  54. ωΪΛৼΔͱ͸ʁʁʁ
    • ݩʑχίχίಈըͷॳԻϛΫಈըͰωΪΛ
    ৼΔ΋ͷ͕͋Δ
    • χίχίٕज़෦Ͱೖ໳ಈըͰΑ͘୊ࡐʹͳ
    Δ
    • ͍ΖΜͳ΋ͷͰωΪΛৼ͍ͬͯΔ

    View Slide

  55. ҎԼͷറΓͰ࡞Δ
    • ϋϯμ෇͚ͳ͠ ϒϨουϘʔυͳ͠
    • Arduinoݴޠ͸ॻ͔ͳ͍
    • Perl͸ॻ͘(YAPCͳͷͰ)

    View Slide

  56. ࡐྉ
    • Raspberry Pi Model B
    • Arduino Leonardo(Ոʹ͋ͬͨ)
    • GROVE System

    View Slide

  57. GROVE Systemͱ͸

    View Slide

  58. ͜͏͍͏ͪͬͪΌ͍෦඼͕͋ͬͯ

    View Slide

  59. ͜͏͍͏γʔϧυΛArduinoʹࡌ͚ͬͯ

    View Slide

  60. ͜Μͳ͔Μ͡Ͱͭͳ͛ͯ࢖͏

    View Slide

  61. ࢖͏ͨΊͷϥΠϒϥϦ΋طʹ
    ׬උ͞Ε͍ͯΔ

    View Slide

  62. Step 1
    Raspberry PiͱArduinoͰ
    ͓͠Ό΂Γ͢Δ

    View Slide

  63. Firmata͍ͬͯ͏ͷΛ࢖͍·͢
    • Firmata͸Arduinoͱ͔ͷϚΠίϯͱPCؒ
    Ͱ͓͠Ό΂Γ͢ΔͨΊͷϓϩτίϧ
    • ͓खܰಋೖՄೳ

    View Slide

  64. ࠓ౓͸FirmataͰLEDΛޫΒ͢

    View Slide

  65. PerlͰFirmataΛ͠Ό΂Δ

    View Slide

  66. ArduinoʹFirmataͷ
    εέονΛॻ͖ࠐΉ

    View Slide

  67. ϋʔυͷ΄͏ͷ४උ
    • ArduinoͱGROVE Base ShieldΛ઀ଓ
    • γʔϧυͷD4ʹLEDϞδϡʔϧΛ઀ଓ
    • ArduinoͱRaspberry PiΛͭͳ͛Δ

    View Slide

  68. Step 2
    αʔϘϞʔλΛ࢖͏

    View Slide

  69. GROVEͷαʔϘϞʔλ
    D3ʹͭͳ͍ͩ

    View Slide

  70. Step 3
    WebΞϓϦԽ͢Δ

    View Slide

  71. Amon2Ͱ࡞Δ

    View Slide

  72. WebΞϓϦͷػೳ
    • WebSocketͰ֯౓৘ใΛड৴
    • ͦͷ஋ΛRedisʹॻ͖ࠐΉ

    View Slide

  73. ผϓϩηεͷϫʔΧʔ
    • ແݶϧʔϓͰRedisͷ஋Λ؂ࢹ
    • มԽ͕͋Ε͹FirmataͰArduinoʹૹ৴

    View Slide

  74. σϞ

    View Slide

  75. ࠷ऴষ
    ࣗ࡞ϋʔυ΢ΣΞͱະདྷ

    View Slide

  76. ϋʔυ΢ΣΞΛࣗ෼Ͱ࡞ΕΔ
    ࣌୅͸࣮֬ʹདྷ͍ͯΔ
    • 3DϓϦϯλͱ͔ੲ͸ߟ͑ΒΕͳ͔ͬͨ
    • ᝑମΛ͔ͬ͜ྑ͘࡞Δ໰୊͕ૉૣ͘ղܾ
    • ϋʔυ΢ΣΞΛखചΓ͢Δ࣌୅ʹͳͬͨ
    • Make Fairͱ͔Ͷ

    View Slide

  77. IRKit
    http://getirkit.com/

    View Slide

  78. IRKit
    • த਎͸Arduinoޓ׵ج൘
    • ͢΂ͯΦʔϓϯ
    • ճ࿏ઃܭ΍ᝑମͷઃܭΛݸਓͰߦ͏

    View Slide

  79. ϋʔυ΢ΣΞΛ͕ͬͭΓ΍Β
    ͣʹ࡞ΕΔ࣌୅
    • ࣗ෼ͷख׳ΕͨݴޠͰهड़Ͱ͖Δ
    • ϋϯμ෇͚ෆཁ
    • εςοϓΞοϓ͢ΔͱϒϨουϘʔυ΍
    ϋϯμ෇͚͕ඞཁʹͳΔ͚ΕͲ

    View Slide

  80. ·ͩ·ͩ଍Γͳ͍͜ͱ
    (๻͕஌Βͳ͍͚͔ͩ΋)
    • ΤϯδχΞϦϯάͱͯ͠ͷ࢓૊ΈԽ
    • PerlͰݴ͏CPANΈ͍ͨͳ΍ͭ
    • ษڧձɺϫʔΫγϣοϓ
    • ςετ؀ڥ

    View Slide

  81. ϋʔυ΢ΣΞͳਓͱग़ձ͍͍ͨʂ
    • Webͷਓͱ͸Α͘ձ͏͚ΕͲɺ͜͏͍͏͜
    ͱ΍͍ͬͯΔਓͳ͔ͳ͔ग़ձΘͳ͍
    • ͍ͨΒ঺հͯ͠ཉ͍͠͠ɺ͋ͳ͕ͨͦ͏Ͱ
    ͋Ε͹༑ͩͪʹͳ͍ͬͯͩ͘͞

    View Slide

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

    View Slide

  83. ࣭ٙԠ౴΍
    ͕࣌ؒ༨ͬͨΒ΍Δ༻

    View Slide

  84. ແઢԽ

    View Slide

  85. γϦΞϧΛແઢԽ
    • XBee/XBee WiFi΍ͦͷଞແઢLANϞδϡʔϧ
    • γϦΞϧΛZigBee΍WiFiʹม׵Ͱ͖Δ
    • ٕదʹ஫ҙ
    • ւ֎੡Ϟδϡʔϧ͸ి೾๏ͰҾ͔͔ͬΔͱ
    ͔͋Δ

    View Slide

  86. RasPi Cam

    View Slide

  87. Raspberry Piઐ༻Χϝϥ
    • খ͍͍ͦͦ҆͜͜͞͠(2000ԁ୆)
    • ͨͩ͠RasPiઐ༻
    • RasPiΛϥΠϒΧϝϥͱ͔ʹग़དྷΔ
    • ϔϦͰ΋࢖͍·ͨ͠ʢখ͍͞͠USB৯Θͳ͍

    View Slide