2014年7月20日日曜日

Processing + twitter4j でタイムラインを取得&表示してみる - その1

気づいたら半年もブログを更新してませんでした。まあ、就活とか忙しかったからね・・・って自己完結したところで、今回もだらだらと独り言を書き留めていきたいと思います。

前回に引き続き、Processing + Twitter4j で遊んでいきますよ。作ってみるのは、Twitter のタイムラインを取得して画面に表示させるプログラムです。Java ではなく、Processing でこれを実装する解説がされた日本語のページって、意外と少ない。「つぶやく」方はけっこう充実してるのに。Processing そのものがJava に近くて、もはやコードをコピペすれば動くんじゃないかくらいの勢いなので、当然といえば当然かもしれないけど。なので今回は、そのニッチなところに踏み込んでいきます。

  • 準備

よく見るとTwitter4j のバージョンがかなり更新されてるので、以前に紹介したリンク先から持ってきたものではなく、今回は本家のTwitter4j のサイトからZip をダウンロードして使用します(これを書いてる今はVer.4.0.2)。jar ファイルを置く場所などは前と同じです。ソースコードであるpde ファイルがある場所にcode フォルダを作って、その中に入れるんでしたよね。忘れてしまった人はぐぐるなり、前々回の記事を参照してくださいね。

プログラムを新しく作る場合は、Twitter のDeveloper ページで改めてアプリの登録をし、いろんなkey を入手した方がいいと思います。

  • import と変数の宣言


import twitter4j.conf.*;
import twitter4j.*;
import twitter4j.auth.*;
import twitter4j.api.*;
import java.util.*;

String consumerKey    = "xxxxx";
String consumerSecret = "xxxxx";
String accessToken    = "xxxxx";
String accessSecret   = "xxxxx";

Twitter twitter;
List<Status> statuses = null;

はじめの部分です。前回と違うところがありますが、そんなに大したものではないです。まず、setup 関数の中で行っていたkey の入力を簡単にするため、ここで変数にしています。そして、取得したTL の内容を格納するためのリストを宣言し、null で初期化しています。

  • setup() 関数


void setup(){

  size(480, 320);
  background(0);

  ConfigurationBuilder cb = new ConfigurationBuilder();
  cb.setOAuthConsumerKey(consumerKey);
  cb.setOAuthConsumerSecret(consumerSecret);
  cb.setOAuthAccessToken(accessToken);
  cb.setOAuthAccessTokenSecret(accessSecret);

  TwitterFactory tf = new TwitterFactory(cb.build());
  twitter = tf.getInstance();
}

ウィンドウサイズと背景色を指定します。それ以下の部分には変更なしです。Twitter のアカウントにアクセスしていろんな操作をできるようにするため、key を読み込ませたりしているものと思われます(ぶっちゃけ、よく分かっていない)。

  • draw(), keyPressed() 関数


void draw(){

}

void keyPressed(){
  getTimeline();
}

たったこれだけ。draw 関数には何も書きません。ここは「毎フレーム実行される処理」を指定する部分だからです。1秒間に30回もTwitter に情報を取りに行くなんてメモリの無駄ですからね。なので、何かのキーを押したときだけgetTimeline() の処理を実行するようにしています。

  • ここまでのコード


import twitter4j.conf.*;
import twitter4j.*;
import twitter4j.auth.*;
import twitter4j.api.*;
import java.util.*;

String consumerKey    = "xxxxx";
String consumerSecret = "xxxxx";
String accessToken    = "xxxxx";
String accessSecret   = "xxxxx";

Twitter twitter;
List<Status> statuses = null;

void setup(){

  size(480, 320);
  background(0);

  ConfigurationBuilder cb = new ConfigurationBuilder();
  cb.setOAuthConsumerKey(consumerKey);
  cb.setOAuthConsumerSecret(consumerSecret);
  cb.setOAuthAccessToken(accessToken);
  cb.setOAuthAccessTokenSecret(accessSecret);

  TwitterFactory tf = new TwitterFactory(cb.build());
  twitter = tf.getInstance();
}

void draw(){

}

void keyPressed(){
  getTimeline();
}


void getTimeline(){

  /** 次回のエントリで作っていきます **/

}

getTimeline() が今回のプログラムで一番大事な部分になります。その詳しい内容とコードは、次回の記事で見ていくことにしましょう。遅くなりましたが、Processing のバージョンは2.2.1 です。参考にさせていただいたページは以下のとおりです。
  1. Processing2.0 とTwitter4Jで、Processing からTweet してみる

0 件のコメント:

コメントを投稿