Twitter Java API

TwitterはRESTインターフェイスを提供していて,データ形式RSS,XML,JSONと選べる.したがって,どのような言語からでも簡単にアクセスできるのだが,それでも面倒だという人のためにwrapper APIを書いてくれている人がいる.JavaAPIをググったところ,2つ見つけたので調べてみた.

Twitter4J

Twitter4J山本裕介氏作.
日本語のドキュメントが整っているところがうれしい.

使い方はこんな感じ

Twitter twitter = new Twitter(username, password);
for (Status status : twitter.getFriendsTimeline()) 
   System.out.println(status.getUser().getName() + "\t" + 
                      status.getText());

APIは,Twitterの提供するAPIを素直に引き写した感じ.わかりやすい.

インストールは,jarファイル一個になっていて楽.実装はスレッドセーフだが,内部的にはスレッドを利用していないので,App Engineと組み合わせるのも簡単.

Java Twitter

Java Twitter は, DeWitt Clinton氏作.APIは流行のいわゆるfluent APIで,やたらメソッド呼び出しを連鎖させるスタイル.あんまり好きじゃない.

Api api = 
  Api.builder().username(username).password(password).build();
List<Status> statuses = 
  api.friendsTimeline().count(10).build().get();

jarがサイトに落ちているので,これだけでインストールできるのかと思ったら,そうは問屋がおろさない.どういうわけだか Google Protocol Bufferを使っていて,さらに,Protocol Bufferが何かに依存して,という感じでどうにもならない.しかも何に依存しているのか,どこにも書かれていない.結局mavenでビルドして,dependしているライブラリを全部集めさせたら,こんなに.

commons-beanutils-1.7.0.jar	ezmorph-1.0.6.jar
commons-codec-1.2.jar		google-collections-0.9.jar
commons-collections-3.2.jar	java-twitter-0.9-SNAPSHOT.jar
commons-httpclient-3.1.jar	joda-time-1.6.jar
commons-io-1.4.jar		json-lib-2.2.3-jdk15.jar
commons-lang-2.4.jar		junit-3.8.1.jar
commons-logging-1.0.4.jar	protobuf-java-2.2.0.jar

maven 時代のソフトウェアというのはこういうものなのか...

困ったことに,このライブラリはApp Engineで利用できない.というのはこのライブラリが使っている commons-httpclient がhttpリクエストをマルチスレッドで行うせい.残念.

所感

App Engine で使うにはTwitter4Jしかない.スレッド問題はどうにもならない.App Engineのスレッド制限は結構厳しいなあ.