Slide 1

Slide 1 text

PerlͷTwitter Ϟδϡʔϧͷ঺հ גࣜձࣾfonfun ඌܗ మ࣍ (OGATA Tetsuji) Twitter: @xtetsuji 2012/03/21

Slide 2

Slide 2 text

ࣗݾ঺հ

Slide 3

Slide 3 text

ࣗݾ঺հ • ඌܗ మ࣍ (OGATA Tetsuji) • Twitter: @xtetsuji • Blog: http://post.tetsuji.jp/ • Α͘ॻ͘΋ͷ: Perl / Shell Script / JavaScript • ʮTwitter APIษڧձʯ͸લճॳग़੮Ͱɺ ͻΐΜͳ͜ͱ͔ΒLTΛ͢Δ͜ͱʹͳͬͨ

Slide 4

Slide 4 text

ॴଐ঺հ • גࣜձࣾfonfun(ϑΥϯϑΝϯ) http://www.fonfun.co.jp/ • ओྗ੡඼ɿϦϞʔτϝʔϧ http://rmail.jp/ (Twitter: @rmailjp) • Hokkaido.pm http://hokkaido.pm.org/ (Twitter: @hokkaidopm)

Slide 5

Slide 5 text

͸͡Ίʹ • ֶੜͷօ͞Μɺࣾձਓͷօ͞Μɺ Java HackerͷΈͳ͞Μɺ͜Μʹͪ͸ • Java͸શવॻ͚·ͤΜ(͢Έ·ͤΜ) • PerlΛ໿9೥ॻ͍͍ͯ·͕͢ɺͦΕ΄Ͳ Perl΋஌Γ·ͤΜ(஌͕ࣝภ͍ͬͯΔ)

Slide 6

Slide 6 text

͸͡Ίʹ • ͱ͍ͬͨΘ͚Ͱɺࢲ͸Perlͷ୅දͱ͍͏ ྗྔ΋ͳ͍ͷͰɺ͋·Γظ଴͠ͳ͍Ͱ Լ͍͞ • Apache mod_perl͸ৄ͍͠΄͏Ͱ͢

Slide 7

Slide 7 text

Agenda

Slide 8

Slide 8 text

Agenda • ΠϚυΩͷPerlͷ঺հ • Perlʹৄ͘͠ͳ͍ਓ޲͚ɿPerl؀ڥߏங • Twitterؔ࿈ͷPerlϞδϡʔϧΛ͍͔ͭ͘ ঺հ

Slide 9

Slide 9 text

ΠϚυΩͷPerlͷ঺հ

Slide 10

Slide 10 text

ΠϚυΩͷPerlͷ঺հ • ܰྔݴޠͰΑ͋͘Δޡղ • ݹ͍: Perl • ৽͍͠: PHP, Python, Ruby

Slide 11

Slide 11 text

ΠϚυΩͷPerlͷ঺հ • ਖ਼͍͠ཧղ • ೔ʑਐԽΛଓ͚͍ͯΔ: Perl, PHP, Python, Ruby • Perl͸ࠓ΋ʮݹ͍ʯͷͰ͸ܾͯ͠ແ͘ ʮݹ͔͘Β͋Δʯͱ͍͏ઌൃͳ͚ͩ • ݕࡧͰग़ͯ͘Δʮݹ͍৘ใʯ͕ωοΫ

Slide 12

Slide 12 text

ΠϚυΩͷPerlͷ঺հ • Perl͸ࠓ΋༷ʑͳϋοΧʔ(Perl Monger) ʹΑͬͯ೔ʑਐԽΛଓ͚͍ͯΔ • ͢΂ͯ͸঺հ͖͠Ε·ͤΜ͕ɺࠓճͷ ࿩ͷϕʔεͱͯ͠໾ʹཱͭ࿩Λগ͠…

Slide 13

Slide 13 text

