twitter4j で簡単なツイートプログラムを作ってみる(その 3)

twitter4j の入手と eclipse への登録

前回までは料理で言うと下ごしらえ。ここからいよいよ本格的に「調理」である。まずは下記サイトから twitter4j をダウンロード。
Twitter4J - A Java library for the Twitter API
最新安定板は 2.2.5 である。ダウンロードしてきたら、zip ファイルの中にある lib フォルダ直下の jar ファイル(5 個)を適当なフォルダにまとめて入れておく(私は eclipse の workspace 直下に libraries\twitter4j というフォルダを作ってそこに入れた)。

次にこれらの jar ファイル群をライブラリとして eclipse にあらかじめ登録しておく。[Window] → [Preferences] と進み、Java → Build Path → User Libraries と進む。[New...] を押してライブラリ名を入力する。名前はストレートに "twitter4j" で良いと思う。次に、作ったライブラリを選択して [Add JARs...] を押し、先程展開した jar ファイル群を全て登録する(実際は twitter4j-core だけあれば動くらしい)。

ライブラリの使い方は簡単で、Java プロジェクトを作成したら右クリックでコンテキストメニュー → Build Path → Add Libraries... でライブラリの追加画面を開き、User Library を選んで [Next>] → twitter4j にチェックを入れて [Finish] で良い。

設定ファイルの作成

プロジェクトを作成してライブラリを登録したら、プロジェクト内の src フォルダ内に設定ファイルを作成する。ファイル名は twitter4j.properties とすること。

debug=true
oauth.consumerKey=xxxxxxxxxxxxxxxxxxxxx
oauth.consumerSecret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
oauth.accessToken=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
oauth.accessTokenSecret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

最初の 1 行目はコンソールにログを出力するもので、最初のうちはつけておいた方が良い。その他の項目は、Twitter アプリケーションを登録したときに控えたものを入力する。

SimpleTweet.java の作成

お待たせしました。いよいよ Java プログラミングのお時間です。

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

import twitter4j.Twitter;
import twitter4j.TwitterFactory;
import twitter4j.Status;
import twitter4j.TwitterException;

public class SimpleTweet {
    public static void main(String[] args) throws IOException, TwitterException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String tweet = "";
        while(tweet.isEmpty()) {
            System.out.print("今何してる ? : ");
            tweet = br.readLine();
            if(tweet.length() > 140) {
                System.out.println("字数制限を超えています。");
                tweet = "";
                continue;
            }
        }

        Twitter twitter = new TwitterFactory().getInstance();
        Status status = twitter.updateStatus(tweet);
        System.out.println(status.getUser().getScreenName() + " として投稿しました : " + status.getText());

        br.close();
    }
}

最初の三つの import 文はコンソールからキーボード入力を受け付けるためのもの。続く四つの import 文が twitter4j を利用して投稿するために必要最低限のものである。

まず最初に文字数チェックを行う。いわゆる「空投稿」(何も入力せずに投稿)はできないので、入力が空文字列でなくなるまで入力を促す。また、140 字を超える投稿はできないので、入力が 140 字を超えていたらその旨のメッセージを入力して文字列をクリア(空文字列で置き換える)し、もう一度入力を促す。

投稿内容が確定したら、いよいよ twitter4j の出番。基本的な流れは

  1. TwitterFactory クラスのインスタンスを作成する
  2. 1. のインスタンスの getInstance メソッドを呼び出して Twitter クラスのインスタンスを作成
  3. 2. のインスタンスの updateStatus メソッドの引数に投稿する文字列を渡して実行し Status クラスのオブジェクトを受け取る
  4. 受け取った Status オブジェクトから各種メソッドで情報を取り出して確認する

となる。

これを実行すると「今何してる ? : 」というプロンプトがコンソールに表示されると思う。そこにキーボードから投稿したい内容を入力して Enter を押してみよう。すると twitter4j のログがずらっと表示された後に「xxxxx として投稿しました : ○○○○○」と表示されるはずである。xxxxx の部分はアプリケーション登録時にサインインをしたユーザーアカウント名が、○○○○○の部分は今しがた入力した内容が表示されるはずである。ここまで行ったら、実際に Twitter のサイトなどで、確かに投稿が行われたことを確認してほしい。そして「○○から」というところ(通常であればクライアント名が表示される)が、あらかじめ登録しておいたアプリケーション名になっていて、そのリンク先が登録した URL になっていることも確認してほしい。

さらなる発展へ

このプログラムは単純に投稿ができるだけで、タイムラインを見ることもできないし reply することもできない。また、常に同じユーザーアカウントで投稿されることになるので、違うアカウントで投稿したい場合のログインと認証、設定の変更など、様々な問題がある。しかしベースになるものがこれであることは間違いないので、まずは認証から投稿までの流れを理解して、種々の問題点については適宜 Web 検索で調べてみてほしい。基本的に twitter4j で何ができるかについては、Java ができる人であれば JavaDoc を読むのが一番早い。英語だがそんなに難しくはないと思う。今回はこの辺にて。