見出し画像

ボードゲームのランキングをつぶやくTwitter Botを作った話

みなさん、こんにちは。
日頃ボードゲームの情報やルールサマリーをTwitterで投稿しているゆきあそびです。

ボードゲームのランキングの変化を毎日見ることができたらいいなと思い、1年ほど前に専用のTwitterアカウントを作成しました。
全くの超初心者かつ無知識の状態から試行錯誤しながら作ったので、作成の経緯とか含めいろいろ書きました。
何かの参考になるかと思うので、よかったらみてください。

ボードゲームとは?

ボードゲームについて知らない人がいるかもしれないので説明しておきます。
ボードゲームは、専用のボード上でカードを使ったり駒を動かしたりして複数人で対面して遊ぶゲームです。
有名なゲームだと「カタン」や「宝石の煌き」がありますね。

カタン(BGGより)
宝石の煌き(BGGより)

これら以外にもボードゲームはたくさんあるのですが、それもそのはず、ボードゲームは世界中(特にヨーロッパ)で数多く遊ばれています。
で、そのたくさんのボードゲームをデータベース化してランキング化しているのが、「BoardGameGeek(BGG)」(ボードゲームギーク 略してBGG)というWebページです。
下の図は実際のランキング画面です。ランキングの順位とそのボードゲームのリンク、レーティングが表示されていますね。このランキングは日々変わっていくので毎日何かしらのボードゲームの順位が上がったり下がったりしています。
当然ながら英語で書かれたページですが、今は翻訳ページも充実しているのでそんなに苦にはならないのがよいですね。


ボードゲームのランキングをチェックしたい!

世界のボードゲームの面白さをランキング化してくれているボードゲームギークのランキングですが、このランキングは毎日変化していきます。
日頃ボードゲームを買ったり遊んでいるので、当然ながらどのボードゲームの順位が伸びてきているかというのが気になってきます。
しかし、どのボードゲームが伸びているのかを確認しようとすると、毎日のランキングを記録して次の日にその変化を確認するほか方法がないのが実情です。
”このランキングの変化を自動で毎日確認したい!”と思っていたので、TwitterのBotでどうにかこれを解決できないかと考えることにしました。


Step1 -> Twitterアカウントを自動で呟けるようにする

ボードゲームのランキングをTwitter Botとして配信するために、まず専用のTwitterアカウントを開設し、そのアカウントをBotで呟けるようにしました。

TwitteAPIとは?

Twitterアカウントを自動で呟くには、別で作成したプログラムからTwitter側に指示を出す必要があります。
そのために、Twitterを操作する鍵のようなもの(実際はAPIキー)を入手しました。この鍵を利用すればTwitterアカウントを自動で呟かせることができます。

TwitterAPIの利用方法

APIキーの入手方法は、「Twitter APIキー 入手方法」などと調べればわかりやすいページがたくさん出てきます。詳細なAPIキーの取得方法について、わかりやすいページがあったので参考に添付しておきます。

Twitter APIの利用登録ができたら4つのキー
 ・API Key
 ・API Secret
 ・Access Token
 ・Access Secret
を入手できます。Step3でこの4つのキーを使います。


Step2 -> BGGのランキングページからページ内の情報を取得する

プログラミング環境を整える

Step1ではTwitterアカウントで自動的に呟くための鍵を取得しました。
次に、つぶやきの元になるボードゲームのランキング情報を取得していきます。
Webページの情報を取得するため、PythonなどのプログラミングによりWebページから情報を取得(スクレイピング)するための環境を構築します。今回はGoogleのサービスのGoogleAppsScriptを利用しました。
他のサービスやプログラミング言語を利用することも考えたのですが、
 ・無料で利用できること
 ・利用するための環境の構築が不要
 ・表計算ソフト(スプレッドシート)との連携が容易
 ・プログラムの実行をカンタンに自動化(一番重要!)
というメリットからGoogleAppsScriptを選ぶことにしました。

【注意】相手のサーバに大きな負荷をかけてしまった場合、それが業務妨害に当たると判断される可能性があります。実際に訴訟に発展した案件もあるので使用には注意してください。


BGGのランキング情報を表計算ソフトに保存する

WebページはHTMLで記述されていますので、ランキングページの中から必要な情報(順位とボードゲーム名)だけを取得できるようにします。
実際には、BGGのランキングページからHTMLを取得し、その中からボードゲームのランキング情報だけを抽出し、最後にGoogleスプレッドシートに保存するというものです。
図で示すと下図のような感じです。

ランキング情報の取得フロー

GoogleAppsScriptで行うWebスクレイピングの方法について参考になりそうなページがあったので載せておきます。

また、スクレイピングで取得した情報をスプレッドシートに書き込むにはGoogleAppsScript上でスプレッドシートのIDを指定して操作します。
参考になりそうなページがあったので掲載しておきます。


実際のBGGのランキング情報をスプレッドシートに転記したものが下図です。前日のランキング情報と比較することで、ボードゲームの順位の変動がわかるようにしています。この順位の変動があったボードゲームのみをTwitterアカウントのBotで呟くようにしています。

スプレッドシートに転記したボードゲームのランキング情報


Step3 -> 順位の変動があったボードゲームをTwitterBotで呟く

このステップではGoogleAppsScriptで実際のランキング情報を呟きます。
実際の流れは、Googleスプレッドシートのランキング情報を取得し、Twitter APIで認証を行い、その内容をツイートするというものです。

スプレッドシートから情報を取得してツイートするまでの流れ

表計算ソフトの情報からをツイートする

ボードゲームのランキングの変動はStep2で取得しているので、GoogleAppsScriptでランキングの変動があったものを抽出し、それをテキスト化してツイッターで呟いています。
Twitterで呟くためのコードの書き方は以下の動画を参考にしました。

※ GoogleAppsScriptの仕様変更でスクリプトプロパティの場所が変更になっています。詳細はこちら(外部ページ)からどうぞ。


Step4 -> 自動でスクリプトを実行する設定を行う

これで、これまでに作ったスクリプトを自動実行する環境を整えるだけになりました。
自動実行する環境が整えば晴れてTwitter Botとして稼働できるようになります。
自動実行のスケジュール登録はカンタンです。参考になりそうなページを載せておきます。

完成!

実際のツイート

これでボードゲームのランキング情報を毎日ツイートするTwitter Botが完成しました。
実際にランキング情報をツイートしたものが↓こちら↓です。

ツイートには文字数制限があるので、変動があったボードゲームをのうち上位3つまでをツイートに載せるようにしています。
リンクはボードゲームランキングへのページで、気になるときにはいつでもランキングページに飛べる仕様にしました。

おわりに

なにも知識がない中、調べながら試行錯誤しながらなんとか形にできたと思います。
今後もっとボードゲームの界隈が盛り上がっていけばいいなと思い、今回やってみたことを書いてみました。
ここまで費用は一切かかっていませので、興味のある方はぜひ、ボードゲームの情報を発信するBotなど、作ってみてください。

それでは。




いいなと思ったら応援しよう!