あっという間に2020年となりました。本年もどうぞよろしくお願いいたします。今回はこの年末年始の休みを利用して、やり残していたTwitter APIを使ったサイト制作をやってみた話をしようと思います。

TwitterのAPIでおなじみのものといえば、dtnディレクトリのキーワード検索でも使っているSearch Tweets APIがありますが、TwitterのAPIにはこれ以外にもアカウント関連、ツイート関連など、さまざまなAPIが用意されています。中でも、データ取得で使えそうなものとして、ツイッターのトレンド情報を地域別に取得できるGET trends/place APIがあります。

ツイッターのトレンドとは何か?についてはFAQにも詳しく書いてありますが、単純なキーワードの日別ランキングということではなく、結構複雑なアルゴリズムでHOTな話題に関連するキーワードを抽出したものという感じのようです。

トレンドはアルゴリズムによって決定され、初期設定では、フォローしているアカウント、興味関心、位置情報をもとにカスタマイズされています。ここ数日や今日1日で話題になったトピックではなく、今まさに注目されているトピックが選び出されるため、Twitterで盛り上がっている最新の話題をリアルタイムで見つけることができます。

Twitterのトレンドについてのよくある質問

Twitterでまさに今盛り上がっている話題に関するキーワードが取得できるということで、集めると色々と面白いことができそうな気がします。

そんなことを昨年末の台風が吹き荒れて寝れずにいた夜中にふと思い付き、5分毎に更新されるAPIのデータをcronを使ってMySQLに実はひっそりと貯め始めておりました。が、サイトの形に仕上げる暇もなく年末まで過ごしていたので、この年末年始で仕上げてみたという感じです。

ただ、APIのマニュアルを見てもわかると思いますが、取得できるデータは下のサンプルレスポンスのJSONにあるように、「トレンドキーワード(ハッシュタグの場合もあり)」、「キーワードURL」程度しかなく、1番使えそうなツイートのボリュームデータは値があるものはチラホラある程度で、ほとんどがNULLだったりして使えそうにはありません。

 [
  {
    "trends": [
     {
        "name": "あなたの精神年齢",
        "url": "http://twitter.com/search?q=%E3%81%82%E3%81%AA%E3%81%9F%E3%81%AE%E7%B2%BE%E7%A5%9E%E5%B9%B4%E9%BD%A2",
        "promoted_content": null,
        "query": "%E3%81%82%E3%81%AA%E3%81%9F%E3%81%AE%E7%B2%BE%E7%A5%9E%E5%B9%B4%E9%BD%A2",
        "tweet_volume": null
      },

最終的にはランキングデータに仕立てたいので、ログを貯める際に何かしら値を持たせておきたいとは思いましたが、こうなると自分でなんとかするしかなさそうです。

最終的に、1回のレスポンスで取得できるトレンドワードが50個だったので、上から順に50,49,48・・・・3,2,1と適当なスコア付けをしてログを貯める形にしてしまいました。あれこれ考えたものの、手っ取り早くできそうなことはこの程度かと思いまして。。。

これだけだと集計でつまづきそうなので、Yahooショッピングのキーワード分析サイトを作るときに使ったカレンダーテーブルのデータも連携させ、レスポンスデータの取得をスタートしてみました。

cronを仕掛け始めてから約3ヶ月。5分毎に走るcronは一度もこけることなく無事走り続けてくれたようで、みたら70万レコードを超えるデータがSQLにたまっておりました。

年末休みに入り、無事にデータがたまりまくっているのはすぐ分かりましたが、なにせ適当に値を付けて保存したデータを集計するとどうなるかがサッパリ予想できなかったので、取り急ぎこのトレンドデータをキーワード毎に月別でSUMするクエリを書いて吐き出してみました。

70万レコードからSUM GROUP BYして0.6294 秒で取れました

すると、なんとなく使えそうなデータを取得することができ、レスポンスもさほど問題ない感じでしたので、早速このクエリをベースとして、月別のトレンドワードのランキングを見れるようなサイトに仕立て上げてみました。休みもそれほどある訳ではないので、デザインは画像掲示板の泉で使ったbootstrapのテンプレートをほぼそのまま流用して仕上げてあります。

twitterトレンドランキングサイトのついーたん

できあがったのが、こちらのついーたんです。なんでこんなサイト名かというと、cron用のプログラムを作ったときに何故か/tweetanというサブディレクトリを切って作っていたので、このtweetanをそのまま使いついーたんにしてしまいました。当時何を思ってディレクトリを/tweetanにしていたのかは全く思い出せません。。。

とにもかくにも、これでdtn.jpのサブドメインは全部で6サイトとなりました。

どのサイトも、ユーザ数・セッション数が微妙に増えつつあるので、今年ものんびりと個人サイト運営を頑張りたいと思います。

スポンサーリンク