2013年12月14日土曜日

Twitter4j でProcessing からつぶやく - その2

季節と同じように、心も乾燥して冷たくなる時期ですね。(あれ、ボクだけ?)
... ということで、前回に続きProcessing からツイートするプログラムの作成です。今回で完成させてしまいましょう。

  • setup() 関数の完成

以下の内容をsetup 関数に追加してください。{ から } の間に入れるということです。

size(300, 350);
setLayout(null);
TB = loadImage("*****");
TB_ = loadImage("*****");

inputLine = new TextArea("type your tweet");
inputLine.setBounds(45, 45, 200, 140);
add(inputLine);

前半では、プログラムを起動させた時のウィンドウサイズを指定したり、ツイートボタンの画像を読み込んだりしています。***** の部分には、画像ファイルの名前を入れてください。後半には、テキストボックスの生成とサイズの指定、キーボードからの文字入力を受け付けるようにするおまじないを書きます。

  • draw() 関数

draw 関数はその名のとおり、どんな描写をするかを指定する部分です。以下のように記述します。

void draw(){
 background(0);
 image(TB, 60, 245);
 if(mouseX > 60 && mouseX < 220 && mouseY > 245 && mouseY < 302){
  image(TB_, 60, 245);
 }
}

background で背景の色を指定しています。if ではマウスの位置を判定して、ボタンの位置と重なったときに色を変えたボタンの画像に置き換えるようにしています。

  • tweet() 関数

実際につぶやく処理を行う部分です。以下のように記述します。

void tweet(){
 try{
  Status status = twitter.updateStatus(iLine);
  System.out.println(status.getText());
 }
 catch(TwitterException te){
  System.out.println("Error: " + te.getMessage());
 }
}

twitter.updateStatus() メソッドでツイートできます。そのあと、println() でツイートをコンソールにも表示させます。catch() の部分には、try() で指定した処理がうまく実行できなかった、例外時の処理を書きます。

  • mouseClicked() 関数

お待たせしました。最後にマウスをクリックした時のイベントハンドラを書いていきましょう。

void mouseClicked(){
 iLine = inputLine.getText();
 if(mouseX > 60 && mouseX < 220 && mouseY > 245 && mouseY < 302){
  tweet();
 }
}

キーボードから入力した内容をString 型の文字列に置き換えます。if() でクリックされた位置を判定し、ボタンの上であればtweet() 関数を呼び出して、コメントを投稿します。

  • すべてのコード

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

import java.awt.*;
import javax.swing.*;

PImage TB, TB_;
Twitter twitter;
TextArea inputLine;
String iLine;

void setup(){
 size(300, 350);
 setLayout(null);
 TB = loadImage("*****");
 TB_ = loadImage("*****");

 ConfigurationBuilder cb = new ConfigurationBuilder();
 cb.setOAuthConsumerKey("*****");
 cb.setOAuthConsumerSecret("*****");
 cb.setOAuthAccessToken("*****");
 cb.setOAuthAccessTokenSecret("*****");

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

 inputLine = new TextArea("type your tweet");
 inputLine.setBounds(45, 45, 200, 140);
 add(inputLine);
}

void draw(){
 background(0);
 image(TB, 60, 245);
 if(mouseX > 60 && mouseX < 220 && mouseY > 245 && mouseY < 302){
  image(TB_, 60, 245);
 }
}

void tweet(){
 try{
  Status status = twitter.updateStatus(iLine);
  System.out.println(status.getText());
 }
 catch(TwitterException te){
  System.out.println("Error: " + te.getMessage());
 }
}

void mouseClicked(){
 iLine = inputLine.getText();
 if(mouseX > 60 && mouseX < 220 && mouseY > 245 && mouseY < 302){
  tweet();
 }
}

一部、順番を入れ替えていますが、これでProcessing からつぶやくことができると思います。参考にさせていただいたページは下にあります。

  1. Codasign
  2. Hello API
  3. yoppa.org

2013年12月11日水曜日

Twitter4j でProcessing からつぶやく - その1


気がつけば12月。就活もスタートしましたが、ボクは意識が低いので今回もProcessing 遊びのログを書いていきます。非公式ライブラリであるTwitter4j を使ってProcessing からツイートしてみるプログラムを、今日から2回に分けて作っていきますよ。(記事を分割して投稿数を稼ぐという、ちょこざいな方法を会得したようだ。)

  • 準備



まずは準備。Twitter4j for Processing のページからライブラリをダウンロードします。そして展開したjar ファイルをsketchbook\プロジェクト名\code\ に移動しましょう。初期状態ではcode ディレクトリがないので、自分で作ってくださいね。


次にTwitterのDeveloperページで新規アプリの登録を行って、"Consumer key", "Consumer secret", "Access token", "Access token secret" を取得してください。SettingsタブにあるApplication Type では、Read and Write を選択しておきましょう。Application Details にあるWebsite はアプリを紹介するページのURLで、何でもOKです。ローカルで動かすだけならhttp://127.0.0.1/ と入力しましょう。


また今回は、それっぽい雰囲気を出すためにツイートボタンに画像ファイルを使用します。カーソルを合わせたときボタンの色が変わるように、2種類のものを作成してsketchbook\プロジェクト名\data\ に移動します。このdata ディレクトリも自分で作成します。GIMP などを使って、好きなボタンを作ってみましょう。

  • import と変数の宣言

ではいよいよ、実際にコードを書いていきましょう。はじめは以下のように書きます。

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

import java.awt.*;
import javax.swing.*;

これは「ライブラリを読み込んでね」という命令です。最後のjava.util パッケージは、今回は不要ですが一応加えておきます。awt, swing パッケージはつぶやきを入力するテキストボックスの生成に使います。

Twitter twitter;
String iLine;
TextArea inputLine;
PImage TB, TB_;

ほかにも宣言しなければいけません。iLine は入力した文字列を格納する変数、PImage はProcessing で画像ファイルを取り扱うときの型です。プログラミングがはじめてという人も、すぐに理解する必要はありません。そのまま書いてくださいね。

  • setup 関数

変数の宣言をしたあとに、以下の内容を書いていきます。

void setup(){
 ConfigurationBuilder cb = new ConfigurationBuilder();


 cb.setOAuthConsumerKey("*****");
 cb.setOAuthConsumerSecret("*****");
 cb.setOAuthAccessToken("*****");
 cb.setOAuthAccessTokenSecret("*****");


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

{ から } までで、1つのまとまりになります。これはプログラムを動かすとき、はじめに一度だけ行われる初期化の作業です。ここにおまじないを書いていきます。「このプログラムからのツイートを許可します」という権限を与える作業だと思ってください。***** の部分にはDeveloperページで取得したキーを入力していきます。

ここまでの作業をまとめると、以下のようになります。

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

import java.awt.*;
import javax.swing.*;


Twitter twitter;
String iLine;
TextArea inputLine;
PImage TB, TB_;


void setup(){
 ConfigurationBuilder cb = new ConfigurationBuilder();


 cb.setOAuthConsumerKey("*****");
 cb.setOAuthConsumerSecret("*****");
 cb.setOAuthAccessToken("*****");
 cb.setOAuthAccessTokenSecret("*****");


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

これだけではまだ動かないので、次回からちゃんと肉付けをしていきます。参考にさせていただいたページは下にあります。ではでは。
  1. Codasign
  2. Hello API