Page 1
Potatotips 2015/07/14 @cattaka_net
メソッドを外部から無理やり叩く〜開発中だからできる荒技〜
Takao Sumitomo@cattaka_net
Page 2
Potatotips 2015/07/14 @cattaka_net
自己紹介● 住友 孝郎(Takao Sumitomo)
● たぶんAndroidアプリ開発者
● その他
● 電子工作
● OpenCV
● 執筆(?)
● ウォンテッドリー株式会社所属
Page 3
Potatotips 2015/07/14 @cattaka_net
センサーを使ったアプリを作れるよね
WiFi
加速度
Bluetooth
iBeacon
ローテーション
GPS
Page 4
Potatotips 2015/07/14 @cattaka_net
デバイス内のメソッドを直接叩きたいときあるよね
Page 5
Potatotips 2015/07/14 @cattaka_net
なんかこう、アプリ側でHTTPサーバーを立てて、、、
アプリ
動作確認したいメソッド
開発用のHTTPサーバー
Page 6
Potatotips 2015/07/14 @cattaka_net
ブラウザからアクセスしたら処理を蹴ってくれるのとか、、、
アプリ
動作確認したいメソッド
開発用のHTTPサーバー
Page 7
Potatotips 2015/07/14 @cattaka_net
できたら嬉しくないですか?
Page 8
Potatotips 2015/07/14 @cattaka_net
というわけで作りました
Page 9
Potatotips 2015/07/14 @cattaka_net
MethodHttpExporter● 目的のインスタンスをラップするコードを自動生成
● 独自スレッドでHTTPサーバーを建てる
● つまり開発用バックドア
アプリバックドアHTTP
Webブラウザ
叩く動作確認したい
メソッド
Page 10
Potatotips 2015/07/14 @cattaka_net
仕組み● 目的のクラスへの設定
● 目的のクラスにアノテーションを付ける● 目的のメソッドにアノテーションを付ける
● APTがHTTPサーバーのソースをドカっと生成する
● HTTPサーバーを起動する● ずっと起動しておくならApplication#onCreateに。● 画面と連動ならActivity#onResume/onPauseに。
Page 11
Potatotips 2015/07/14 @cattaka_net
目的のクラスとメソッドにアノテーションを入れる
Page 12
Potatotips 2015/07/14 @cattaka_net
APTで生成されたHTTPサーバーを起動させる
Page 13
Potatotips 2015/07/14 @cattaka_net
Activityの表示中のみ起動もできる
Page 14
Potatotips 2015/07/14 @cattaka_net
DEMO
https://youtu.be/QiGnZH0YOvs
Page 15
Potatotips 2015/07/14 @cattaka_net
まとめ● このライブラリ自体はどうでもいい
● AndroidはServerSocketが使える
● ローカルにHTTPサーバーを建てられる
● センサ系のややこしいものはオレオレデバッガを
作って開発の効率を上げましょう
● 間違ってもデバッガを入れたままリリースしないこと
Page 16
Potatotips 2015/07/14 @cattaka_net
というtipsでした
Page 17
Potatotips 2015/07/14 @cattaka_net
MethodHttpExporterで検索
Page 18
Potatotips 2015/07/14 @cattaka_net
ご清聴ありがとうございました
Takao Sumitomo@cattaka_net