Pokemon Go Plusを自作して歩きスマホから開放された話

はじめに

歩きスマホ危ないとか以前に,画面見ながら歩くのまじでだるいと思う.
公式からPokemon Go Plusっていういい感じのデバイスが出るらしいんだけど,待ってらんないし,自分のスキルセット的にばっこしな感じがしたので自作してみた.
以下の動画のような感じで,スマホの画面をチェックしなくても,ポケモンを見つけたり捕まえたりすることができて便利.

youtu.be

このエントリではまずはじめに,全体としてどんな感じで動いているのかを記すのみとし,具体的なプログラムについては別のエントリとして記すこととする.

ポケモンGo Plusとは

スマホをポッケにいれたままPokemonGoを楽しむためのデバイスで,以下のような機能を持つ.
え〜〜〜ポケモンの名前わかんないの〜〜〜って思うかもしれんけど,特に目的のポケモンがいないときとかはお気楽に遊ぶことができて意外といいと思う.

機能

BLEでつながる.

バイスが振動するので,スマホを出さなくても,近くにポケモンがいることがわかる

ボタンを押すと近くにいるポケモンを捕まえる.対象となるポケモンはランダムだと思われるが,ぼうけんノートから確認可能.また,結果をLEDと振動のパターンで教えてくれる

  • ポケストップが近くにあることを知らせる

近くにいるポケモンを知らせてくれるのと同様に,振動で知らせてくれる.ポケモンの時とはLEDの色と振動パターンが異なる.

  • 近くのポケストップにチェックインする

ボタンを押すと近くのポケストップにチェックインして道具が手に入る

外観

コンパスとモンスターボールを足したような形をしてる.
うでにはめたり,クリップでむねぽっけにつけたりする.
正直,え〜〜〜〜これ〜〜〜〜みたいな顔すると思うんだけど,DIYなら外装も自分好みにできちゃうんですよ(これからやります).

http://www.pokemongo.jp/plus/display1.png Pokemon Go公式ページより

実装

ハードウェア(デバイス)

バイスはシンプル.慣れてる人ならファームも含めてチャチャッと実装できちゃうくらいシンプル.
ファームは,上で述べた機能が利用できるように作成している.

ソフトウェア

実はキモはソフトウェア側.現在の公式アプリではまだデバイスと連携する設定がない.
そこで,NianticAPIを叩くライブラリとスマホアプリを連携させることで,デバイスを通してPokemon Goが遊べるようにする.

アプリ

まずはAndroidで作ったが,iOSも作れると思うし,ふだんiOS使ってるので作る予定.
アプリの主な機能は以下の2つであり,デバイスとサーバの仲介役みたいなもんである.

  • バイスとBLEで通信する.

ポケモンが見つかったなどの通知をデバイスへ送信し,デバイス側のボタンが押されたことを検知する.

  • サーバと通信する機能

サーバから通知されるポケモンが見つかったなどの通知を受信し,ポケモンを捕まえるようサーバへ指示を送信する.また,自身の緯度経度もサーバへ送信する.

サーバ

昨日おとといくらいに,ある場所の近くにいるポケモンをSlackへ通知するっていう記事がはやってたけど,あれと同じようなもんをつかってる.
プロトタイプのしやすさ的にPythonではないなと思ったので,Poke.ioというnpmモジュールを使った.
ここでNianticAPIを叩いて,近くにいるポケモンを見つけてアプリへ送信したり,アプリからのポケモン捕まえて命令に基づいてポケモン捕まえたりする.

これから

ひとまずデバイスのガワを作る.プログラムは公開に向けて準備するとともに,ブログにまとめる予定.
また,PebbleやAndroid Wearでも,ソフトウェアPokemon Go Plusみたいな感じで同様の機能が利用できるアプリを作っているので,そちらも進めていきたい.実際こっちのが便利でしょ.

youtu.be