twitter streaming API への接続

その昔、twitter が Jabber プロトコルをサポートしていたことを覚えている人は何人いるだろうか?(笑)

どうもぼかぁ最新データをとるのにいちいちポーリングするのってのが全般的に好きではなくて twitter も Jabber 復活を心待ちにしていたのですが、果たしていつの日だったかストリーミング API として戻ってきたのでした。 良かった 🙂

というわけで、API 公開からずいぶんずいぶん経ってしまいましたが、何となく思い立って Groovy からつないでみました。

Java には twitter4j というとてもよくサポートされたtwitter ライブラリがありますので、まずはこちらを利用させていただきます!

Twitter4J – A Java library for the Twitter API

Twitter4J は Twitter API の Java ラッパです。 Twitter4J を使うと JSON や HTTP に詳しくなくても容易に Twitter とインタラクトするアプリケーションを書くことが出来ます。

さて、まず twitter につなぐのに面倒なのが oAuth 。。 とりあえず動作確認したいだけなのにアプリの登録とかしなければならなくあれですが、しょうがないのでしますです。

Twitter / アプリケーションを登録

ここでOAuthを使ったアプリケーションを登録することができます。OAuthは新しい外部アプリケーションの認証システムです。

アプリの登録をすると、consumerKey と consumerSecret がもらえますのでメモして、以下の Groovy ソースに入れて実行してみます。

import twitter4j.*
 
def oAuthConsumer = "入れる"
def oAuthConsumerSecret = "入れる"
 
def twitter = new TwitterFactory().getInstance()
twitter.setOAuthConsumer(oAuthConsumer, oAuthConsumerSecret)
 
def requestToken = twitter.getOAuthRequestToken()
def accessToken = ""
 
println "ブラウザで以下の URL にアクセスして表示された PIN コードを入力してください。"
println " ${requestToken.getAuthorizationURL()}"
System.in.withReader {
    print "PIN コード: "
    accessToken = twitter.getOAuthAccessToken(requestToken, it.readLine())
}
 
println "access.token=${accessToken.getToken()}"
println "access.token.secret=${accessToken.getTokenSecret()}"

実行すると URL がでてきますので、ブラウザにコピって入力して先ほど登録したアプリケーションからのアクセスを自分の twitter アカウントに対して許可してあげます。 そうすると PIN コードでてくるので、こっちのアプリに入力してあげると、今度はアクセストークンが2つもらえます。

コンシューマキー 2 つと、アクセストークン 2 つが揃ったらいよいよアプリをかきます。

ここではストリーミング API を使ってリアルタイムに自分のタイムラインをひろってみます。

import twitter4j.*
import twitter4j.conf.*
 
def consumer = "入れる"
def consumer_secret = "入れる"
def access_token = "入れる"
def access_token_secret = "入れる"
 
def builder = new ConfigurationBuilder()
builder.setOAuthConsumerKey(consumer)
builder.setOAuthConsumerSecret(consumer_secret)
builder.setOAuthAccessToken(access_token)
builder.setOAuthAccessTokenSecret(access_token_secret)
 
def config = builder.build()
def twitter = new TwitterFactory(config).getInstance()
def stream =
    new TwitterStreamFactory(config).getInstance(twitter.getOAuthAccessToken())
 
stream.addListener(new UserStreamAdapter() {
    @Override
    public void onStatus(Status status) {
        def user = status.getUser().getScreenName()
        def text = status.getText()
        println "@${user} ${text}"
    }
})
 
println "Start streaming..."
stream.user()
 
System.in.withReader {
    while((line = it.readLine()) && (line=line.trim()));
}
 
println "Stop streaming and cleanup..."
stream.cleanUp()

じゃんじゃんじゃん。 エンター押すと終了です。

ソケットつなぎっぱなしになりますのでリアルタイムにタイムラインが表示されると思います。 Web より速くでるときもあるみたいですね。 😀

これでたとえば、Ubuntu とかだと notify-send で簡単に画面に通知出せますので、画像ファイル取得とかちょこちょこつけると・・・

stream01

あっという間に通知クライアントのできあがり。 よい。

てなわけで oAuth はちょっと面倒ですが、それ以外は twitter4j と Groovy のおかげでとてもお手軽。 クライアントつくってみてはどうでしょう。

