Scrapdiary

DesigningとEngineeringの架け橋

Net::Twitterが3になりCPAN経由でインストールできない件

Net::Twitterが大幅バージョンアップされたようで、依存moduleの数がかなり多くなってるようです。CPANにてインストールすると途中で、恐らくMoose関連の依存moduleをインストール中に何故かfailureとう文字が・・・そしてインストール失敗。CPANで自動化してるのでどこでコケてるのかがイマイチわかりづらいところではありますが、原因を調べるためにCPANに上がっているPODをみれば何かわかるかもと思い読んでみることにした。
以下訳を書いてみる。

名前

Net::Twitter - Twitter APIのためのPerlインターフェース

バージョン

この資料はNet::Twitter バージョン3.04000について記載

概要(簡単なサンプルコード)

  use Net::Twitter;

  my $nt = Net::Twitter->new(
      traits   => [qw/API::REST/],
      username => $user,
      password => $password
  );

  my $result = $nt->update('Hello, world!');

  eval {
      my $statuses = $nt->friends_timeline({ since_id => $high_water, count => 100 });
      for my $status ( @$statuses ) {
          print "$status->{time} <$status->{user}{screen_name}> $status->{text}\n";
      }
  };
  if ( my $err = $@ ) {
      die $@ unless blessed $err && $err->isa('Net::Twitter::Error');

      warn "HTTP Response Code: ", $err->code, "\n",
           "HTTP Message......: ", $err->message, "\n",
           "Twitter error.....: ", $err->error, "\n";
  }

解説

このモジュールはTwitter APIへのPerlによるインターフェースを提供します。Twitter APIに関する詳細な解説は http://apiwiki.twitter.com/Twitter-API-Documentation を見て下さい。

オーマイガッ! Mooseだよ!

Net::TwitterMooseをベースに書かれています。このモジュールの保守をする人間がTwitter APIの変更に迅速に対応するための能力をふくめ、Mooseはいくつかの利点を提供してくれます。
もしあなたがMooseとその依存関係を用いない別の方法が必要ならば Net::Twitter::Lite を見て下さい。
Net::Twitter::Lite のAPIメソッド定義と資料はNet::Twitterから作成されています。それは関連付けられたモジュールですが、Net::TwitterMooseの導入には依存していません。

メソッドと主旨

new
このメソッドはNet::Twitterオブジェクトを生成します。いくつかの指定されたパラメータをとりますが、全てオプションです。


(中略)

以前との互換性

もしもtraitsオプションをnewで設定しなくても、このバージョンのNet::Twitterは自動的にLegacyの特徴を含んでいます。従って、以下の2つの呼び方は今のとこと同等です:

    $nt = Net::Twitter->new(username => $user, password => $passwd);
    $nt = Net::Twitter->new(
        username => $user,
        password => $passwd,
        traits   => ['Legacy'],
    );

こうして、以前のバージョンのNet::Twitterで書かれた現在のアプリケーションも、このバージョンを使って改修する必要なく動き続けるはずである。
近い将来のリリースで、この初期の特徴は変更になる。この変更に先立って、しかしながら、もしもtraitsオプションをnewで設定しない場合、近い将来のバージョンで警告を追加することになるだろ。警告を避けるため、適切なtraitsオプションを現在のあなたのアプリケーションのコードに追加して下さい。

FAQ

Q:なぜ ->followers({ screen_name => $friend }) が $friends のフォロワーの代わりに自分のフォロワーを返すのか?

A:まず、あなたが綴った"screen_name"を注意深く正確に確認して下さい。Twitterは時に(APIが)理解できなかったパラメータを破棄します。このケースの場合、結果はあなた自身のフォロワーのリストになります。―もしscreen_nameパラメータをつけずにフォロワーを呼び出したら、同じことが起きただろう。

Q:検索APIでどのようにgeocodeパラメータを使ったらいいのか?
A:geocodeパラメータ値はカンマで区切られた緯度、経度そして半径の値を含む。

        $r = $nt->search({ geocode => "45.511795,-122.675629,25mi" });

関連項目

Net::Twitter::Error
Net::Twitter 例外オブジェクト。

http://apiwiki.twitter.com/Twitter-API-Documentation
これがTwitterAPIに関する公式な資料になります。そこにはメソッドとそのパラメータについてより詳細に、そしてこのモジュールが提供する資料より最新の内容が記載されています。

LWP::UserAgent::POE
このLWP::UserAgent互換クラスは、Net::Twitterと同様に並列のブロックしないリクエストを提供するPOEベースのアプリケーションとして用いることができる。


(後略)


#翻訳ここまで


所感

継続翻訳中ですが原因までたどり着けません・・・なんとなくですが、インストール関連については触れていない予感が。
自分の環境下でですが「Module Version: 3.05000」になり正常にUpgradeによるインストールが可能になりました。testファイル等のインストール時の不具合だったのかもしれません。