ポケモン出現マップのOSS「ポケモンGOマップ(PokemonGO-Map)」を試してみた

本記事で紹介したPokemonGO-Mapは、Niantic社からの通知を受けて、開発公開を中止しました(2016/8/7)。

Niantic社がチート対策でAPIも一時変更しましたが、それに対応すれば、非公式に動かせなくはないです。ただ、非公式であり、チートなので、良い子のポケモントレーナーは、ポケモン出現マップを実装したり、動作させたりしないようにしましょう。

ポケモンGOをやっていると欲しくなってくるのが、ポケモンがどこに出現するのかのマップ(地図)です。

ポケモンGOが日本でリリースされて1週間、私は、ポケモン図鑑を81匹まで埋めました。

並み程度にやっている人に聞いたら60匹ぐらいと言っていました。つまり、普通にやっていると60~80匹ぐらいは集められます。

しかし、ここら辺から壁があり、ポケモン交換機能が実装されていない現状(今後、実装されるという噂)、ただやみくもに街中を歩いていてもポケモン図鑑をコンプリートするのは、不可能に近いです。

出現頻度が低いレアポケモンは、狙い撃ちして捕まえに行かないと厳しいです。

初代ポケモンもどこら辺に何々のポケモンが出現すると当たりをつけることができたので、151匹集めることができましたが、ポケモンGOでは、ネットで「ポケモンの巣」の情報を見ていても時期によって出現するポケモンの種類が変わったりし、また、「ポケモンの巣」が存在しない(たぶん)ポケモンもいるので、当たりをつけるのが困難です。

そこで、この課題を解決すべく、世のエンジニアたちは、ポケモン出現マップサイト、サービスを立ち上げました。

有名どころは「PokeVision(ポケビジョン)」「PokeWhere(ポケウェア)」があります。

他にもいくつも同様なサービスがあり、中には有料のサービスもあります。

どうやってこの出現マップを実現しているかというと、どうやら非公式にポケモンGOのポケモン出現のAPIを叩いているようです。

叩けるようになっていることに驚きました…

しかし、PokeVisionやPokeWhereは、全世界中の邪道ポケモントレーナーからのアクセスが殺到して、サーバ負荷により、サービスが不安定で、便利に使えるようなものではありませんでした。

そして、今日(2016/7/31)になってPokeVisionとPokeWhereのサービスが一時停止したようです。

サーバ負荷が原因によるメンテナンスかもしれませんが、両方とも同時にサービスが停止したことから、もしかしたらポケモンGO開発会社の「Niantic」からアク禁をくらった可能性もあります。

ということで、個人でポケモン出現マップを作ろうとAPIを叩く方法を探していましたら、GitHubになんとポケモン出現マップのOSS(オープンソースソフトウェア)が公開されていました。

AHAAAAAAA/PokemonGo-Map

導入方法の動画まであり、iOSやAndroidのクライアントアプリもあり、すごい充実しています。

さすが、エンジニア。エンジニア尊敬します。

このポケモンGOマップは、PythonとNode.jsで動いているっぽいです。

Pythonで動いているので、Linuxで動かそうと思いましたが、PythonとNode.jsのバージョンをアップデートするのが面倒だったので、とりあえずWindowsで試してみたら、あっさり動きました。

次に、Linuxで動かそうとPythonとNode.jsのアップデートを試みましたが、様々な方法を試みるもエラーが解決せず、しまいには、既に動いてたサービスが動かなくなったり、非常に大変でした。

諦め、やっぱり試み、を繰り返し、やっと動かなくなったサービスもポケモンGOマップも正常に動くようになりました。

PythonのプログラムがLinuxよりWindowsで簡単に動くってなんだかなぁ…

そして、動くようになったポケモンGOマップの画面が以下です。

ポケモンGOマップ(PokemonGO-Map)

オプション機能まで色々あり、UIも綺麗で、すごいw

ブラウザのNotification(ノーティフィケーション)機能まで実装されています。

さらには、マップ上のポケモンアイコンをクリックして、「Get directions」をクリックすると、そのポケモンの場所まで行くルートナビと時間まで示してくれます(Google Mapsの機能と連携)。

再度、世のエンジニアを尊敬。

ちなみに、上記の写真は、ディズニーランドです。

中心付近に、たくさんポケモンがいる…

私がまだ出会ったことがない、ビリリダマ、コイル、メタコイル、イワーク、スリープ、マタドガスがいる…

さすが、夢の国や…

1年に1回、30秒の間だけ、ミッキーポケモンでも出たら面白い。

ポケモンGOマップの入れ方の説明は、省きます。

というのも、コロコロ仕様が変わるので、ここで説明を書いても数日後には、入れ方や設定の仕方が変わってしまうからです。実際に、ネット情報を参考に設定しようと思ったら、既に情報が古くなっていて、少し悩みました。

少なくとも現状、必要なのは、「Google Maps API(JavaScript用)」のアクセスコードポケモンGOの捨てアカウントです。捨てアカウントの理由は、バン(アカウント停止)をくらったときのためです。

現状(2016/7/31)、プログラム起動時に設定する検索関係のconfigは、以下のようになっています。

この設定の中で、よくわからないのが、「step-lilmit」

何なのかというと、上記写真の緑色の円の数(中心からの半径分)です。この円は、マップ上の検索した範囲を示します。

上記写真のポイントマーク(中心)の円を含めて、例えば、左側に円を数えていくと、円の数が5個になります。この数が「step-limit」です。つまり、上記写真は、「step-limit」を5に設定しています。

「step-limit」の値を高くすると、その分、広範囲を探索できます。

しかし、一方、ポイントマークの中心から順に「step-limit」の上限まで探索していくので、「step-limit」の値が高い分、再度、ポイントマークの中心に戻って、マップを再スキャンするまでに時間が掛かります。

検索の設定の「num-threads」が「1」で、「scan-delay」が「5(秒)」の場合、円1つのスキャンにつき5秒掛かるので、再スキャンまで「全部の円の数×5秒」掛かります。

つまり、自分の近くにポケモンが新たに出現したか早く知りたい場合は、「step-limit」の値が低い方が良いです。または、「num-threads」と「scan-delay」の値を上げるか(上げ過ぎると、サーバ負荷が掛かる&Nianticからのアクセス禁止をくらいやすくなるかも)。

はたまた、location(ポイントマーク)を移動させると、再度、location(ポイントマーク)の場所からスキャンされるので、GPSをオンにして移動している場合は、「step-limit」を気にする必要はあまりないかもです。

このポケモンGOマップを利用すると、効率良く「ポケモンゲットだぜっ!」できます。

これでポケモンマスターまでの道のりを短縮できます。

そんな方法でポケモン図鑑をコンプリートしてもポケモンマスターとはいえない、邪道だ!と言われる可能性があるのはさて置き。

ちなみに、上記の方法は、ポケモンGO非公式な方法なため、ポケモンGOマップを使って、規約に反して、アカウント停止等の何かが起こっても自己責任です。

そのうち、Nianticによって、対策や規制が入って使えなくなる可能性もあります。

人の流れ、位置情報などの色々なセンサデータやオープンデータとこのポケモン出現マップの情報を組み合わせたら、実験的に色々できそうです。

そうすると、新しい知見が見つかり、技術の発展に繋がったり、消費行動の活性化、社会に利潤をもたらしたりする可能性もあります。

なので、Niantic(または、Google、任天堂)が公式に開発者用のポケモン出現APIを公開して、社会貢献利用として、Developer登録したら使えるようにしてくれたら、ありがたいですし、さすが、Google様、任天堂様となって、企業価値が上がります。

スポンサーリンク