ΠϚυΩͷPerlͷ঺հ • ؀ڥߏங: Perlbrew • Rubyͷrvm(Ruby Version Manager)ɺ PythonͷpythonbrewͷΑ͏ͳ΋ͷ • طଘͱ͸ผͷPerl؀ڥΛ؆୯ʹ࡞Δࣄ ͕Ͱ͖Δ΋ͷ

Slide 14

Slide 14 text

Perlbrew • ৄ͘͠͸ http://perlbrew.pl/ Λࢀর͢Δ ͔ɺ”perlbrew” Ͱݕࡧͯ͠ΈΔ • ͱͯ΋؆୯ • OS(Distribution)ඪ४ͷPerl؀ڥΛԚͣ͞ ʹࡁΉ

Slide 15

Slide 15 text

Perlbrew

Slide 16

Slide 16 text

Perlbrew • PerlbrewͷΠϯετʔϧ • $ curl -kL http://install.perlbrew.pl | bash • γΣϧ؀ڥม਺ͷઃఆ(.bashrcʹ௥ه) • source ~/perl5/perlbrew/etc/bashrc • ͜Ε͚ͩ

Slide 17

Slide 17 text

Perlbrew • Perlbrewͷ஫ҙ఺ • Ϗϧυʹඞཁͳ؀ڥ͕ඞཁ • Linux(e.g. Debian)ͩͱbuild-essential • Mac OS X ͩͱ Xcode + α

Slide 18

Slide 18 text

Perlbrew • PerlbrewͰ Perl 5.14.2 ΛΠϯετʔϧ • perlbrew install perl-5.14.2

Slide 19

Slide 19 text

Perlbrew • Perl 5.14.2 ͕ೖͬͨΒ࢖͑ΔΑ͏ʹ͢Δ • $ perlbrew switch perl-5.14.2 • cpanm (App::cpanminus) ΋ೖΕΔ • $ perlbrew install-cpanm cpanm ίϚϯυ͕࢖͑ΔΑ͏ʹͳΔ

Slide 20

Slide 20 text

Perl and CPAN

Slide 21

Slide 21 text

Perl and CPAN • CPAN (͠ʔͺΜ) = Comprehensive Perl Archive Network • PerlϞδϡʔϧͷڊେͳϥΠϒϥϦ

Slide 22

Slide 22 text

Perl and CPAN

Slide 23

Slide 23 text

Perl and CPAN

Slide 24

Slide 24 text

Perl and CPAN • Ϟδϡʔϧݕࡧ͸ metacpan.org ͔ search.cpan.org Ͱߦ͑Δ • ͦΕͰ͸ search.cpan.org ͰʮTwitterʯΛ ݕࡧͯ͠ΈΔ͜ͱʹ…

Slide 25

Slide 25 text

Twitter Module of Perl

Slide 26

Slide 26 text

Twitter Module of Perl

Slide 27

Slide 27 text

Twitter Module of Perl • ࠓճ͸144ݸݟ͔ͭͬͨ • ͪͳΈʹ “Tweet” Ͱ͸51ݸݟ͔ͭͬͨ • ͲΕΛ࢖͏ͱΑ͍͔͸ɺ׆ൃʹϝϯς φϯε͞Ε͍ͯΔ͔͕Ұͭͷࢦඪ • ࠷ऴߋ৽೔͕ҰͭͷࢀߟʹͳΓ·͢

Slide 28

Slide 28 text

Twitter Module of Perl • େ͖͘෼͚ͯҎԼͷΑ͏ͳ΋ͷ͕͋Δ • ୯ମͰ࢖͑ΔAPIͷϥούʔ • ԿΒ͔ͷϑϨʔϜϫʔΫͷϓϥάΠϯ (WAFؚΉ)

Slide 29

Slide 29 text

Twitter Module of Perl • ͨͿΜ࣌ؒ΋ࠩ͠ഭ͖ͬͯͨ͜Ζͳͷ Ͱɺ͍͔ͭ͘ओཁͳϞδϡʔϧΛ঺հ • ԿΒ͔ͷϑϨʔϜϫʔΫͷϓϥάΠϯ ͱͯ͠ͷTwitterϞδϡʔϧ͸ׂѪ