そういえば、オープンソースの twitter クライアントって、コンシューマーキーはどうしているんだろう・・・。

う。

初めての WebGL

ここ 1年くらいのブログを見返しているとずいぶん投稿数が減ったなぁ、と。 こうみえて昔は、毎日更新だったんですよ(笑) 原因は何かの途中経過を書かなくなったことだと思うのですが、それは新しいことをやっていない裏返しなのかも、ということで「初めての WebGL」。。

まずはお勉強でございます。 ちなみにわたくしは、3D とか全然分からないです(笑)

WebGL Lesson 1 – 三角形と四角形 – Hack The WebGL (WebGL勉強会)

ようこそ私の最初のWebGLチュートリアルへ!この最初のレッスンはNeHe OpenGLチュートリアルのNo.2をもとにしています。NeHe OpenGLチュートリアルはゲーム開発者向けの3Dグラフィックスの学習手段として人気です。
今回はWebページ上に三角形と四角形を出す方法を解説します。

大変参考になりますです。

まず分かったのは、WebGL は OpenGL 2.0 ES のラッパーであって OpenGL とは互換がないということです。 以前、ちょっと OpenGL をいじっていたのでそのまま移植できるかなと思ってたのですが、いわゆる固定シェーダがないのですね。

hiromasa.another :o)» Blog Archive » Java + LWJGL + OpenGL で 2D ゲーム

ということでとりだしてきました、 OpenGL の Java ラッパー LWJGL。 OpenGL で古き良き 2D 描画をなんとか再現してやろうかと奮闘中であります。

2.0 ES でレンダリングするには必ずバーテックスシェーダとフラグメントシェーダで描画する必要があるようです。 JavaScript の中に C like な記述が入るのはなかなか興味深い。

webgl01

というわけでいろいろふっとばしますが、なんとか豆腐とテクスチャの貼り付けまではいけました。 ソースはもうちょっと動いてからにしましょう。

 

オチなしのプレッシャー…。

Firefox 4.0 リリース!

結構前から Minefiled で beta を追っていていたのですが beta13 から RC1、2 を経ましてついに Firefox 4.0 がリリースされました。 🙂 1.0 がでて喜んでいたのは 2005 年ですので月日が流れるのは早いものです。。

4.0 で最初にぱっと目を引くのは UI の変更で、Tab on Top とかメニューが左上に統合されたり、タブをピンで止めれるようになったりしています。

Linux 版。

firefox402

Windows 版。

firefox401

 

Windows のほうの beta はあまり見ていなかったのですが、途中でタブのデザインが変わったように思います。 正式版いれたときあれ?って思いました。 🙂

Ubuntu 10.10 は Firefox 3.5 系なので 4.0 を使うには stable の PPA を入れると良いと思います。

Nattyまで待てない!Ubuntuで今すぐFirefox4.0を使う

さて、我らがUbuntuでは、現行版の10.10Maverickでは残念ながらアップデートが入ってきていません。せっかく高速に便利になったFirefox 4.0が使えないのはもったいないので、10.10でもFirefox 4.0を使えるようにしました。

非常に参考になります!

何度かこのブログでも取り上げていました、新機能の WebGL についてですが、Linux 版については残念ながら NVIDIA プロプライエタリ ドライバ以外はブラックリスト入りの対応になったようです。

しかるに NVIDIA 以外のカードではいじらずには WebGL 表示できません。 無念。 beta の途中までは Intel とかでも動いていたのですが、バグが多かった模様です。

Windows に関しては Intel 内蔵とかでも動くようなので遊んでみると良いかもしれません。

WebGL Experiments

WebGL is a new web technology that brings hardware-accelerated 3D graphics to the browser without installing additional software.To try these WebGL experiments with Google Chrome, please download and install it below.

基本 Chrome デモ用ですがこちらのサイトに続々新作が追加されています。

firefox403

少しインターネットを検索していると、初音ミクさんが踊りだしたりしていました。 面白いのができる予感。 ぼくも空間系のサイトを何かやってみたいなと思っているのですが、OpenGL 勉強しないとですね。

…。 やべっ。

無理矢理のオチ。。。 (IE8 ではでませんな