Kesinの知見置き場

知見を共有していきたいじゃないですか

LocationTweet 気になる場所の今のつぶやきを見る

気になる場所の今のつぶやきを見ることができるLocationTweetというWebアプリを公開しました!
LocationTweet


地図に表示されたピンをタップするとその場所のつぶやきを見ることができます。
学校、駅、観光地など気になる場所について他の人が今どのようなつぶやきをしているか見てみましょう!新しい発見があるかもしれません。


以下はアプリの裏側の話

仕組み

LocationTweetは以前の記事で紹介したWikipediaからマイニングしてきた位置情報のデータを使用していて、githubで公開しているcsvからデータベースを作成してマップに表示しています。
Twitterと地図を絡めるサービスではツイートに含まれる位置情報を使用するのが一般的ですが、それを試してみたところあまり面白いツイートが見られなかったのでLocationTweetでは使用していません。代わりに単純に場所の名前でツイートを検索しているのですが、他の人がどんなことをツイートしているのかを見られるだけではなくイベント情報のような面白い情報もたまに見られるので正解だったと思います。

構成

サーバーサイド

Python+flask+MongoDB+Herokuで作りました。
最近流行りのRuby on Railsを使ってみたかったのですが、初めてのWebアプリだったので使い慣れたPythonと軽量フレームワークのflaskを使用しました。djangoも少し触ったのですが、重厚すぎて覚えることが多くて断念しました・・・。
サーバーは今流行のPaaSであるHerokuを使用しました。VPSを借りてもよかったのですが、無料という言葉に誘われてgit pushでデプロイできるという手軽さに惹かれてHerokuを選びました。次に別のWebアプリを作るときはVPSでゼロから構築してみたいです。

データベース

MongoDBをHerokuのアドオンであるMongoHQで使用しています。ローカルで作成したデータベースをアップロードするのに少し手間取りましたが何とかなりました。
最初はHeroku標準のPostgreSQLを使用していたのですが、8月に近いうちに新データベースに移行させるので無料枠を今までの5MBから1万行に変更するからヨロシクね!という案内が来たので今後のことも考えて位置情報インデックスを貼れるMongoDBに泣く泣く移行させました。今までに覚えたSQL文とかsqlalchemyとかムダになったよちくしょう…

クライアント

アプリの内容的にモバイルを重視させたかったのでjQueryMobileで作りました。今のところデフォルトのUIのまんまですが、シンプルすぎるのでこれから少し手を加えたいと思っています。


初めてこのようなWebアプリを作ったのですが、WebやHTMLの知識の無さを痛感しました。また同じPythonでも研究で使うようなゴリゴリ計算させたり正規表現でガシガシ抽出して変換整形させるプログラムと全然違うので苦労しました。
Web系ならやっぱりrubyの方が情報が多くて楽そうなイメージがありますね。Herokuにデプロイさせる方法もrubyならたくさん見つかるのにPythonは少なくてここも苦労しました。でもPythonは科学計算系ライブラリが充実してるので、裏側の処理で機械学習系の計算をすることになったらPythonの方が楽そうなイメージがあります。うーむ
両方やればいいじゃないという話なので機会があれば次はrubyに挑戦してみたいです。