Twitter4JとDroolsでなんかリアルタイムな感じのもの その1 ビルドと実行編

Twitter4JとDroolsでなんかリアルタイムな感じのものをやります。といってもこのデモは私が作ったわけではなく、Drools開発者のEdson Tirelliが作ったものです。
Twitter4JはyusukeyさんによるTwitterオープンソースJavaライブラリです ( http://twitter4j.org/ja/index.html )。 Twitter4JおよびTwitterAPIについてはこちらを ( http://www.amazon.co.jp/dp/477414732X )。
Droolsオープンソースのルールエンジンプロジェクトです ( http://www.jboss.org/drools )。今回のデモではTwitter4Jを使ってDroolsに対してTweetを流し込み、各ルールに基づいて処理されるところを見ていきます。

ここがDroolsgithubです。

https://github.com/droolsjbpm

droolsjbpm-contributed-experimentsというリポジトリにサンプルなどがあります。

https://github.com/droolsjbpm/droolsjbpm-contributed-experiments

こんな感じでビルド。

git clone git://github.com/droolsjbpm/droolsjbpm-contributed-experiments.git
cd droolsjbpm-contributed-experiments/twittercbr
mvn clean install

実行はIDEでやります。
ここでは Eclipse + M2Eclipse plugin でMavenプロジェクトをimport。あと、JBossToolsも入れておくとDroolsのエディタがついているのでおすすめ。

まずTwitter APIの認証が必要です。
dev.twitter.com に登録し、アクセストークンを入手してください。自分のアカウントのアクセストークンが使えればよいです。以下の情報が参考になると思います。

http://twitter4j.org/ja/configuration.html
http://d.hatena.ne.jp/pon0927/20100717/1279374217

src/main/resources/twitter4j.properties を編集して以下を埋めます。

oauth.consumerKey=
oauth.consumerSecret=
oauth.accessToken=
oauth.accessTokenSecret=

さあ実行します。TwitterCBRクラスのmainメソッドで走らせます。引数に twitterRules1.drl のように適用するルール定義ファイルを指定しますが、

final KnowledgeBase kbase = createKnowledgeBase( "twitterRules1.drl" );

のようにベタ書きにしてもいいです。

実行すると、どーっと出てきますね。twitterRules1.drlはTwitterのストリームAPIから垂れ流しです。

[6:18:05 PM JST] @meadow_black - ох как я не хочу выходить на улицу)))
[6:18:05 PM JST] @Latonyaalf - Sferra Brothers Bennett 70 x 108 Rect Tablecloth - Ecru: Pure Italian linen is exquisitely finished with row upo... http://t.co/kHFRtlTu
[6:18:05 PM JST] @victor_pelli - @justinbieber   answer me please!
[6:18:05 PM JST] @HaroldChittum - Nokia E63 DirectSync - Complete Essentials Kit (High Current Output) (European outlet plug, ClearTouch Crystal):... http://t.co/FK1qiLe6
[6:18:05 PM JST] @climahonduras - #Amapala,  Min:22C Max:31C Condici&oacuten:Partly Cloudy Más tarde:Despejado #Honduras
[6:18:05 PM JST] @tm2t - 火の精気のせい水の精(笑) RT @ymstmskn: まだ六時前ですけどw RT @tm2t: とりあえず
 http://t.co/qb5FxMdS

その2ではデモの実装を見ていきます。