Slide 30

Slide 30 text

Net::Twitter • OAuth͔Β౤ߘ·ͰɺҰ࿈ͷREST APIʹ ରԠ͢Δϝιου͕ἧ͍ͬͯΔ • ଟ͘ͷPerl TwitterϞδϡʔϧ΋͜ΕΛ ࢖͍ͬͯΔέʔε͕ଟ͍(ͬΆ͍) • ಉ͡࡞ऀͷܰྔ൛Ϟδϡʔϧ Net::Twitter::Lite΋͋Δ

Slide 31

Slide 31 text

AnyEvent::Twitter:: Stream • ͪ͜Β͸REST APIͰ͸ͳ͘Twitterͷ Streaming APIΛར༻Ͱ͖Δ΋ͷ • ϞμϯͳPerlͰσϑΝΫτελϯμʔυ Ͱ͋ΔΠϕϯτۦಈϑϨʔϜϫʔΫ AnyEventΛϕʔεͱͨ͠Ϟδϡʔϧ

Slide 32

Slide 32 text

Tweet::ToDelicious • ͪ͜Β͸Ԡ༻ϞδϡʔϧͷҰྫ • Twitter APIʹAnyEvent::Twitter::StreamΛ ࢖ͬͨϞδϡʔϧ • πΠʔτʹURLؚ͕·Ε͍ͯͨΒࢦఆͷ DeliciousΞΧ΢ϯτʹϒοΫϚʔΫొ࿥ ͕Ͱ͖Δ

Slide 33

Slide 33 text

؆୯ͳαϯϓϧ

Slide 34

Slide 34 text

؆୯ͳαϯϓϧ • ϞμϯͳPerlͷ؀ڥ͸PerlbrewͰ࡞Εͨ • cpanm΋ೖΕͨ • ඞཁͳϞδϡʔϧͷΠϯετʔϧ • $ cpanm AnyEvent::Twitter::Stream • ґଘϞδϡʔϧ΋ࣗಈతʹೖΔ

Slide 35

Slide 35 text

؆୯ͳαϯϓϧ • AnyEvent::Twitter::StreamΛ࢖ͬͯɺݕࡧ ΛோΊͳ͕ΒৄࡉΛϩάʹه࿥͢Δɺ ؆୯ͳΞϓϦέʔγϣϯΛ࡞ͬͯΈΔ • https://gist.github.com/2139804 twitter-stream-search.pl (by xtetsuji) • ͨͿΜखܰʹࢼͤΔ͸ͣ

Slide 36

Slide 36 text

؆୯ͳαϯϓϧ DEMO

Slide 37

Slide 37 text

·ͱΊ

Slide 38

Slide 38 text

·ͱΊ • Perlʹ΋TwitterͷREST API΍Streaming APIΛ࢖͏Ϟδϡʔϧ͕ॆ࣮͍ͯ͠Δ • Perlࣗମ΋ࠓ΋ϞμϯʹਐԽ͍ͯ͠Δ • Έͳ͞Μ΋Perlॻ͍ͯΈ·ͤΜ͔ʁ

Slide 39

Slide 39 text

࣭໰ / ؾʹͳΔ఺ • ࠙਌ձʹग़·͢ͷͰɺͦͷ࣌ʹؾܰʹ ੠Λ͔͚ͯԼ͍͞(تͼ·͢) • perlbrew/cpanmͷΠϯετʔϧͰ͏·͘ ߦ͔ͳ͍౳͋Ε͹ɺࢲʹڠྗͰ͖Δ͜ ͱ͕͋Δ͔΋͠Ε·ͤΜ(࣭໰׻ܴ) • ݕࡧ͢Δͱ৭ʑग़͖ͯ·͢(ଞྗຊئ)

Slide 40

Slide 40 text

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