倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

むしろ Twitter4J で twitter を勉強してみる (1) : Twitter インターフェース

twitter って単純につぶやくだけなら簡単ですが、他にもいろいろ機能があるはずなのにイマイチ使い方が分かってないなぁと最近感じてきたので、ちょっと twitter を勉強しようかなと。 ただ、そんなにガッツリ使う気は(今のところ)ないので、マニュアル読んだり書籍を購入して読んだりするのもちょっとモチベーションが上がんないなぁというところ。 なのでちょっと変化球的に、プログラミングでどんなことができるのかを試してみる作戦を決行してみます。 Java 系のプログラミング言語twitter を扱うライブラリってのもいろいろあるようですが、Twitter4J が無難そうなので(おぉ、日本人開発者!)、これをあれこれイジってみます(記事一覧)。

Twitter4J では以下の API がサポートされています:

  • 同期 API : 関連クラスは
    • twitter4j.Twitter
    • twitter4j.TwitterFactory
  • 非同期 API : 関連クラスは
    • twitter4j.AsyncTwitter
    • twitter4j.AsyncTwitterFactory
  • ストリーミング API : 関連クラスは
    • twitter4j.TwitterStream
    • twitter4j.TwitterStreamFactory

ただし、この記事では同期 API のみを扱います。 Twitter4J では、とりあえず Twitter インターフェースが重要とのこと。

サンプルコード


今回は Twitter4J のさわり的な、簡単なコードを見ていきます。 ただし、OAuth 認証の設定を行わないと動かないので注意(この設定は次回行う予定)。 Twitter4J では、どんなことをやるにも大まかな手順は以下のようになります:

  1. TwitterFactory オブジェクト*1を生成する
  2. TwitterFactory オブジェクトから getInstance() メソッドによって Twitter オブジェクト*2を生成する
  3. Twitter オブジェクトを介して twitter の処理を行う

以下はサンプル・コード。 Groovy で書いてますが、型付けもしているので Java プログラマでも書いてる意味は分かると思います:

@Grab('org.twitter4j:twitter4j-core:[2.2.4,)')

import twitter4j.*

TwitterFactory factory = new TwitterFactory()        // 1. TwitterFactory オブジェクトを生成
Twitter twitter = factory.getInstance()                   // 2. Twitter オブジェクトを生成
Status status = twitter.updateStatus('test tweet.')   // 3. twitter を操作
println "Successfully updated the status to [${status.text}]."

このコードを実行すると標準出力には

Successfully updated the status to [test tweet.].

と表示され、twitter には新しいツイート

がつぶやかれます。

Twitter が継承しているインターフェース


Twitter4J では Twitter インターフェースを介して twitter の操作をするので、twitter でどのようなことができるかを知るにはこのTwitter インターフェースに定義されているメソッドを見ていけばいいことになります。 で、このインターフェースにはたくさんのメソッドが定義されていますが、JavaDoc を見てみると、Twitter インターフェースに独自に定義されているメソッドはなく、すべてスーパーインターフェースから引き継いでいるメソッドになっています。 そして、これらの継承されているインターフェースはそれぞれが twitter で行える操作に対応しているので、これら Twitter インターフェースのスーパーインターフェースをそれぞれ読み解いていけば、twitter でどういう事ができるかが分かるハズ!という魂胆。

さて、Twitter インターフェースのスーパーインターフェースは大きく分けて

  • twitter4j.api パッケージの XxxxMethods インターフェース (以下、Twitter API と呼びます*3
  • それ以外

の2つに大別できます。

Twitter インターフェースのスーパーインターフェース

Twitter API 以外のスーパーインターフェースは少なく、以下の4つです:

  • java.io.Serializable
  • twitter4j.TwitterBase
  • twitter4j.auth.OAuthSupport
  • twitter4j.api.LegalResources

一方、Twitter API はたくさんあります:

  • StatusMethods
  • UserMethods
  • FavoriteMethods
  • ListMethods
  • ListMembersMethods
  • ListSubscribersMethods
  • FriendsFollowersMethods
  • FriendshipMethods
  • AccountMethods
  • TimelineMethods
  • DirectMessageMethods
  • SearchMethods
  • SavedSearchesMethods
  • GeoMethods
  • HelpMethods
  • TrendsMethods
  • LocalTrendsMethods
  • NewTwitterMethods
  • NotificationMethods
  • BlockMethods
  • SpamReportingMethods

これらはどれも twitter4j.api パッケージ内のインターフェースです。 機会があれば、それぞれのインターフェースを見ていきたいと思いますが、量的にみて全部(どころか半分も)いかないでしょうね。 まぁ、気の向くままに。

参考 URL

Twitter API ポケットリファレンス (POCKET REFERENCE)

Twitter API ポケットリファレンス (POCKET REFERENCE)

*1:非同期 API の場合は AsyncTwitterFactory オブジェクト、ストリーミング API の場合は TwitterStreamFactory オブジェクトを生成します。

*2:非同期 API の場合は AsyncTwitter オブジェクト、ストリーミング API の場合は TwitterStream オブジェクトを生成します。

*3:twitter プログラミングで正式に呼ばれる「Twitter API」という用語と一致していないかも知れませんケド。