先日、Twitterでこんなタグが流行りました。
#自分の人生においてトップ10に入るゲームをあげてけ
思うところある人が多数、このタグとともにゲーム名をツイートしていきました。計算はしていませんが、おそらく万の単位までツイートされたのではないでしょうか。
目的と設計
今回はそのあまたのツイートの中から、「幻水」または「幻想水滸伝」が含まれているツイートを抽出し、羅列することを試みました。幻水をトップ10に挙げた人が、他にどんなゲームをトップ10に挙げたのかに興味があったからです。
できることならばゲーム名を全部抽出し、ランキングの形で一覧できるようにしたかったのですが、何せゲーム名を記述する書式や規則が定まっておらず、自由記述で統一無く書かれており、集計漏れなどが発生するためにランキングの作成は断念しました。
ただしその代わり、絞り込み検索の機能を付け、幻水の他にどんなゲームを挙げているのか、だいたい目安がつくようにはしてみました。
実装
さて、それでは実装です。以前、APIを用いて特定のハッシュタグのツイートをかき集める方法について書きました。
まずはこの方法を用いて、当該ハッシュタグが記載され、かつ、「幻水」または「幻想水滸伝」を含むツイートをひたすらDBに蓄え込みます。一度DBに蓄えてしまえばSQLを叩くことで自由にデータを扱えます。以下のソースではDBのカラム名などは察してください。あくまで「流れ」を捉えるために見てください。
// mysqliクラスのオブジェクトを作成 $mysqli = new mysqli('server', 'user', 'pass', 'db'); // エラーが発生したら if ($mysqli -> connect_error) { print("接続失敗:" . $mysqli -> connect_error); exit(); } $query = 'SELECT `tweet_contents` FROM `gensui_tweets` WHERE `hashtag`="自分の人生においてトップ10に入るゲームをあげてけ" AND `rt_status_id`="NULL" AND `in_reply_to_id`="NULL" ORDER BY no DESC'; $result = $mysqli -> query($query);
これで $result にツイートが格納されました。あとはこれを表示させるだけでオッケーです。実際はWebデザインとの兼ね合いがありますので、ある程度は長いコードになるかとは思います。また、絞り込み検索は、上記SQLにLIKE検索を付け加えたものになります。
できあがったもの(サイト)は以下のようになります。
http://rhapsodia.thyme.jp/gensui/best_10_games/
眺めたり、絞り込み検索を行ったりすると、いろいろと見えてきて思うところがありますね。やはりドラクエやFFは外せないところであったり、大神やテイルズはやはり結構なプレイ率であったり…。
可視化されることによって様々なものが見えてきて興味深い結果になったかなと思います。