Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Perl meets Real World
Search
mackee
August 29, 2014
Programming
1
6.7k
Perl meets Real World
YAPC::Asia 2014 2014-08-29 by @mackee_w
mackee
August 29, 2014
Tweet
Share
More Decks by mackee
See All by mackee
Agentに至る道 〜なぜLLMは自動でコードを書けるようになったのか〜
mackee
5
1.4k
今!ソフトウェアエンジニアがハードウェアに手を出すには
mackee
14
5.5k
ワンバイナリWebサービスのススメ
mackee
10
8.1k
tanukistack ライブコーディング / tanukistack live-coding
mackee
0
130
range over funcの使い道と非同期N+1リゾルバーの夢 / about a range over func
mackee
0
1k
perl for shell, awk and sed programmers
mackee
3
2.6k
今更GoのWebフレームワークを作ろうとしているワケ / Why am I trying to create a Go web framework now?
mackee
1
1k
database/sqlでNullを扱う歴史とsql.Null[T]の登場 / sql.Null[T] history
mackee
0
880
マイクロサービス化を利用した Goへの移行事例
mackee
0
1k
Other Decks in Programming
See All in Programming
Querying Design System デザインシステムの意思決定を支える構造検索
ikumatadokoro
1
1.1k
OSS開発者の憂鬱
yusukebe
12
4.2k
Atomics APIを知る / Understanding Atomics API
ssssota
1
150
Vueで学ぶデータ構造入門 リンクリストとキューでリアクティビティを捉える / Vue Data Structures: Linked Lists and Queues for Reactivity
konkarin
1
300
Web エンジニアが JavaScript で AI Agent を作る / JSConf JP 2025 sponsor session
izumin5210
4
1.7k
予防に勝る防御なし(2025年版) - 堅牢なコードを導く様々な設計のヒント / Growing Reliable Code PHP Conference Fukuoka 2025
twada
PRO
37
12k
ネストしたdata classの面倒な更新にさようなら!Lensを作って理解するArrowのOpticsの世界
shiita0903
1
430
Swift Concurrency 年表クイズ
omochi
3
230
Kotlinで実装するCPU/GPU 「協調的」パフォーマンス管理
matuyuhi
0
410
「正規表現をつくる」をつくる / make "make regex"
makenowjust
1
420
Feature Flags Suck! - KubeCon Atlanta 2025
phodgson
0
120
KoogではじめるAIエージェント開発
hiroaki404
1
480
Featured
See All Featured
Done Done
chrislema
186
16k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.3k
RailsConf 2023
tenderlove
30
1.3k
Bash Introduction
62gerente
615
210k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
How to train your dragon (web standard)
notwaldorf
97
6.4k
Speed Design
sergeychernyshev
32
1.2k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Building a Scalable Design System with Sketch
lauravandoore
463
33k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
1.8k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Music & Morning Musume
bryan
46
6.9k
Transcript
Perl meets Real World 2014-08-29 YAPC::Asia 2014
@mackee_w a.k.a Ϛίϐʔ • ໘ന๏ਓΧϠοΫ ٕज़෦ • αʔόαΠυΤϯδχΞ(Perl) • ιʔγϟϧήʔϜͷ։ൃ/ӡ༻
• ࠓ࡞͍ͬͯΔήʔϜࣄલొडத
ͯ͞
WebΤϯδχΞ͕ ԿނϋʔυΣΞ͔ʁ
ڈগ͚ͩ͠ϋʔυΣΞͷ ࣄΛͨ͠ • ઇࢁͰϥδίϯϔϦΛඈ͢ࣄ • Webͷٕज़͔͠ແ͔ͬͨ • ௐͨΒ࠷ۙͷϋʔυ͍͢͜͝ͱʹͳͬ ͍ͯͨ
ٕͬͨज़ • RaspberryPi • Arduino • OpenCV • Ansible
ϋʔυΣΞ શ෦ҰൠతʹೖखՄೳ
ιϑτΣΞ “Web”ʹ௨ͣΔٕज़ͨͪ
ۤ࿑͚͋ͬͨΕͲ ָ͔ͬͨ͠ͷͰ”ํ๏”ͷ Ұ෦Λհ͠·͢
ࠓ͢͜ͱ • RaspberryPiͱArduino • ΦʔϓϯιʔεϋʔυΣΞ • Perl͚ͩͰωΪΛৼΔ • ࣗ࡞ϋʔυΣΞͱະདྷ
ࠓ͞ͳ͍͜ͱ • ϋϯμ͚ʢձ͔Β͓ͦΒౖ͘ΒΕΔʣ • ճ࿏ઃܭʢཁ͕͋Εผͷػձʹʣ • ΨνͷArduinoʢ͍ͨΒ࠙ձͱ͔Ͱʣ • ͦͷଞΨνిࢠ࡞
ୈҰষ Raspberry PiͱArduino
Raspberry Pi http://commons.wikimedia.org/wiki/File:Raspberry_Pi_Photo.jpg
• ARM 700MHz • 512MB RAM(Model B) • SD CARD
• 100BASE-TX LAN • USB2.0 x 2 • HDMI and RCA VIDEO • Audio • Power by USB
Q. Ͱɺ͜ΕͰPerlಈ͘ͷʁ
A. ͪΖΜಈ͖·͢ʂ
ී௨ͷLinux͕ಈ͘ • Raspbian (DebianͷRasPi͚ΧελϜ) • NOOBS(for beginner) • Pidora(FedoraͷRasPi͚ΧελϜ)
ͦͦͷRasPiͷత • খதֶੜൃల్্ࠃ͚ͷITڭҭ • RCAϏσΦδϟοΫ͕͍͍ͯΔͷൃల్্ ࠃͷϒϥϯςϨϏͰ͏ͨΊ • MinecraftͷRasPi൛ͱ͔͋ͬͯPythonͰΧελ ϚΠζͰ͖ͨΓ͢Δ
kano ࢠڙ͚ͷΦʔϧΠϯϫϯͷPCΩοτ https://www.kickstarter.com/projects/alexklein/kano-a-computer-anyone-can-make
͔͠͠େਓ༷ͯ͠ʑͳ ϓϩδΣΫτ͕ڵͬͨ
RaspberryPiΛͬͨϓϩδΣΫτ
Raspberry Pi Կނ/׆༻͞Ε͔ͨ
·͍͋ΖΜͳཧ༝͋Δ • ͍҆ (B/B+͕4000ԁఔ) • ΫϨδοτΧʔυαΠζ • ଞʹطʹಉछͷͷ͋ͬͨ • ڥ͕͍ͬͯΔ(ग़͕ࣗॳ৺ऀ͚)
• ࡞ྫ͕ଟ͍
GPIO
GPIO - ݱ࣮ੈքʹհೖ͢ΔͨΊͷखஈ
ిؾΛݟฉ͖͠ɺ͠ΌΔ • ϞʔλʔͳͲͷۦಈػثͷಈ࡞ -> ࢛ࢶ • ηϯαʔͰͷपғঢ়گͷݕ -> ޒײ
ిؾͱ͍͏࠷ϨΠϠʔΛ खܰʹѻ͑Δͷ͕RasPi
Arduinoͷ
• ిؾΛѻ͏͜ͱʹಛԽ • 8bit ϚΠίϯΛࡌ • ॲཧೳྗඇৗʹখ͍͞ • USBೖྗઐ༻ •
ྫ֎͋Δ • LinuxͳͲ౸ఈಈ͔ͳ͍ • ϐϯΛૢ࡞͢Δ
Q. Ͱɺ͜ΕͰPerlಈ͘ͷʁ
A. (‘A`) ಈ͔ͳ͍ɻɻɻ
ϋʔυΣΞ୯ମͰඇྗ͕ͩ ΤίγεςϜ͕ڧྗ
Arduino IDE ArduinoʹඞཁͳͷΛશͯ٧ΊࠐΜͩιϑτΣΞ
γʔϧυ ُࢠُํࣜͰ֦ு͢ΔΞλονϝϯτ
ϥΠϒϥϦArduinoΛલఏͱͨ͠Ωοτ
͜͏͍͚Δ
RaspberryPiͰΓ͍ͨ͜ͱ • ը૾ॲཧͱ͔Τϯίʔυͱ͔ॏ͍ͨॲཧ • ෳࡶͳΞϧΰϦζϜΛཁ͢Δͷ • PC͚ͷϥΠϒϥϦ͕͙͢ಈ͖͍͢ • ؆୯ͳΦϯΦϑఔͷϋʔυΣΞ੍ޚ
ArduinoͰΓ͍ͨ͜ͱ • ࣗ࡞ͷిࢠ෦ͳͲͱ࿈ܞ͢Δέʔε • Arduino͚ϥΠϒϥϦ͕͢Ͱʹ͋Δ߹ • PWM੍ޚͳͲͷߴʹΦϯɾΦϑΛΔ߹ • RasPiͩͱ͜͏͍͏͜ͱΛΔͱCPUΛΊͬ ͪΌ৯͏
ීஈ2ͭΛΈ߹ΘͤΔ͜ͱ ͕ଟ͍Ͱ͕͢ɺͦΕޙͷষͰ
ୈೋষ ΦʔϓϯϋʔυΣΞ
ΦʔϓϯιʔεϥΠηϯε • ࣗ༝ͳ࠶൦͕Մೳ • ιʔείʔυ͕ೖखͰ͖Δ • ੜΛ࡞ͬͯྑ͍ • ͦͷଞϥΠηϯε͕ܧঝ͞ΕΔͱ͔
ϋʔυΣΞʹ͓͚Δ Φʔϓϯιʔεͱ
ϋʔυΣΞͷιʔε • ϑΝʔϜΣΞ • ճ࿏ਤ • ෦ใ • ج൘ஔਤ
Arduinoͷྫ
ճ࿏ਤ(Arduino Unoͷ߹) http://arduino.cc/en/Main/ArduinoBoardUno
ج൘ஔਤEagleͱ͍͏ ճ࿏ਤ/ج൘ΤσΟλͷܗࣜͰ ൦͞Ε͍ͯΔ
ͭ·Γ؆୯ʹArduinoΛ ࣗ࡞͢Δ͜ͱ͕ग़དྷΔ
ݱʹΫϩʔϯ͕͍ͬͺ͍ଘࡏ͢Δ
ArduinoΛࣗ࡞͢ΔϝϦοτ • ػೳͷՃ • Ϟʔλʔ੍ޚճ࿏ΛΈࠐΉͱ͔ • ϑοτϓϦϯτͷݮগ • ΊͬͪΌখ͍͞ػثʹੵΈ͍ͨ •
ArduinoͷΤίγεςϜͷԸܙΛड͚ΒΕΔ
ϋʔυΛΦʔϓϯʹ͢Δ͜ͱ • ϋοΫΛଅ͢ • ΤίγεςϜ͕ൃల͍͢͠ • ྲྀߦΔͱ͕ͨ͘͞Μग़ͯ͘Δ • ArduinoRasPi໊લΛ͏ͷΛϥΠη ϯεͰ੍ݶ͍ͯ͠Δ
ΦʔϓϯʹͳΕϋʔυΣΞ ͰϚογϡΞοϓ(ࢮޠ) ग़དྷΔͱ͍͏͜ͱͰ͢Ͷ
ୈࡾষ Perl͚ͩͰωΪΛৼΔ
None
ωΪΛৼΔͱʁʁʁ • ݩʑχίχίಈըͷॳԻϛΫಈըͰωΪΛ ৼΔͷ͕͋Δ • χίχίٕज़෦ͰೖಈըͰΑ͘ࡐʹͳ Δ • ͍ΖΜͳͷͰωΪΛৼ͍ͬͯΔ
ҎԼͷറΓͰ࡞Δ • ϋϯμ͚ͳ͠ ϒϨουϘʔυͳ͠ • Arduinoݴޠॻ͔ͳ͍ • Perlॻ͘(YAPCͳͷͰ)
ࡐྉ • Raspberry Pi Model B • Arduino Leonardo(Ոʹ͋ͬͨ) •
GROVE System
GROVE Systemͱ
͜͏͍͏ͪͬͪΌ͍෦͕͋ͬͯ
͜͏͍͏γʔϧυΛArduinoʹࡌ͚ͬͯ
͜Μͳ͔Μ͡Ͱͭͳ͛ͯ͏
͏ͨΊͷϥΠϒϥϦطʹ උ͞Ε͍ͯΔ
Step 1 Raspberry PiͱArduinoͰ ͓͠ΌΓ͢Δ
Firmata͍ͬͯ͏ͷΛ͍·͢ • FirmataArduinoͱ͔ͷϚΠίϯͱPCؒ Ͱ͓͠ΌΓ͢ΔͨΊͷϓϩτίϧ • ͓खܰಋೖՄೳ
ࠓFirmataͰLEDΛޫΒ͢
PerlͰFirmataΛ͠ΌΔ
ArduinoʹFirmataͷ εέονΛॻ͖ࠐΉ
ϋʔυͷ΄͏ͷ४උ • ArduinoͱGROVE Base ShieldΛଓ • γʔϧυͷD4ʹLEDϞδϡʔϧΛଓ • ArduinoͱRaspberry PiΛͭͳ͛Δ
Step 2 αʔϘϞʔλΛ͏
GROVEͷαʔϘϞʔλ D3ʹͭͳ͍ͩ
Step 3 WebΞϓϦԽ͢Δ
Amon2Ͱ࡞Δ
WebΞϓϦͷػೳ • WebSocketͰ֯ใΛड৴ • ͦͷΛRedisʹॻ͖ࠐΉ
ผϓϩηεͷϫʔΧʔ • ແݶϧʔϓͰRedisͷΛࢹ • มԽ͕͋ΕFirmataͰArduinoʹૹ৴
σϞ
࠷ऴষ ࣗ࡞ϋʔυΣΞͱະདྷ
ϋʔυΣΞΛࣗͰ࡞ΕΔ ࣮࣌֬ʹདྷ͍ͯΔ • 3DϓϦϯλͱ͔ੲߟ͑ΒΕͳ͔ͬͨ • ᝑମΛ͔ͬ͜ྑ͘࡞Δ͕ૉૣ͘ղܾ • ϋʔυΣΞΛखചΓ͢Δ࣌ʹͳͬͨ • Make
Fairͱ͔Ͷ
IRKit http://getirkit.com/
IRKit • தArduinoޓج൘ • ͯ͢Φʔϓϯ • ճ࿏ઃܭᝑମͷઃܭΛݸਓͰߦ͏
ϋʔυΣΞΛ͕ͬͭΓΒ ͣʹ࡞ΕΔ࣌ • ࣗͷख׳ΕͨݴޠͰهड़Ͱ͖Δ • ϋϯμ͚ෆཁ • εςοϓΞοϓ͢ΔͱϒϨουϘʔυ ϋϯμ͚͕ඞཁʹͳΔ͚ΕͲ
·ͩ·ͩΓͳ͍͜ͱ (͕Βͳ͍͚͔ͩ) • ΤϯδχΞϦϯάͱͯ͠ͷΈԽ • PerlͰݴ͏CPANΈ͍ͨͳͭ • ษڧձɺϫʔΫγϣοϓ • ςετڥ
ϋʔυΣΞͳਓͱग़ձ͍͍ͨʂ • WebͷਓͱΑ͘ձ͏͚ΕͲɺ͜͏͍͏͜ ͱ͍ͬͯΔਓͳ͔ͳ͔ग़ձΘͳ͍ • ͍ͨΒհͯ͠ཉ͍͠͠ɺ͋ͳ͕ͨͦ͏Ͱ ͋Ε༑ͩͪʹͳ͍ͬͯͩ͘͞
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠
࣭ٙԠ ͕࣌ؒ༨ͬͨΒΔ༻
ແઢԽ
γϦΞϧΛແઢԽ • XBee/XBee WiFiͦͷଞແઢLANϞδϡʔϧ • γϦΞϧΛZigBeeWiFiʹมͰ͖Δ • ٕదʹҙ • ւ֎Ϟδϡʔϧి๏ͰҾ͔͔ͬΔͱ
͔͋Δ
RasPi Cam
Raspberry Piઐ༻Χϝϥ • খ͍͍ͦͦ҆͜͜͞͠(2000ԁ) • ͨͩ͠RasPiઐ༻ • RasPiΛϥΠϒΧϝϥͱ͔ʹग़དྷΔ • ϔϦͰ͍·ͨ͠ʢখ͍͞͠USB৯Θͳ͍