PokemonGo Android RE を試す


ポケモンGO は、スマホ・アプリです。
Android 版がリバース・エンジニアリングされて、Github で公開されています。
PokemonGo_Android_RE

Android アプリは、簡単にリバース・エンジニアリングできます。
そのためのツールも公開されています。
しかし、それで再生したコードを公開するのは、どうなんでしょうね。

とは言いながら、せっかく公開されているので、ビルドしてみました。

ビルド
(1) Android プロジェクトをダウンロードする。
(2) Android Studio の環境を合わせる。
– Android SDK : 24
– Android Build Tools : 23.0.3
(3) Unity をインストールする
特に問題なくビルドできた。

インストール
エミュレータにインストールする。
メニュ画面にアイコンが表示された。
20160728_pokemon_go_android

実行
しかし、実行すると、エラーになります。

Failed to register non-native method UnitySendMessage as native

PokemonGo Map を試す


ポケモンGO は、ナイアンティック社のサーバーと通信しながら、ゲームが進行します。
この通信部分がハックされて、Github で公開されています。
その1つ PokemonGo Map を試してみました。

インストール
ソースをダウンロードする

$ sudo -H pip install -r requirements.txt

Google Maps API キーを取得して、
config/credentials.json に書き込みます。

起動

$ python runserver.py -a AUTH_SERVICE -u USERNAME -p PASSWORD -l LOCATION -st STEP_LIMIT

AUTH_SERVICE は、google か ptc
USERNAME は、gmail アドレス (googleの場合)
PASSWORD は、gmail アドレスのパスワード (googleの場合)
LOCATION は、例えば “Yokohama, Japan”
STEP_LIMIT は、例えば 10

確認
WEBブラウザでアクセスする

http://localhost:5000

こんな風に、ポケモンがいる場所が表示される。
20160726_okemon_go;_map


ポケモンGOの非公式APIを試す


ポケモンGO は、ナイアンティック社のサーバーと通信しながら、ゲームが進行します。
この通信部分がハックされて、Github で公開されています。

その1つ pgoapi – a python pokemon go api lib/demo を試してみました。
下記の注意書きがあります。
・これは非公式です。自分の責任で使用してね。
・私は ポケモンGO をやらないよ。
・ボットや金稼ぎのコードは入ってないよ。

インストール
ソースをダウンロードする

$ python setup.py install
Finished processing dependencies for pgoapi==1.1.0

起動

$ python pokecli.py -a AUTH_SERVICE -u USERNAME -p PASSWORD -l LOCATION

AUTH_SERVICE は、google か ptc
USERNAME は、gmail アドレス (googleの場合)
PASSWORD は、gmail アドレスのパスワード (googleの場合)
LOCATION は、例えば “Yokohama, Japan”

レスポンス
下記のようなレスポンスが返ってきます

