Zenly Apiで遊ぶ
2022年 04月 11日 月曜日
自己紹介
2月からアルバイトを始めました、伊藤です。
専門学校の2年生です、プログラミングとソロキャンが趣味です。
言語はC#が少し分かります、Reactに興味があって勉強したいと思っています。
よろしくお願いいたします。
ZenlyApiで遊ぶ
ZenlyはフランスのZenly社が開発した位置情報共有アプリです
- リアルタイムな位置情報がわかる
- 友達のバッテリーの残量
- 寝ているか確認できる
友達の中でも賛否両論で万人受けなアプリではないです。
何かに使えそう
プログラムから友達の位置情報を取得できると面白そう
解析する
- Windowsでプロキシサーバーを立てる
- iOSにオレオレ証明書をインストールする
- SSl復号化
ProtcolBufferというフォーマットで通信されていました
ProtocolBuffersとは
Googleが開発したバイナリベースの通信フォーマットです
Protocol Buffersではスキーマの定義を強制されます。 JsonのSchemaが任意実装な点と異なります。
データには型の情報は含まれていません サーバーとクライアントにあらかじめ型情報を渡す必要があります
スキーマ定義言語
スキーマは.protoファイルを使用して定義します
message Company{
uint64 id = 1; // 1
string name = 2; // MK System
string policy = 3; // アジャイル開発で価値のあるソフトウェアを創造する
}
シリアライズ結果
08 01 12 09 4d 4b 20 53 79 73 74 65 6d 1a 45 e3 82 a2 e3 82 b8 e3 83 a3 e3 82 a4 e3 83 ab e9 96 8b e7 99 ba e3 81 a7 e4 be a1 e5 80 a4 e3 81 ae e3 81 82 e3 82 8b e3 82 bd e3 83 95 e3 83 88 e3 82 a6 e3 82 a7 e3 82 92 e5 89 b5 e9 80 a0 e3 81 99 e3 82 8b
デコード結果
通信データには型の情報も変数名もありません .protoファイルからC#,Ruby,golangなどのモデルクラスを自動生成できるので、フロントエンドとサーバーサイドの認識の違いが無くなります。
僕は好きではない
スキーマ定義言語が読みやすい、書きやすいのは良いと思います でも通信データを人間が読めません、デバックしにくいです
API Client
ZenlyのAPIと通信するライブラリのリポジトリです https://github.com/aijkl/zenly-api-client
APIを活用した解析アプリ
通知アプリのリポジトリです https://github.com/aijkl/zenly-analytics
使い道
観察したい場所を定義
ポーリングして位置情報を取得
観察したい場所にいるか判断
- 入ったら通知
- 離れたら通知
Zenly Apiのラップ
自分のApi(orange-mikan.org/api/)から位置情報を取得できるようにする 自分のApiの認証認可で呼び出せるようになる
まとめ
ProtocolBuffersという技術を知ることができました
位置情報やバッテリーの残量がわかるので、充電忘れを警告するアプリなど利用の幅は広いと感じました