特定キーワードを含むツイートをヒートマップにしてリアルタイムにGoogle map上に
表示するアプリケーション。
ソースコードがgithubに公開されていたので、macで動かしてみました!
以下、そのステップのメモです。
1. 必要なモジュールのインストール
MongoDBとRedis本体をbrewでインストールします。
$ brew install mongodb $ brew install redis
アプリケーションで使われているpythonモジュールをpipでインストールします。
$ pip install pymongo $ pip install redis $ pip install tweepy $ pip install Flask
Twitter Realtime Heatmapのソースコードはgithubからクローンしておきます。
$ git clone https://github.com/comsysto/twitter-realtime-heatmap
2. MongoDBとRedis起動
$ sudo mkdir /var/db/mongodb $ sudo touch /var/log/mongodb.log $ sudo mongod --dbpath /var/db/mongodb --logpath /var/log/mongodb.log
こちらのページを参考にしました→Mac OS X で MongoDB を動かす - babie, you're my home
$ redis-server
3. tstream.pyでツイートを取得
クローンしたtwitter-realtime-heatmapにあるtstream.pyにconsumer_key等を記述します。
consumer_key = '自分のconsumer_key' consumer_secret = '自分のconsumer_secret' access_token_key = '自分のaccess_token_key' access_token_secret = '自分のaccess_token_secret'
追記したらtstream.pyを起動してツイートを取得します。起動するとコンソールにだーっとツイートが
表示されるはず。
$ pyhon tstream.py
4. mongoシェルを使ってcapped collectionを有効に
tstream.pyを起動すると、tstreamというdbが出来ます。このdbでtweet_tailというcollection
が最初はCappedがfalseとなっているので、これをtrueにします。(ちょっと良くわかってないけど)
$ mongo MongoDB shell version: 2.0.4 connecting to: test > show dbs local (empty) tstream 0.203125GB > use tstream switched to db tstream > db.tweets_tail.isCapped() false > db.runCommand({"convertToCapped": "tweets_tail", size:10000000}); { "ok" : 1 } > db.tweets_tail.isCapped() true
5. tweet_service.pyを起動してmapのURLにアクセス
あとは、tweet_service.pyを立ちあげて、http://localhost:5000/static/map.htmlにアクセスして
しばし待つと、じわじわとHeatmapが表示されていきます!!
$ python tweet_service.py * Running on http://0.0.0.0:5000/ * Restarting with reloader
デフォルトは['bigdata', 'devops', 'hadoop', 'twitter']を含むツイートのHeatmapになってます。
イギリス周辺がじわーっと増えて行きました。
6. まとめ
リアルタイムに更新されるデータをヒートマップにして視覚化するというアイデアは、
シンプルで色々と応用できそうですよね。
ぼーっと眺めているだけでも、すごく楽しいです。一度、手元で試してみてはいかがでしょうか。