Twitter API を使用し定期的にツイートを集計し、データをランキング形式で表示するアプリを作りました。
URL: https://toptennovels.com/lists?type_id=0
Twitter: @top10novels
作ったもの

名刺代わりの小説10選というタグが付いたツイートを2日ごとに集計し、トップ500までのデータを表示するアプリを作りました。



アプリ概要
Twitter API を使用し、#名刺代わりの小説10選というタグがツイートを集計し、データをランキング形式で表示するアプリを作りました。
#名刺代わりの小説10選
— 名刺代わりの小説10選集計bot (@top10novels) November 1, 2021
金閣寺/三島由紀夫
海辺のカフカ/村上春樹
春琴抄/谷崎潤一郎
博士の愛した数式/小川洋子
夜は短し歩けよ乙女/森見登美彦
こころ/夏目漱石
罪と罰/ドストエフスキー
変身/フランツ・カフカ
容疑者Xの献身/東野圭吾
十角館の殺人/綾辻行人
上のようなツイートを2日ごとに最大40個集計し、タイトルや著者名などのデータを随時データベースに追加していきます。
集計方法についてはこちら
集計後には集計したツイート数、カウントされた作品数を自動でツイートします。
検索機能もついています。
タイトルで検索をし、どれくらいの人が名刺代わりの小説10選に入れたのか確認できます。
技術スタック

こちらがインフラ構成です。
Front-end
フロントエンドは React.js 。
Back-end
バックエンド・インフラ周りは すべて Firebase で完結しています。デプロイも Firebase で。
- Firestore: データ管理
- Functions: 設定したトリガーでバックエンド処理を自動的に実行
- Hosting: デプロイ
無料プランではなく、従量制の Blaze プランを使用。
Firebase の Schedule functions というものを使用し、設定されたスケジュールで処理を実行しています。
機能の紹介
- データを登録日、票数の項目からソート
- 検索機能 (Algoliaを使用)
- 作品別だけではなく著者ランキングも表示
- 集計に使用した累計ツイート数、累計作品数を月ごとに表示
ツイートからタイトルと著者名の情報を収集した後、一冊一冊、楽天ブックスAPIを使用し検索にヒットされたもののみカウントしています。
APIは1回につき1秒以上の間隔をあけて使用しています。
デザインは Material – UI を使用。
図はChart.js。