ポケモンGOをいろいろビジュアライズしてみる

 

7月22日よりリリースされたポケモンGOは瞬く間に人気を拡大しました。Twitterでも話題となっており、ポケモンGOに関するツイートはリリース後のたった3時間で135万を超えたそうです。
 
今年の1月にSMAP解散と伝えられた時のSMAPに関するツイートは1日で約110万だったそうです。国民的アイドルであるSMAPをポケモンGOは3時間で抜いたんですね…。

 

ポケモンGOは位置情報を活用したソーシャルゲームのことで、現実世界そのものを舞台にしています。

従来のポケモンとは違い、実際に外出してポケモンを探し、捕まえなくてはいけません。

「トキワの森でピカチュウを探すのではなく、地元の公園でピカチュウを探す」といったところでしょうか。また、捕まえたポケモンは戦わせたり、交換したりすることもできます。

ポケモンGOをキッカケに引きこもりが外出するようになったとか…。さらにはスマホを見ながら歩く人やポケモンを捕まえたいがために不法侵入する人が増えたというお話も増えました。

これに関してはプレイヤーのリテラシーが低いわけであって、ポケモンGOはそんなに悪くはないと僕は思います。便利なものが増えていますが利用する人のリテラシーが低いのは世の中の問題ですね…。

 

というのは置いといて、今回は面白そうなのでポケモンGOをビジュアライズしてみたいと思います。

 

ポケモンのタイプを可視化する

まずは今回登場するポケモンを簡単に集計して可視化していきたいと思います。

今の所登場しているポケモンは初代のポケモンとなっていて合計で151体います(一部実装されていないポケモンもいるみたいです)。誰もが知っているピカチュウが登場する時代ですね。 

 

ポケモンにはタイプというものがあります。

タイプとは「みず」や「ほのお」などがあり、それぞれのタイプ同士に相性があります。例えば、「みずタイプのポケモンはほのおタイプのポケモンに強い」「ほのおタイプのポケモンはくさタイプのポケモンに強い」などゲームの世界ではよくありますね。そしてこのタイプは18種類程度あるようです。

まず、今回登場するタイプを集計してみました。

 

タイプ別集計
タイプ別集計

 

集計してみたところ「みずタイプ」と「ノーマルタイプ」がメインタイプとして多いようです。一番少メインタイプが「こおりタイプ」で、初代のポケモンでは確かにこおりタイプはあまりいなかった気がします。

メインタイプだけではなくサブタイプも含めて集計すると、こんな感じです。

 
002
 

 

主成分分析でお好みのポケモンを探す

 

次は主成分分析でお好みのポケモンを探してみたいと思います。

ポケモンのステータスには「攻撃力」「防御力」「体力」「スピード」「特殊攻撃力」「特殊防御力」などの指標があります。これだけの指標があるとなかなか選びづらい….。

そこでこれらの指標を結合して新しい指標を作り出しお好みのポケモンを探し出してみたいと思います。

data <- read.csv("data.csv")
head(data)
     pokemon attack defense hp special_attack special_defense speed
1  bulbasaur     49      49 45             65              65    45
2    ivysaur     62      63 60             80              80    60
3   venusaur     82      83 80            100             100    80
4 charmander     52      43 39             60              50    65
5 charmeleon     64      58 58             80              65    80
6  charizard     84      78 78            109              85   100
rownames(data) <- data[,1]
data.s <- scale(data[,2:7])
data.pc <- prcomp(data.s)
biplot(data.pc)

 

主成分分析の結果
主成分分析の結果

 

この結果から横軸(PC1)は総合的な強さ、縦軸(PC2)は「スピード早め特殊技系」ポケモンor「体力多め体育会系」ポケモンと決めてみました。

ポケモンの名前が英語で読みにくいので別途グラフを作成しました。

004

コイキングやキャタピーなど、ステータスが低いポケモンは左側にいるのがわかります。

また、ミュウツーは総合的なステータスが一番高いことがわかりました。

 

