Slide 1

Slide 1 text

@futabooo Connehito Marché #1ʙAndroidࢢʙ #ConnehitoMarche AndroidͰεΫϨΠϐϯάͨ͠࿩

Slide 2

Slide 2 text

2 About me 4FOJPS&OHJOFFS4DSVN.BTUFSBUFVSFLB *OD +BWB ,PUMJO (PMBOH 5ZQF4DSJQU "OHVMBS+4 'BOUBTZ&BSUI;FSP T$3:FE 4QMBUPPO GVUBCPPP ɹɹɹೋ઒ ོߒʢTakahiro Futagawaʣ

Slide 3

Slide 3 text

3 About eureka ैۀһ਺ ໊ʢฏۉ೥ྸࡀʣ ࣄۀ಺༰ ࣗࣾαʔϏεاըɾ։ൃɾӡӦ 1BJST $PVQMFT ձࣾ֓ཁ

Slide 4

Slide 4 text

4 About eureka

Slide 5

Slide 5 text

ࠓ೔ͷ࿩

Slide 6

Slide 6 text

https://droidkaigi.jp/2018/proposals

Slide 7

Slide 7 text

Έͳ͞Μ͸ຊΛಡΜͩ͋ͱͲ͏͠·͔͢ʁ

Slide 8

Slide 8 text

ಡΜͩ಺༰Λه࿥͓͖ͯͨ͘͠ͳΓ·ͤΜ͔ʁ

Slide 9

Slide 9 text

https://bookmeter.com/

Slide 10

Slide 10 text

10 ಡॻϝʔλʔ ಡΜͩຊΛײ૝ͱͱ΋ʹه࿥Ͱ͖Δ ಡΜͩྔΛ؅ཧ͢Δ͜ͱ͕Ͱ͖Δ

Slide 11

Slide 11 text

AndroidΞϓϦ͕ͳ͍

Slide 12

Slide 12 text

ͳ͚Ε͹ͭ͘Ε͹͍͍

Slide 13

Slide 13 text

࡞ͬͨ

Slide 14

Slide 14 text

࣮૷ͷ঺հ

Slide 15

Slide 15 text

15 ࣮૷ͷ঺հ KIZKTPVQ +BWB)5.-1BSTFS XJUICFTUPG%0. $44 BOEKRVFSZ

Slide 16

Slide 16 text

ϩάΠϯը໘

Slide 17

Slide 17 text

interface LoginService { @GET("/login") fun get(): Observable @FormUrlEncoded @POST("/login") fun login( @Field("session[email_address]") mail: String, @Field("session[password]") password: String, @Field("authenticity_token") authenticityToken: String): Observable }

Slide 18

Slide 18 text

retrofit.create(LoginService::class.java).get() .flatMap { val reader = BufferedReader(InputStreamReader(it.byteStream())) val result = reader.readLines().filter(String::isNotBlank).toList() val token = Jsoup.parse(result.toString()) .select("form input[name=authenticity_token]").attr("value") } .subscribeBy( onNext = { val reader = BufferedReader(InputStreamReader(it.byteStream())) val result = reader.readLines().filter(String::isNotBlank).toList() val alert = Jsoup.parse(result.toString()) .select(“div.container li.bm-flash-item—alert").isNotEmpty() if (alert) { Timber.i("E-mail or Password is wrong") contract.failureLogin() return@subscribeBy } }, onError = { Timber.e(it, it.message) } )

Slide 19

Slide 19 text

ར༻ͨ͠πʔϧ

Slide 20

Slide 20 text

postman, Charles, Chrome dev tool

Slide 21

Slide 21 text

ϋϚͬͨͱ͜Ζ

Slide 22

Slide 22 text

ಥવͷ࢓༷มߋ❗

Slide 23

Slide 23 text

23 ಥવͷ࢓༷มߋ ௕ظٳΈ໌͚ʹΞϓϦʹϩάΠϯͰ͖ͳ͘ͳͬͨ ৽͍͠ηΩϡϦςΟରࡦͰ3FRVFTUʹ5PLFO͕ඞཁʹͳ͍ͬͯͨ εΫϨΠϐϯάͳͷͰ਌੾ͳΤϥʔ͕ฦ͞ΕΔΘ͚Ͱ΋ͳ͍ ௐࠪʹ̍ि͔͚ؒͯमਖ਼

Slide 24

Slide 24 text

·ͱΊ

Slide 25

Slide 25 text

25 ·ͱΊ "OESPJEΞϓϦ͕ແ͍͚Ͳ࢖͍͍ͨαʔϏε͕͋ͬͨΒ࡞ͬͪΌ͑͹ྑ͍ ͱ͸͍͑εΫϨΠϐϯά͸ಥવͷ࢓༷มߋͰ͙͢ࢮ͵ ΞϓϦͷίʔυ͸͸HJUIVCެ։ͯ͠·͢ GVUBCPPP#PPL-JGF

Slide 26

Slide 26 text

Credit: NASA Earth Observatory/NOAA NGDC Thank you :)