Twitter Java API
TwitterはRESTインターフェイスを提供していて,データ形式もRSS,XML,JSONと選べる.したがって,どのような言語からでも簡単にアクセスできるのだが,それでも面倒だという人のためにwrapper APIを書いてくれている人がいる.Java のAPIをググったところ,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のスレッド制限は結構厳しいなあ.