PerlのTwitter
モジュールの紹介
     株式会社fonfun
 尾形 鉄次 (OGATA Tetsuji)
    Twitter: @xtetsuji
       2012/03/21
自己紹介
自己紹介
• 尾形 鉄次 (OGATA Tetsuji)
• Twitter: @xtetsuji
• Blog: http://post.tetsuji.jp/
• よく書くもの: Perl / Shell Script / JavaScript
• 「Twitter API勉強会」は前回初出席で、
  ひょんなことからLTをすることになった
所属紹介
• 株式会社fonfun(フォンファン)
  http://www.fonfun.co.jp/
 • 主力製品:リモートメール
    http://rmail.jp/
    (Twitter: @rmailjp)
• Hokkaido.pm
  http://hokkaido.pm.org/
  (Twitter: @hokkaidopm)
はじめに
• 学生の皆さん、社会人の皆さん、
 Java Hackerのみなさん、こんにちは

• Javaは全然書けません(すみません)
• Perlを約9年書いていますが、それほど
 Perlも知りません(知識が偏っている)
はじめに

• といったわけで、私はPerlの代表という
 力量もないので、あまり期待しないで
 下さい

• Apache mod_perlは詳しいほうです
Agenda
Agenda

• イマドキのPerlの紹介
• Perlに詳しくない人向け:Perl環境構築
• Twitter関連のPerlモジュールをいくつか
 紹介
イマドキのPerlの紹介
イマドキのPerlの紹介

• 軽量言語でよくある誤解
 • 古い: Perl
 • 新しい: PHP, Python, Ruby
イマドキのPerlの紹介
• 正しい理解
 • 日々進化を続けている:
  Perl, PHP, Python, Ruby

• Perlは今も「古い」のでは決して無く
  「古くからある」という先発なだけ

• 検索で出てくる「古い情報」がネック
イマドキのPerlの紹介

• Perlは今も様々なハッカー(Perl Monger)
 によって日々進化を続けている

• すべては紹介しきれませんが、今回の
 話のベースとして役に立つ話を少し…
イマドキのPerlの紹介
• 環境構築: Perlbrew
 • Rubyのrvm(Ruby Version Manager)、
   Pythonのpythonbrewのようなもの

 • 既存とは別のPerl環境を簡単に作る事
   ができるもの
Perlbrew
• 詳しくは http://perlbrew.pl/ を参照する
 か、”perlbrew” で検索してみる

• とても簡単
• OS(Distribution)標準のPerl環境を汚さず
 に済む
Perlbrew
Perlbrew
• Perlbrewのインストール
 • $ curl -kL http://install.perlbrew.pl | bash
 • シェル環境変数の設定(.bashrcに追記)
   • source ~/perl5/perlbrew/etc/bashrc
• これだけ
Perlbrew

• Perlbrewの注意点
 • ビルドに必要な環境が必要
   • Linux(e.g. Debian)だとbuild-essential
   • Mac OS X だと Xcode + α
Perlbrew
• Perlbrewで Perl 5.14.2 をインストール
 • perlbrew install perl-5.14.2
Perlbrew

• Perl 5.14.2 が入ったら使えるようにする
 • $ perlbrew switch perl-5.14.2
• cpanm (App::cpanminus) も入れる
 • $ perlbrew install-cpanm
   cpanm コマンドが使えるようになる
Perl and CPAN
Perl and CPAN

• CPAN (しーぱん) =
 Comprehensive Perl Archive Network
• Perlモジュールの巨大なライブラリ
Perl and CPAN
Perl and CPAN
Perl and CPAN

• モジュール検索は metacpan.org か
 search.cpan.org で行える

• それでは search.cpan.org で「Twitter」を
 検索してみることに…
Twitter Module of Perl
Twitter Module of Perl
Twitter Module of Perl
• 今回は144個見つかった
• ちなみに “Tweet” では51個見つかった
• どれを使うとよいかは、活発にメンテ
 ナンスされているかが一つの指標

 • 最終更新日が一つの参考になります
Twitter Module of Perl

• 大きく分けて以下のようなものがある
 • 単体で使えるAPIのラッパー
 • 何らかのフレームワークのプラグイン
  (WAF含む)
Twitter Module of Perl

• たぶん時間も差し迫ってきたころなの
 で、いくつか主要なモジュールを紹介

• 何らかのフレームワークのプラグイン
 としてのTwitterモジュールは割愛
Net::Twitter
• OAuthから投稿まで、一連のREST APIに
 対応するメソッドが               っている

• 多くのPerl Twitterモジュールもこれを
 使っているケースが多い(っぽい)

• 同じ作者の軽量版モジュール
 Net::Twitter::Liteもある
AnyEvent::Twitter::
       Stream
• こちらはREST APIではなくTwitterの
 Streaming APIを利用できるもの

• モダンなPerlでデファクトスタンダード
 であるイベント駆動フレームワーク
 AnyEventをベースとしたモジュール
Tweet::ToDelicious
• こちらは応用モジュールの一例
• Twitter APIにAnyEvent::Twitter::Streamを
  使ったモジュール

• ツイートにURLが含まれていたら指定の
  Deliciousアカウントにブックマーク登録
  ができる
簡単なサンプル
簡単なサンプル
• モダンなPerlの環境はPerlbrewで作れた
• cpanmも入れた
• 必要なモジュールのインストール
 • $ cpanm AnyEvent::Twitter::Stream
 • 依存モジュールも自動的に入る
簡単なサンプル
• AnyEvent::Twitter::Streamを使って、検索
  を眺めながら詳細をログに記録する、
  簡単なアプリケーションを作ってみる

• https://gist.github.com/2139804
  twitter-stream-search.pl (by xtetsuji)
• たぶん手軽に試せるはず
簡単なサンプル
  DEMO
まとめ
まとめ

• PerlにもTwitterのREST APIやStreaming
  APIを使うモジュールが充実している

• Perl自体も今もモダンに進化している
• みなさんもPerl書いてみませんか?
質問 / 気になる点
• 懇親会に出ますので、その時に気軽に
 声をかけて下さい(喜びます)

• perlbrew/cpanmのインストールでうまく
 行かない等あれば、私に協力できるこ
 とがあるかもしれません(質問歓迎)

• 検索すると色々出てきます(他力本願)
ご清聴
ありがとうございました

PerlのTwitterモジュールの紹介 #twtr_hack