Pokémon GO で近隣のポケモン出現をkintoneの通知で受け取ってみる

Pokémon GO を kintone連携でより楽しむために

【追記】 Niantec社の規約により、Pokémon GOに関するAPIの利用について規制がかかりましたので、読み物としてお楽しみ頂ければと思います m(__)m

日本でもリリースされた「Pokémon GO」ですが、皆さん楽しまれていますでしょうか。物理とバーチャルの繋がりをより感じることができることから、筆者もちょっとハマっています。

image1
公式サイトより)

自分の足で探しまわるのが醍醐味ではあるのですが、安全上の問題が指摘されていたり、ハマり込むほど暇でもありません。そこで、こちらからは動かず、探さず、自宅等の近くに出現したらピンポイントにGETする方法をITの力で実現できないものかと考え、調べると・・・既にありました。

ポケモンGOで自分の近くにポケモンが出現したらSlackに通知する英語の元サイト)」ということで、チャットツールであるSlackを利用した例が紹介されていました。いいですねぇ。そうすると、kintoneだとより楽しめそうとのいつもの発想が出てきます。

ということで、本家repositoryをforkしてkintone版作ってみました!ここでは適用をザラッとご紹介したいと思います。 (果たしてプルリクする日はやってくるのか)

完成イメージ

先に完成イメージを共有しましょう。ポケモンが出現すると、コメント登録され、それを通知で受け取ることが出来るようになります。
image10

構成とまではいかないですが、全体の動きはだいたいこんな感じです。
image15

Pokémon GO を kintone 連携する設定方法

Botプログラム用のサーバー準備

常駐のBotプログラムを実行させるサーバーが必要です。また、次のツール・環境が入ってなければ入れてください。

  • git
  • gcc
  • Python実行環境

ここでは、Amazon EC2のAmazon Linuxを例に説明を進めていきます。

Amazon Linuxの設定

gitのインストール
sudo yum install git
gccのインストール
sudo yum install gcc
プログラムのダウンロード

GitHubからまるっとcloneしてください。

https://github.com/yamaryu0508/PokemonGo-SlackBot.git
モジュール等インストール

cdで「PokemonGo-SlackBot」に移動して、インストールコマンドを入れます。

cd ./PokemonGo-SlackBot
sudo pip install -r requirements.txt

ここまで来たら、一旦kintoneの設定に移っていきます。

kintoneの設定

テンプレート等のダウンロード

こちらからZIPファイル「PokemonGo-SlackBot-master.zip」をダウンロードします(実は先程のAmazon Linux用にダウンロードしたrepositoryと同じです)。

ダウンロードしたら、解凍しておきましょう。今回使うのは「PokemonGo-SlackBot-master」中の「kintone」です。
image2

スペーステンプレートのインポート

「kintoneシステム管理」中の「スペース」-「スペーステンプレート」から「読み込む」をクリックして、「kintone」の中にある「kintone app. for Pokemon Go.sptpl」を取り込みます。

スペーステンプレートの作成

「kintoneシステム管理」から遷移して、「スペース」-「スペーステンプレート」から「読み込む」をクリックして、「kintone」の中にある「kintone app. for Pokemon Go.sptpl」を取り込みます。「POKEDEX」というアプリを含んだスペーステンプレートです。

スペースの作成

先程取り込んだテンプレートからスペースを作成します。成功すると、スレッドが2つ、アプリが1つ展開されます。
image3

アプリへのデータインポート

POKEDEXアプリは、ポケモンのマスタアプリの役割を果たしますので、データが入ってないと役に立ちません。データは「kintone」中の「data」に内包されています。

インポートはkintoneのコマンドラインツールである「cli-kintone」を利用しますので、お使いのOSに合わせて「kintone」配下にダウンロードしてください。cli-kintone利用の意図は添付ファイルもアップロードするところにあります。cli-kintoneが面倒な方は、「data」配下の「records.csv(UTF-8)」を通常のCSVインポートで取り込んで頂くのでも大丈夫です。

ダウンロード出来たら、次のようなコマンドを打って、POKEDEXアプリにマスタデータをインポートします。中括弧で括っている部分はご自身のkintone環境のパラメータに置き換えてください。

./cli-kintone -a {POKEDEX app. id} -d {subdoamin} -u {login name} -p {password} -b ./data/ -f ./data/records.csv

データのインポートに成功すると、POKEDEXアプリの一覧画面は次のようになります。
image4

Pokémon GOに登場するポケモン達がkintoneに取り込まれました。

kintoneのパラメータを確認

今回kintoneのパラメータとして、次の3つを押さえておいてください。

  • 「kintone app. for Pokemon Go」のスペースID
  • 「Rare Pokemons appearance」のスレッドID
  • 「POKEDEX」のアプリID

まずは、スペースIDとスレッドIDを確認します。
image5
次に「POKEDEX」のアプリIDを確認します。
image6

Botプログラムの実行

パラメータの準備

いよいよBotプログラムを実行してみます。次のパラメータを確認しておきましょう。

  • 「ポケモントレーナークラブ」もしくは「Google」アカウントのログイン名
  • 「ポケモントレーナークラブ」もしくは「Google」アカウントのパスワード
  • kintoneアカウントのログイン名
  • kintoneアカウントのパスワード
  • 「kintone app. for Pokemon Go」のスペースID
  • 「Rare Pokemons appearance」のスレッドID
  • 「POKEDEX」のアプリID

