この記事はなんか布教したいエンジニア Advent Calendar 2019 - Qiita 23日目の記事です。
ポケモンGOの何を記録するのか
夫婦でポケモンGOをプレイしているのですが、タマゴを孵化させたときに、お互いのアカウントによって生まれてくるポケモンに偏りがある気がしたので、孵化させたポケモンを記録することにしました。2017年の1月から始めたので、もう3年近く記録を取り続けたことになりますね。すごい。
ポケGO知らない人向け:タマゴについての補足
ポケモンGOにはガチャがありませんが、唯一ガチャっぽい要素として「ポケモンのタマゴ」というものがあります。ポケモンのタマゴは通常のアイテムのようにポケストップ(マップ上に存在するアイテム回収スポット)から回収し、特定の距離をリアル世界で歩くことで、タマゴからポケモンが生まれる仕様です。タマゴに入っているポケモンはランダムで、かつ、どのポケモンが生まれてくるかはタマゴを孵化させないとわかりません。タマゴは「2km」「5km」「7km」「10km」の4種類あり、それぞれ孵化に必要な歩行距離が異なります。
どうやって記録するか
LINE Messaging APIとSQLite3(とMojolicious::LiteというWebフレームワーク)を使用して記録しています。
ポケモンが孵化するたびに、LINEにタマゴの種類 生まれたポケモンの名前
の書式で投稿することで、DBに以下の情報が記録されます。
- 投稿したユーザーの名前(妻/夫)
- タマゴの種類(2km/5km/7km/10km)
- ポケモンの名前
- ポケモンの世代(初代のポケモンなら1、金銀のポケモンなら2、RSEなら3...)
- 投稿日時
実際の投稿画面はこんな感じです。
LINEを使うことで、わざわざ記録用にAndroidアプリを作成しなくても良いのと、サーバサイドだけ考えればいいので実装がめちゃくちゃ楽という恩恵が受けられます。
どうやって記録を見るのか
蓄積した情報から統計が取れないと意味がないので、我が家では以下2種類の方法で統計が見られるようにしています。
- LINE botに問い合わせする
- Metabaseを使う
LINE botに問い合わせする
今まで孵ったポケモンの数や、孵化した数のランキングなんかが取得できるようになっています。
Metabaseを使う
LINEでも用が足りるといえば足りるのですが、テキストベースなので、いまいち数が実感としてわからないという問題がありました。
そこでMetabaseです。MetabaseはOSSのデータ可視化ツールで、SQLite3に対応しています(ここ重要)。Elasticsearchが前提のKibanaと違い、それ単体で動作することと、インストールとセットアップがめちゃくちゃ簡単という理由で採用されています。
めちゃくちゃわかりやすいダッシュボードが起動から10分位でつくれます。すごい。
各データが可視化されることで、例えば「なぜかわからないがヨーギラスが突然すごい勢いで生まれるようになった」とかの情報が、体感ではなくデータからわかるわけです。
途中から実装された3世代(RSE)のポケモンのほうが2世代(金銀)のポケモンより生まれてるとか、BWのポケモンは全然生まれないとかもわかるようになりました。(スクショ中段の左から1番目のグラフが夫のグラフ、3番目が妻のグラフ。)
フィルターが使えるので、例えば「4世代(ダイパ)実装後に、10kmタマゴから生まれたポケモン」も調べられます。
左が夫のグラフ、右が妻のグラフ…なのですが、フカマル生まれてなさすぎてやばいですね。7/702で出現率が1%を切ってしまってるんですが、有利誤認表示とかにならないんでしょうか。
まとめ
LINE Message APIとMetabaseの組み合わせの布教記事でした。
ポケモンGOやゲームの結果に限らず、買い物を頼んだ回数とか、帰宅時間をLINE経由で記録してMetabaseで可視化したり、使い方は無限大なので、ご家庭に合わせてぜひ導入してみてください。