「スピード早め特殊技系」の代表としてはケーシィ・ユンゲラー・フーディンなどのエスパータイプのポケモンとなっています。

「体力多め体育会系」の代表はサイドン・ゴローニャ・パルシェンです。特にサイドンはバリバリの体育会系のようです。

またメインタイプ別に見て特に優劣がないことがわかりました。つまり、各タイプに弱いポケモンと強いポケモンが偏りなくいるということです。

 

僕的には体育会系ポケモンの方が好きですね(笑)。

なのでサイドンを選択したいところですが、総合的なステータスが標準よりなので、もう少しステータスの高い「カビゴン」を選んでいます。

 

カビゴンの出現場所をTwitterのデータから探る

ポケモンGOではTwitterと連動して、ポケモンを見つけると「カビゴンみつけた@東京都 〇〇公園〜」といった出現場所を投稿する機能があります。今回はこの投稿をかき集めてカビゴンの生息地を探していきます。

ちなみに、ポケモンの出現率は強さやレア度に比例して異なります。カビゴンの出現率もそれほど高くないようです。

Rでデータを取得する際は「twitteR」というパッケージを使います。
#twitterAPIに接続
library(twitteR)
consumerKey <- "XXXXXXXXXXXXXXXXXXXXXXX"
consumerSecret <- "XXXXXXXXXXXXXXXXXXXXXXX"
accessToken <- "XXXXXXXXXXXXXXXXXXXXXXX"
accessSecret <- "XXXXXXXXXXXXXXXXXXXXXXX"
options(httr_oauth_cache = TRUE)
setup_twitter_oauth(consumerKey,consumerSecret,accessToken,accessSecret)

#データ取得
SearchWords <- c("カビゴン+出現場所")
tweet <- twListToDF(searchTwitter(searchString = SearchWords,
           n = 10000,
           lang = NULL,
           retryOnRateLimit=120))

こんなデータイメージです。

 

データイメージ。
データイメージ。

 

TwitterAPIは10日前までのデータを取得可能で、今回は8月15日から8月25日までの合計3099件データを取得できました。

このデータのtextに含まれる出現場所の地名をもとにジオコーディングし、経度緯度の情報を取得します。

今回はRT(リツイート)を除き東京と大阪に絞ってみていきたいと思います。

 
006
 

東京都の生息地は主に23区といったところでしょうか。西の方にはほとんど生息していないようです。

しかし、八王子駅や立川駅周辺には結構出現しているみたいです。意外に町田市には出現していないみたいです...。

都心の方では上野公園によく強いポケモンが出現するという話を聞いたことがありますが、カビゴンの場合はそうではないように思えます。ちなみに上野公園の出現報告は10日間で1件です。

23区内では「平和の森公園」「錦糸公園」「水元公園」「代々木公園」がカビゴンに出会いやすいかもしれませんね。

 
007
 

大阪では「大阪駅」「梅田駅」周辺を中心にカビゴンが生息しているようです。特に「久宝寺緑地」と「服部緑地公園」ではこの10日間で40件程度出現が確認されているようです!

この周辺を探索していれば高確率でカビゴンに会えるかもしれません。

そして意外とUSJでも出現が確認されていることです。テーマパークで楽しんでる時に何やってんだ!って感じですね。まぁアトラクション待ちの最中ならいいのか...。

 

まとめ

今回はポケモンGOのビジュアライゼーションに挑戦してみました。

カビゴンの生息地を見てみましたが、他のポケモンで見てみると分布は異なるはずです。

捕まえたいポケモンの生息地を把握するために、Twitterからデータを取得してそれをリアルタイムにプロットするアプリを救ってみたら面白いかもしれません。(自分でそのアプリを作れるようになった頃にはブームは去っているかも...。)

これからどんどんアップデートされ、ポケモンの種類も増えると思うので、またのきかいがあった時は第2弾を考えてみたいと思います!
 
みなさんポケモンGOをプレイする時は周りに気をつけてプレイしてくださいね。

以上です。