{ 'api_url': ***,
'auth_ticket': {***},
'request_id': ***,
'responses': {
	'GET_PLAYER': {***},
	'GET_INVENTORY': {***}
}

GET_PLAYER には、プレイヤーのプロファイルが、
GET_INVENTORY には、捕獲したポケモンの情報が入っています。

例えば

'pokemon_data': {  
  'pokemon_id': 25,  
  'captured_cell_id': 6924438341447319552L,
  'cp': 11,
  'creation_time_ms': 1469193683258L,
  'height_m': 0.5040460228919983,
  'weight_kg': 10.100167274475098
  'id': 6317937124603386989L,
  'individual_attack': 10,
  'individual_defense': 10,
  'individual_stamina': 10,
  'move_1': 219,
  'move_2': 78,
  'stamina': 10,
  'stamina_max': 10
}

examples の中に、ポケモン(pokemon) と 攻撃技(moves) の一覧があります。
pokemon_id 25 は、ピカチュウ(Pikachu)
move 78 は、かみなり(Thunder)
move 219 は、でんこうせっか(Quick Attack)

20160725_pikachu


Python ローカルのIPアドレスを取得する


Python コード
ローカルのIPアドレスを取得する

import socket
list = []
print "socket name" 
for s in [socket.socket(socket.AF_INET, socket.SOCK_DGRAM)]:
	s.connect(('8.8.8.8', 80))
	nlist = s.getsockname()
	for n in nlist:
		print n,
	print
	name = nlist[0]
	list.append( name )
	s.close()
print
print "IP Address"
print list[0]

socket.socket(family, type)
AF_INET は、IPv4 インターネットプロトコルのこと。
SOCK_DGRAM は、IPパケットのこと。

s.connect((host, port))
8.8.8.8 は、Google の DNS サービスだと思うが。これを使う理由はよくわからない。

s.getsockname()
ソケットのIPアドレスとソケット番号を取得する。

参考
ローカルIPアドレスをプログラムで取得するには
python socket — 低レベルネットワークインターフェース
linux SOCKET


N is Nougat


ご存知のように、Android N のコードネームが Nougat (ヌガー) になりました。
「Android N」、正式名称は「Nougat(ヌガー)」に決定

ヌガー は、砂糖と水飴を低温で煮詰め、アーモンドなどのナッツ類やドライフルーツなどを混ぜ、冷し固めて作るお菓子らしい。
日本ではあまり馴染みがありませんね。
20160710_wiki_nougat

スニッカーズ がヌガーの仲間のようです。
これは、ピーナッツ入りのヌガーをベースに、チョコレートでコーテイングしています。
あの歯に粘りつくような食感が、ヌガーの特徴のようです。
スニッカーズ ピーナッツ 12本入り 1356円
201607010_snickers_opened

お馴染みの チロルチョコ にもヌガー入りがあります。
チロルチョコ<コーヒーヌガー> 30個入り 648円
チロルチョコ<ミルクヌガー> 30個入り 1102円 という復刻板もあるようです。
20160710_tirol_choco_milk

Wikipeadia から横浜・泉の洋菓子屋 ラ・フォンティーヌ がリンクされてました。
アーモンドヌガー 200円
20160710_la_fontaine_amandonuga

さらに調べたところ、東京・銀座の ブールミッシュ がヒットしました。
ヌガー・モンテマール。メレンゲを加え、軽い食感にしたものらしい。
味違いの5個入り 864円。
20160710_boulmich

ブールミッシュは、横浜・馬車道に系列店 ガトー・ド・ボワイヤージュ を出しています。
ヌガー・モンテマールは、ここでも扱っています。
20160710_boulmich_gv

横浜ポルタの ROSHEN でも扱っているようです。
こちらはウクライナ製みたいです。
トローネフルーツ 200g 540円 (アマゾン価格)
20160710_roshen

台湾の 牛軋糖(ヌガータン) もヒットします。
台湾語でムガーのことです。
日本でも人気があるようで、通販サイト で販売されています。
アーモンド入り牛軋糖 10個入 1,280円
20160710_yu_yu


さくら IoT で温度・湿度を観測する


20160701_sakura_iot_system

さくらの IoT Platform さくらインターネットが提供するIoTプラットフォームサービスです。
前回 は、基本的な確認ができたので。
今回は、実用的なものを作ってみました。
センサーのデータ (温度・湿度など) を、さくらの IoT を経由して、WEB にてグラフ表示します。
作ったプログラムは Github で公開しました。

まず、センサー部です。
センサーボード として、以前作ったものを使います。
温度、湿度、気圧などが測定できます。
20160701_sakura_iot_sensor_board

Arduino にセンサーボードとIoT通信ボードを接続します。
Arduino のスケッチ を作成します。
Arduino に書き込みます。
Arduino の電源を入れると、さくらの IoT サーバーに送信されます。
データは、さくらの IoT コントロールパネルに表示されます。
これで、センサー部は完成です。

続いて、サーバー部です。
今回のアルファ版では、さくらのクラウド 2万円分チケットも付いていました。
ありがたく使わせて頂き、さくらのクラウドで新規にサーバーを立てました。
サーバーのプログラム を作成します。
主要部は、Python Flask で記述しました。
さくらの IoT Platform から来たデータを、いったんデータベース(MySQL) に格納します。
データベースから読み出し、Google Chart でグラフ表示します。
これで、サーバー部は完成です。

自宅で1日ほど運用したものが、下記に示します。
ここのところ、毎日30度を超えて暑いですね。
寝る前に、クーラーを入れたので、そこだけ温度が下がってます。
20160701_sakura_iot_graph