読者です 読者をやめる 読者になる 読者になる

tsujimotterのノートブック

日曜数学者 tsujimotter の「趣味で数学」実践ノート

Processing 2.0 から twitter4j を使うときに起きたトラブル

技術系 processing

twitter4j は Java 用の twitter API ラッパーライブラリです。
Processing も Java で動いており、Javaで書かれたライブラリをそのまま使うことができます。

そこで、Processing から twitter4j を動かしてみたいと思うのですが、いくつかトラブルが起きます。解決になかなか時間がかかった上、あまりネット上でも(日本語では)解説がないようですので、ここにまとめておきたいと思います。



例題としては、手前味噌ですが、私のgithubから使っていきたいと思います。
Arduino と Processing を連携させて動かすアプリケーションですが、ArduinoにつながなくてもProcessing 単体でも動かせるようにできています。

次のコマンドを使ってプロジェクトごとローカルに落とすか、このリンク先からZIPファイルとしてダウンロードしてください。

$ git clone https://github.com/junpeitsuji/blowing-in-tweets

まず、processing_blowing_in_tweets.pde を Processing 2.0 で起動させましょう。
実行ボタンを押すと、コンソール上に次のようなエラーが出ると思います。

No library found for twitter4j.conf
No library found for twitter4j.internal.async
No library found for twitter4j.internal.org.json
No library found for twitter4j.internal.logging
No library found for twitter4j.http
No library found for twitter4j.internal.util
No library found for twitter4j.api
No library found for twitter4j.util
No library found for twitter4j.internal.http
No library found for twitter4j
Libraries must be installed in a folder named 'libraries' inside the 'sketchbook' folder.

twitter4jのライブラリを入れていませんので、当然ですね。

twitter4jのサイトから落としておきたいところですが、残念ながら現行のバージョン3.0.3ではProcessing 2.0で使えないようです(注:私の環境ではうまくいかなかったというだけです)。

そこで、Google 先生によると、twitter4j for processingというものがあるようです。
このリンクをクリックするとGoogle Driveへと飛びます。
「File」「Download」の順で、twitter4j一式が入ったZIPファイルがダウンロードできるはずです。

参考になったのは次のサイトでした。

Processing 2.0とTwitter4Jで、ProcessingからTweetしてみる - yoppa.org

このZIPファイルをどこに置くかですが、先ほどでたエラーメッセージでは、

<自分で作成したProcessingスケッチのフォルダ>/libraries

の下にコピーすればいいように思うのですが、残念ながらそれでもうまくいきません。

正解は次のフォルダの下です。

<自分で作成したProcessingスケッチのフォルダ>/code

これはやられました。エラーメッセージの通りに入れたのにうまくいかないのです。
この方法はあまり情報がありませんでした。
私が調べたときは、たしかStackOverflowあたりに書いてあったと思うのですが、どこか忘れてしまいました。
少なくとも、このフォルダ以下に、先ほどのtwitter4j for ProcessingのZIPフォルダの中身をすべてコピーしてあげれば動くはずです。

f:id:tsujimotter:20131002205328p:plain

実行すると上の画面が出ます。キーボードで好きなサーチキーワードを入力してエンターを押すとtwitterからの取得が開始されます。


ちなみに、このプログラム、Arduinoとのシリアル通信のライブラリも使っています。
Macの環境では、次のエラーが出ますので注意してください。

Stable Library
=========================================
Native lib Version = RXTX-2.1-7
Java lib Version   = RXTX-2.1-7
To use the serial library, first open
Applications -> Utilities -> Terminal.app
and enter the following:
sudo mkdir -p /var/lock
sudo chmod 777 /var/lock

上記にある通り、

sudo mkdir -p /var/lock
sudo chmod 777 /var/lock

で解決です。