たったの50行! node.js でツイート垂れ流しサイト作成法

修正:よく数えたら60じゃなくて50行だった。しかもハッシュタグ垂れ流しでなく好きなキーワード(もちろんハッシュもなんだけど)監視するものになっていた。適当すぎた。

↓の通りコマンド打ってファイル作っていけば、twitterで指定したキーワードを監視してだらだら垂れ流すサイトが出来上がります。

必要なもの

  • node.jsとnpmをインストールした環境
  • 適当なtwitterアカウント

コマンド

  • ワークスペース作って必要ライブラリインスト
  • linuxじゃない方はなんとなくそれっぽいことをして下さい
mkdir twithash
cd twithash
mkdir views

npm install socket.io
npm install twitter-node
npm install express

vi web.js
vi views/index.html

web.jsの中身

  • アカウントID, アカウントパスワードを書き換えて下さい
  • キーワードも好きなものを設定して下さい。twitterの制限上10個までとなります。「https」は数がちょうどいい感じです。
const sys = require('sys'),
      express = require('express'),
      app = express.createServer(),
      io = require('socket.io'),
      TwitterNode = require('twitter-node').TwitterNode;

// express
app.configure(function() {
  app.use(express.static(__dirname + '/views'));
});
app.listen(8888);

// socket.io
const socket = io.listen(app);

// twitter
var twitter = new TwitterNode({
  user: 'アカウントID',
  password: 'アカウントパスワード',
  track: ['https'] // ハッシュタグとか適当な単語に書き換えるよろし
});

twitter
  .addListener('tweet', function(tweet) {
    socket.broadcast(tweet.text);
  })
  .stream();

index.htmlの中身

<!doctype html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>twithash</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
    <script src="/socket.io/socket.io.js"></script>
    <script>
      var socket = new io.Socket();
      socket.connect();
      socket.on('message', function(t) {
        $('<div></div>')
          .text(t)
          .prependTo('#tweets');
      });
    </script>
  </head>
  <body>
    <div id="tweets"></div>
  </body>
</html>

実行

node web.js

localhost:8888 にアクセスし、指定したキーワードのツイートがだらだら垂れ流されれば完成!

ぶっちゃけ

「コマンド入れても50行なので、みなさんぜひやってみてください!」とか煽っても、環境構築が一番大変だってのはみんな分かってるよね、うん。
ただ、私の環境はさくらvpsCentOS 5.5で、割とつまずきはなかったです。
twitterのidとpwは設定ファイルとかに外出しすべきですね。ライブラリもあるし、無くても適当にやっちゃえばいいかなーと思います。
完成したら、herokuのnode.jsホスティングでもやってみると良いです。カンタンに全世界に公開でき、一定の負荷を超えるまでは無料です。herokuのドキュメントが英語だけど分かりやすいので、それほどつまずかないと思います。
しかしnpmとherokuは素晴らしい。一旦熱が冷めたnode.jsだったけど、一気に再燃しましたw

コメ返し

id:t_43z

そうなんですよねー。現状、herokuで動かしてるサイトはchromeでもxhr-pollingになるんで、胸張って「html5だぜ!」と言えない感じです。
herokuは使い手側でしかない状態なんで、もうちょっとちゃんと調べたいです。

id:mitukiii

expressとかモロsinatra。思想的にそりゃそうなんですけどね。rubyも使えるようになっときたいなー。