GET AR

世界を変えるARニュースメディア

現実世界にモンスターボールを投げて、仮想ポケモンをゲットする猛者が登場

2017/03/07
 6239

ぶっちゃければ、僕はポケモンGOがリリースされるまで、好きでもなんでもなかった。しかし、どこででもずっとオンラインで見ていた。そして少年時代のノスタルジーを思い出したくなった。そこで、ちょっとやってみたんだが。。最初からハマッたとは言わない。しかし、だんだん自分の中で大きな存在になっていった。そして、このアプリのトレーラーを見ている人はみんな、本物のモンスターボールを持って投げたいんじゃないか、なぜできないんだ!?という考えにいたった。

現実世界にモンスターボールを投げて、仮想ポケモンをゲットする

モンスターボールを投げて、仮想ポケモンをゲットするアイデア

このアプリをダウンロードしてから数日後に頭に浮かんだ。そして、コンセプトの証となるものをとりあえず作らなければならないことが分かった。しかし、どうやったらいいんだ?僕はとりあえず、Bluetoothのリンクを使ってセンサーデータを自分のiPhoneに送った。自分が書いたアプリはこのデータを受信し、スワイプを始める。センサーは加速度計がいいだろう。だって、スピードの変化も検知できるし。それにスロー(THROW)を検知する一番簡単な方法になるだろうから。

モンスターボールの中にある電子機器出典: plainsmanlabs.com

そんなわけで、僕はネットで注文した。これは加速度計モジュールで、Bluetoothモジュールでもある。ところが翌日、僕はTI SensorTag(上の写真)を見つけて注文した。これは構築する予定だったものがすぐに使えるバージョンだったので、かなりの作業量を削減してくれた。

モンスターボールを投げて、仮想ポケモンをゲットするため、Amazonで購入

Amazonでかっこいい、ちょっと大きめのソフトモンスターボールを見つけた。中に何でも入れられるヤツだ。正面のボタンを押すと、音がしてライトが点く。それだけのものだが、しっかりとした作りになっている。

中身を全部出してみた。

モンスターボールの中のクッションをすべて出した出典: plainsmanlabs.com

モンスターボールを投げて、仮想ポケモンをゲットするために必要なハードウェア

SensorTagをon/offボタンが手前にくるようにモンスターボールの中に押し込んだ(ここ、重要。最初はボタンがどこか分からなくなったから。。。)SensorTagは大きすぎて正面の穴から中に入れられなかった。だから、あなたの周りの黒の線に沿って水平に切り、中に入れた。強力接着剤をほんの少しつけて切断面をしっかり接着した。

モンスターボールの中にあるセンサー出典: plainsmanlabs.com

ソフトモンスターボールの中にあった円筒形の電子部品覚えてる?僕はその蓋を工具ではずしてみた。この蓋はボールの開口部分にぴったり収まった。そしてSensorTagのon/offボタンを押したいときは取り外せる。ソフトフォームのパッドをつめて、透明な部分に白の絶縁用テープを貼った。

モンスターボールを固定してハードウェアは完成出典: plainsmanlabs.com

ハードウェアはこれでOK!今度はソフトウェアを作ってみよう。

モンスターボールを投げて、仮想ポケモンをゲットするために必要なソフトウェア

SensorTagから送られてくる加速度計データをBluetooth経由で自分のアプリで開封。スローが発生したら、加速度計の値が急上昇し、僕のアプリはファイルにそのスローが、発生したことをファイルに書き込む。次に、自動アプリ(AutoTouchという)用のスクリプトで、そのファイルが書き込まれたことを確認し、画面上でスワイプが始まり、モンスターボールがゲームの中に投げ入れられる。

githubでサンプルコードを見つけた

tetujinに大声で挨拶しなくては。彼のgithub repoだけが、SensorTag 2.0用(今販売中)に変えるサンプルコードを見つけた場所だったから。ドキュメントはあるけど、僕はiOSやBluethooth開発を過去にやったことがないから、TIは僕の手には負えなかった。

リアルポケモンゴーゲット、githubソース公開

GitHub
GitHub - tetujin/SensortagBleReceiver: This is a sample iOS application for connecting SensorTag (CC2650) to iOS devices via BLE

僕のアプリができることといえば、Bluethooth接続の管理、加速度計データの読み込み、そして加速の大きさが閾値を超えるときにファイルに書き込むこと。それだけだ。これは簡単だったという意味じゃないけど、本当にたいしたことないんだ。僕の友人Michael Moxleyにも声をかけて、iOSの開発を手伝ってくれと頼んだ。

AutoTouchでズルをした

このソフトウェアのもう一つの部分はスクリプトで、AutoTouchと呼ばれるアプリ用に僕が書いたものだ。このアプリはタッチスクリーンでのタッピングやスワイプを自動化してくれ、ゲームでいかさまするために作られたようなものだ。でも、僕が今やっていることにはすごく使える。スクリーンのタッチをシミュレートするには、未公開のAPIをいじる必要があるから、このアプリが必要なんだ。僕にはそれが機能するようにする時間がなかったから、AutoTouch用のスクリプトを書いた。これで未公開APIを問題なく扱える。

リアルポケモンゴーゲット、アプリAuto Touch

僕のスクリプトは絶えずバックグラウンドで動作し、僕のアプリが書き込むファイルをチェックする。「THROW」というテキストがファイルの中にあれば、モンスターボールを他ゲルためにユーザーがスワイプするのをシミュレートする。そして、このファイルは消去される。それだけのことだ。

モンスターボールを投げて、仮想ポケモンをゲットするのは簡単だった

繰り返して言うと、これがこのアプリのすべてだ。僕のアプリはモンスターボールの中のSensorTagに接続し、加速度計のデータを読み込む。加速が特定の値より高いと、ファイルに「THROW」と書き込まれる。すると、今度はそのファイルをチェックするAutoTouchのスクリプトが起動し、スクリーン場でスワイプをシミュレートする。AutoTouchに複雑でレイヤーが不必要に追加されるけど、サンプルを動かすための膨大な時間が節約された。

僕のケイタイの画面はUSB経由でノートパソコンに表示されている。残念ながら、これを書いているときはケイタイのカメラしか持ってなかった。だから、目の前でポケモンGOをやっている間ビデオを録画するのにバックグラウンドで機能するスパイカムアプリを使わざるを得なかったんだ

ACTUAL POKEBALLS FOR POKEMON GO
Actual Pokeballs for Pokemon GO

関連記事
海外のポケモンGOの事情に関するニュースまとめ

ARニュース
, , , , ,