これらのパラメータはプログラムに埋め込みになりますので、認証情報である「ポケモントレーナークラブ」もしくは「Google」アカウントは、この仕組み用に取り直すのが良いかと思います。また、kintoneアカウントは贅沢にひとつ専用で作ってしまいましょう(私は「Pokemon master」というアカウントを作りました)。kintoneアカウントを作りなおす理由は、通知元になりますので「Pokemon master」等とすることで雰囲気を出すことと、今夏のアップデートで追加になる「スレッドのコメント投稿API」を使いますが、アプリ内で設定するAPIトークンでは認証できないためです。

Botプログラムの実行

サーバーの「PokemonGo-SlackBot」に戻って、次のように実行します。

python pokekintone.py -u {pokemon/Google id} -p {pokemon/Google password} [-a google] -r 250 -l "35.672789 139.755192" -st 1 -kd "{kintone domain}" -ku {kintone id} -kp {kintone password} -kU {kintone Basic Authentication id} -kP {kintone Basic Authentication password} -ai {POKEDEX app. id} [-si {space id}] [-ti {thread id}]

pokekintone.py」というファイルが今回の肝です。「pokeslack.py」を元に、SlackのIncoming Webhookへのリクエスト部分をkintoneへのコメント登録に書き換えた感じです。

コマンドライン引数の内容を説明します。

  • -u {pokemon/Google id} : 「ポケモントレーナークラブ」もしくは「Google」アカウントのログイン名
  • -p {pokemon/Google password} : 「ポケモントレーナークラブ」もしくは「Google」アカウントのパスワード
  • [-a google] : 「Google」アカウントを利用した際に必要( 「ポケモントレーナークラブ」の際には記載しない)
  • -r 250 : メートル単位の検索範囲(200mくらいまでしか効いてない?気がする)
  • -l “35.672789 139.755192” : 検索中心点の緯度経度(例は、ニャースの巣との噂がある日比谷公園)
  • -st 1 : 検索精度のパラメータ
  • -kd “{kintone domain}” : kintoneのドメイン(「pokemon.cybozu.com」部分)
  • -ku {kintone id} : kintoneアカウントのログイン名
  • -kp {kintone password} : kintoneアカウントのパスワード
  • -kU {kintone Basic Authentication id} : kintone Basic認証のログイン名
  • -kP {kintone Basic Authentication password} : kintone Basic認証のパスワード
  • -ai {POKEDEX app. id} : POKEDEXのアプリID
  • [-si {space id}] : 「kintone app. for Pokemon Go」のスペースID(省略可/2016.8.14アップデート後利用可)
  • [-ti {thread id}] : 「Rare Pokemons appearance」のスレッドID(省略可/2016.8.14アップデート後利用可)

検索中心点は、自宅や会社(「そういう仕組があって、たまの息抜きにはポケモンもいいんじゃない」的な会社であることは必要かと)の緯度経度をコンマ無しで指定することになります。緯度経度の入手はGoogle Mapの右クリックメニューの「この場所について」等を活用しましょう。
image14

実行するとコンソールは次のようになります。
image7

kintone通知内容の確認

Botプログラムが動き出すと、ポケモンの出現がコメントとして登録されます。また、コメント登録と通知が紐付くよう設定されていますので、ポケモンの出現時にはkintoneを介して通知を受け取ることができます。

レコード内コメントを利用したポケモン出現通知
kintoneのPOKEDEXアプリを見ると、レコード内コメントが登録されていることが分かります。
image8

レコード詳細画面も見てみましょう。
image10
そのレコードのポケモンの居場所がコメントとして登録されます。場所といつまでその場所にいるかの情報までが記載されています。また、「Trainer who Want to Get(ユーザー選択)」フィールドに追加しておけば、コメント登録時に通知を受け取ることができるので、欲しいポケモンの出現通知だけを受け取るような設定が可能です。

メール通知も設定していると、次のような感じで受け取ることができます。コメントなので、内容も見れるのが良いですね。
image12

スペース内スレッドコメントを利用したポケモン出現通知(2016.8.14アップデート後利用可能)
「Rare Pokemon」フィールドに「rare」のチェックがあるポケモンの出現は、「Rare Pokemons appearance」スレッドでも共有されます。※Botの実行時に「-si」、「-ti」のコマンドオプションで、スペースIDとスレッドIDの指定が必要です

image10

レアなポケモンについては、スレッドでもその出現が共有されています。
image11

まとめ

サーバーの準備やcli-kintoneを使ったデータ投入等いくつか難所がありますが、Pokemonの出現場所と滞在時間がわかる非常にGET効率向上に効果的な手法だと思います!

効率化された分だけ運動要素等は減ってしまいますが、kintoneの使い方としてもちょっと面白いと思います。数カ所仕掛けて、巣の噂や出現確率の検証なんていうのも別の楽しみ方だと思いますし、興味を持って頂いた方はお試し頂ければと思います。

p.s.テクニカルな面でも2016.8.14アップデートの機能を想定したり、見どころはありそうに思いますので、「kintoneを便利に使う方法を紹介するブログ」の方で触れることが出来ればと思っています。

*
*
* (公開されません)