SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

Java、Swing、Twitter4jを使ってあなただけのTwitterアプリを作成しよう

ステータスの更新、フォロワーのリストの取得などを簡単に実装

  • このエントリーをはてなブックマークに追加

 Twitter4jとは、TwitterインフラストラクチャにアクセスできるAPIです。ステータスの更新、フォロワーのリストの取得など、さまざまな便利なタスクをJavaプログラムから実行できます。この記事では、Twitter4j APIを使ってTwitterアプリケーションをJavaで自作する方法を簡単に説明します。

  • このエントリーをはてなブックマークに追加

はじめに

 この記事では、Twitter4j APIを使ってTwitterアプリケーションをJavaで自作する方法を簡単に説明します。Twitter4jは、TwitterインフラストラクチャにアクセスできるAPIです。ステータスの更新、フォロワーのリストの取得など、さまざまな便利なタスクをJavaプログラムから実行できます。

 以降の説明はJavaとSwing GUIの知識があることを前提に書かれています。この記事が目指しているのは、Swingをビューテクノロジとして使う簡易なデスクトップアプリケーションを作成することです。以下の機能を実装していきます。

  1. ポップアップを使ってログインする
  2. フォロワーを表示する
  3. 表示を更新する
  4. Twitter上のステータスを更新する(つぶやきを送る)
  5. つぶやきを検索する
  6. ダイレクトメッセージを送る

 これは、独自のアプリケーションを作るための骨格として利用できます。想像力を駆使し、ここで作成するサンプルに自由に装飾を加えてみてください。使用できるビューテクノロジはほかにもJSPなどがありますが、Swingに決めたのは、説明の必要なトピックを増やさずに済むからです。

 現在、Java Twitter APIには、Twitter4J(開発Yusuke Yamamoto氏)、Java-Twitter(同DeWitt Clinton氏)、JTwitter(同Daniel Winterstein氏)の3つがあります。この記事を書いている時点で、Twitter4Jはバージョン2.0.8、Java-Twitterはバージョン0.9、JTwitterはバージョン1.2です。今回は最も熟成が進んでいるTwitter4Jを使用します。

 作業に入る前に、Twitterアカウントを取得してください。3分もあれば手続きは完了するでしょう。以降で説明する内容を理解するには、Twitterの基礎知識も必要です。つぶやき、他人をフォローする、ダイレクトメッセージを送る、こういった概念をもう一度確認してから、次に進みましょう!

図1 これから作成するサンプル アプリケーション
図1 これから作成するサンプル アプリケーション

Twitter4J API

 Twitter4Jをhttp://repo1.maven.org/maven2/net/homeip/yusuke/twitter4j/からダウンロードします。また、非常に役に立つJavadocsも同じ場所から入手できます。いつもどおり、クラスパスを.jarファイルに設定します。以下は、Twitter4Jを使用するセッションの例です。

import twitter4j.*;

public class Test {
  public static void main(String[] args) throws TwitterException {
    Twitter twitter = new Twitter("username", "password"); // サービスへログイン
    twitter.updateStatus("Tweeting!"); // ステータスを更新
  }
}

 このコードでは、まずtwitter4jクラスをインポートします。mainメソッド内で、Twitterクラスのインスタンスを作成します。ユーザー名とパスワードは、文字列としてコンストラクタに渡します。ログインに成功したら、ユーザーのステータスを更新するためにupdateStatusメソッドを呼び出します。ステータスが更新されたかは、Twitterアカウントにログインすると確認できます。

 何をするにせよログインは必須なので、このアプリケーションではログイン用のデータを入力するためのダイアログを最初に表示する必要があります。このダイアログには、ユーザーの気が変わった場合にも対応するため、2つのJLabel、1つのJTextField、1つのJPasswordField、1つの確認用JButton、および1つのキャンセル用JButtonを用意します。コードをすっきりさせたいので、ログインダイアログ用のクラスを作成します。

import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.*;
  
class LoginDialog extends JDialog implements ActionListener {
  JLabel labelName;
  JLabel labelPass;
  JTextField textName;
  JPasswordField passField;
  JButton okButton;
  JButton cancelButton;
    
  JDialog dialog;
    
  public LoginDialog() {
    JPanel panelOne = new JPanel();
    labelName = new JLabel("Name");
    textName = new JTextField(15);
    panelOne.add(labelName);
    panelOne.add(textName);
      
    JPanel panelTwo = new JPanel();
    labelPass = new JLabel("Password");
    passField = new JPasswordField(15);
    panelTwo.add(labelPass);
    panelTwo.add(passField);
      
    JPanel panelThree = new JPanel();
    okButton = new JButton("OK");
    cancelButton = new JButton("Cancel");
    okButton.addActionListener(this);
    cancelButton.addActionListener(this);
    panelThree.add(okButton);
    panelThree.add(cancelButton);
      
    dialog = new JDialog();
    dialog.setResizable(false);
    dialog.getContentPane().add(panelOne);
    dialog.getContentPane().add(panelTwo);
    dialog.getContentPane().add(panelThree);
    dialog.setTitle("Login in to Twitter");
    dialog.getContentPane().setLayout(new FlowLayout());
    dialog.setSize(350, 150);
    dialog.setLocationRelativeTo(null); // 画面の中央に配置
    dialog.setModal(true);
    dialog.setVisible(true);
      
  }
    
  public void actionPerformed(ActionEvent e) {
    if (e.getSource() == okButton) {
      dialog.dispose();
    } else if (e.getSource() == cancelButton) {
      System.exit(0);
    }
  }
    
  public String getUserName() {
    return textName.getText();
  }
    
  public String getPassword() {
    return String.valueOf(passField.getPassword());
  }
}

 ここまでは単純明快、古式ゆかしきJavaコードです。ここではFlowLayoutを使用しています。これは、JDialogを継承します。ここに実装した動作は、[OK]ボタンがクリックされたらダイアログウィンドウを閉じ、[Cancel]ボタンがクリックされたらプログラムを丸ごと終了する、というものです。getterメソッドとして、getUserName()getPassword()の2つを使用します。[OK]ボタンがクリックされたら、getterメソッドを通して情報を渡します。実際のログインはmainプログラムで処理され、そこにあるTwitterインスタンスが必要に応じて受け渡しされます。この仕組みをテストするには、次のようなmainメソッドを上記のクラスに追加します。

public static void main(String[] args) throws TwitterException{
  LoginDialog login = new LoginDialog();
  String userName = login.getUserName();
  String password = login.getPassword();
    
  try{
    Twitter twitter = new Twitter(userName, password);
    twitter.verifyCredentials();
    JOptionPane.showMessageDialog(login, "Login successful!");
  } catch(TwitterException e){
    JOptionPane.showMessageDialog(login, "Unable to login");
  }
}

 新規のTwitterインスタンスを作成してもTwitterExceptionはスローされませんが、verifyCredentials()メソッドを呼び出すとこの例外がスローされます。正常にログインすると、図2のメッセージが表示されます。

図2 ログインダイアログ
図2 ログインダイアログ

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
フォロワーを表示する

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Cesar Otero(Cesar Otero)

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4409 2009/10/07 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング