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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
mackee
August 29, 2014
Programming
6.9k
1
Share
Perl meets Real World
YAPC::Asia 2014 2014-08-29 by @mackee_w
mackee
August 29, 2014
More Decks by mackee
See All by mackee
perlをWebAssembly上で動かすと何が嬉しいの??? / Where does Perl-on-Wasm actually make sense?
mackee
0
920
Agentに至る道 〜なぜLLMは自動でコードを書けるようになったのか〜
mackee
6
5.7k
今!ソフトウェアエンジニアがハードウェアに手を出すには
mackee
14
7k
ワンバイナリWebサービスのススメ
mackee
10
8.7k
tanukistack ライブコーディング / tanukistack live-coding
mackee
0
630
range over funcの使い道と非同期N+1リゾルバーの夢 / about a range over func
mackee
0
1.1k
perl for shell, awk and sed programmers
mackee
3
2.8k
今更GoのWebフレームワークを作ろうとしているワケ / Why am I trying to create a Go web framework now?
mackee
1
1.1k
database/sqlでNullを扱う歴史とsql.Null[T]の登場 / sql.Null[T] history
mackee
0
990
Other Decks in Programming
See All in Programming
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
270
AI時代の仕事技芸論 — ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ
kuranuki
0
110
開発とはなにか、Essenceカーネルで見えるもの
ukin0k0
0
210
色即是空、空即是色、データサイエンス
kamoneggi
1
200
AIエージェントの隔離技術の徹底比較
kawayu
0
430
プロパティの順序で型推論が壊れる!? TypeScript6.0の修正からContext-Sensitivityの仕組みを追う
bicstone
2
1.1k
New "Type" system on PicoRuby
pocke
1
190
Copilot CLI の継戦能力を高める コンテキスト管理
nozomutu
1
1k
Skillは並べた。動かなかった。契約で繋いだ。— 65個のSkillから、自走する開発サイクルへ
junholee
0
760
OSもどきOS
arkw
0
170
AI駆動開発勉強会 広島支部 第一回勉強会 AI駆動開発概要とワークショップ
hayatoshimiu
0
390
AlarmKitで明後日起きれるアラームアプリを作る
trickart
0
150
Featured
See All Featured
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
220
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
The Language of Interfaces
destraynor
162
26k
Test your architecture with Archunit
thirion
1
2.2k
Believing is Seeing
oripsolob
1
130
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
580
How to build a perfect <img>
jonoalderson
1
5.5k
What's in a price? How to price your products and services
michaelherold
247
13k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.2k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
820
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
A Modern Web Designer's Workflow
chriscoyier
698
190k
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৯Θͳ͍