この記事では、Twitter APIのGET trends/place APIを使ってツイッターのトレンドワードデータを取得し、これをサイトの形に仕立てるまでの流れをご紹介しています。実際にこのデータを元にして作ったサイトが「ツイータン」になります。サイトをまずはご確認下さい。

Twitterでは様々なAPIを公開されていますが、ツイッターのトレンド情報を地域別に取得できるGET trends/place APIでは、トレンドのキーワード情報という、かなり使えるデータを取得することができます。

5分毎に更新されるこのデータをスコアリングしつつ集信して、ランキングにまとめたサイトがこの「ツイータン」になります。




TwitterのAPI

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

Twitter APIのトレンドデータ

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

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

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

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

トレンドデータをためる

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

APIレスポンスデータの中身

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ショッピングのキーワード分析サイトを作るときに使った、カレンダーマスターの日付データも連携させ、Twitter APIのトレンドランキングデータ蓄積をスタートしてみました。

API取得開始から3ヶ月後

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

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

すると、なんとなく使えそうなデータが取得できていることが確認できました。

API取得開始から3ヶ月後で取得した70万レコードをORDER BYしてみた
70万レコードからSUM GROUP BYして0.6294 秒で取れました

データを元にWEB化

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

バックエンドが制作できたのでフロントデザインを加えてサイトとする
twitterトレンドランキングサイトのついーたん

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

現在のtweetan

その後、ひらがなでこのフォントだと流石にダサすぎとは思いまして、トップのロゴも筆記体に変えておきました。

Twitterトレンドランキングサイトのサイト名をひらがなから片仮名に
その後、ちょっとロゴ変えました

おわりに

あっという間に2020年となりました。このサイトも含めると、dtn.jpのサブドメインは全部で6サイトとなりました。

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

ABOUT dtn.jp

この運営ブログをみてdtn.jpの運営サイトに興味をお持ちになった方は下記のリンク集からサイトをご参照ください。PHP・SQL・JS・HTML・CSSや様々なAPIでゼロから立ち上げたサイトを複数運営しています。

dtn.jp関連サイト

  • ディレクトリ型検索エンジンdtn大手は全てサービスを終了してしまい、中小でも運営を継続するところがほとんど無くなったディレクトリ型検索エンジンを、2002年から細々運営しております。今も申請されたサイトは実際に管理人が訪問して確認後に登録しています。是非登録どうぞ。
  • 猫ネコサーチエンジン猫・ペットサイト専用のディレクトリ型検索エンジンです。登録サイトはサイトのスクリーンショット付きでカテゴリに掲載をいたします。
  • 画像掲示板の泉画像・YouTube・ニコニコ動画・Tiktokの貼り付けが可能な匿名画像掲示板です。27ジャンルに分かれた掲示板に、それぞれ100スレッドまで立てることが可能です。
  • ツイータンTwitter APIを使って10分おきに収集したTwitterトレンドワード・人気ハッシュタグデータを、月別に集計してランキング形式で公開しています。年間トレンドワードも公開中。
  • Keyword Tool++Yahooショッピングや楽天のトレンドワードデータを日次収集し、EC系の人気キーワードをラインキング形式でご紹介しています。各ワードの検索ボリュームや関連語、24か月の検索ボリュームをグラフで確認が可能です。
  • 消費者金融の泉カードローン商品を取り扱う金融業者を一覧で比較可能としたサイトです。カテゴリ別、人気度別、限度額別、金利別に比較可能です。
  • TrendinGファッションブランドを人気アイテムヒット率でランキング化し、一覧でご紹介しているサイトです。

各サイトの開発方法などについて

各サイトの開発方法や運用トラブルについては、当ブログで不定期にご紹介しています。Twitterで新着記事のお知らせもしています。宜しければフォロー下さい。