Slide 1

Slide 1 text

Modern REST Communicate for Android 2016.5.20 @kobaken42

Slide 2

Slide 2 text

Agenda • Keyword • ΍Βͳ͍͜ͱ • RESTʹ͍ͭͯ • ࢖༻ϥΠϒϥϦ঺հ • αϯϓϧΞϓϦͷ࣮૷(ϨϏϡϫʔ͋Γ) • Keyword(͓͞Β͍)

Slide 3

Slide 3 text

Keyword • REST(RESTful) • (ؔ਺ܕ)ϦΞΫςΟϒϓϩάϥϛϯά(FRP) • ReactiveX(ϦΞΫςΟϒΤΫεςϯγϣϯ) • Parse(ύʔε)

Slide 4

Slide 4 text

΍Βͳ͍͜ͱ • Androidʹؔ͢Δઆ໌(Activity, Fragment, Lifecycle etc…) • RESTɺFRPʹؔ͢Δৄࡉͳઆ໌ • ϨΨγʔͳ࣮૷ͱͷൺֱ

Slide 5

Slide 5 text

ʊਓਓਓਓʊ ʼ REST ʻ ʉY^Y^Y^Yʉ

Slide 6

Slide 6 text

Webͷ ΞʔΩςΫνϟελΠϧͷҰͭ

Slide 7

Slide 7 text

ύϥϝʔλΛࢦఆͯ͠ ಛఆURLʹHTTP(s)ͰΞΫηε XML or jsonͰ݁Ռ͕ฦ٫͞ΕΔ

Slide 8

Slide 8 text

ύϥϝʔλ(Input)͕ಉҰͳΒ ৗʹಉ݁͡Ռ(Output)͕ظ଴Ͱ͖Δ (γεςϜͷঢ়ଶ΍ηογϣϯʹґଘ͠ͳ͍)

Slide 9

Slide 9 text

(ͪΐͬͱཚ๫͚ͩͲ) ҰߦͰݴ͏ͱ

Slide 10

Slide 10 text

Ϧιʔεॏࢹઃܭ

Slide 11

Slide 11 text

RESTful item_url -> items/:id new_item_url -> items/new edit_item_url -> items/:id/edit items_url -> items

Slide 12

Slide 12 text

Not RESTful

Slide 13

Slide 13 text

ίϨͰΘ͔Βͳ͍ਓ͸ ϫγϫγMAX΍Ͱʙʂʂ ͦΜͳͷ͋Μ·Γʹ͜ʙʂʂ

Slide 14

Slide 14 text

ຊ୊΁

Slide 15

Slide 15 text

ϦΞΫςΟϒͳ REST௨৴Λ࣮ݱͨ͠ αϯϓϧΞϓϦΛ࡞੒͍͖ͯ͠·͢

Slide 16

Slide 16 text

༏लͳϨϏϡϫʔͷྗΛ आΓͳ͕Β࣮૷͍͖ͯ͠·͢Αʂ

Slide 17

Slide 17 text

࢖༻ϥΠϒϥϦͷ঺հ

Slide 18

Slide 18 text

࢖༻ϥΠϒϥϦ(Plugin) • Retrofit • RxAndroid • Retrolambda • Lombok • butterknife(DataBindingʹஔ͖׵͑·ͨ͠)

Slide 19

Slide 19 text

Retrofit v2.0.2 • AndroidͱJavaͷͨΊͷܕ҆શͳ HTTPΫϥΠΞϯτ • ಺෦ͰOkhttpΛ࢖༻ • AsyncLoaderͱ͸΋͏͓͞Β͹ • jsonύʔεͱ͔ॾʑ΍ͬͯ͘ΕΔ • Apache HTTP ClientʁūŬťƀŘŶƂŜƃūŘ!!

Slide 20

Slide 20 text

RxAndroid v1.2.0 • RxJavaΛ಺แ͍ͯ͠ΔAndroid޲͚ ReactiveX • ϦΞΫςΟϒϓϩάϥϛϯάग़དྷΔ • ඇಉظॲཧ͕؆୯ʹॻ͚Δ (AsyncTaskͳΜͯͳ͔ͬͨ) • ڞ௨ͷΠϯλʔϑΣʔεͱͯ͠׆༻ • View͔ΒͷΠϕϯτΛड͚औΔ • ίʔϧόοΫͷҰݩ؅ཧ etc…

Slide 21

Slide 21 text

Retrolambda • AndroidͰϥϜμ͕ࣜॻ͚ΔΑ͏ʹ ͳΔPlugin • Method Referenceʹ΋ରԠ • RxAndroid, Stream APIͱͷซ༻ར ༻Ͱ΄΅Java8؀ڥʹʂ

Slide 22

Slide 22 text

Lombok v1.16.8 • JavaͰΑ͋͘ΔϘΠϥʔϓϨʔτ ίʔυΛγϯϓϧʹͯ͘͠ΕΔ • getter, setterͷهड़ෆཁʹ • nullνΣοΫΛࣗಈͰ΍ͬͯ͘ΕΔ • MITϥΠηϯε

Slide 23

Slide 23 text

ϥΠϒϥϦ঺հ͸͜͜·Ͱ

Slide 24

Slide 24 text

΍Δ͜ͱ

Slide 25

Slide 25 text

΍Δ͜ͱ • ࢖༻ϥΠϒϥϦΛGradleͰએݴ • REST௨৴ͷͨΊͷAPIΠϯλʔϑΣʔε࡞੒ • Ϩεϙϯε༻ͷΦϒδΣΫτΛ࡞੒ • ϦΞΫςΟϒϓϩάϥϛϯάͰREST௨৴ʂ

Slide 26

Slide 26 text

Ͱ͸ૣ଎

Slide 27

Slide 27 text

gradleʹهड़ͯ͘͠Ͱ

Slide 28

Slide 28 text

build.gradle(app௚Լ)

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

Slide 32

Slide 32 text

WebAPIͷInterface ࡞ΔͰ

Slide 33

Slide 33 text

ࠓճ͸ొ࿥ෆཁͳ͓खܰAPIΛ ར༻͍ͨ͠Μ΍ʂ

Slide 34

Slide 34 text

࢖༻API • WeatherHacks

Slide 35

Slide 35 text

WeatherHacksApi.java

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

ResponseObject(Entity) ࡞ΔͰ

Slide 39

Slide 39 text

ResponseObject.java

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

No content

Slide 42

Slide 42 text

Լ४උऴΘΓ

Slide 43

Slide 43 text

ͦΕ͡Όɺຊ൪ߦ͘΍Ͱ

Slide 44

Slide 44 text

͜Ε͔Β΍Δ͜ͱ

Slide 45

Slide 45 text

ࡾߦͰ

Slide 46

Slide 46 text

Activity(Fragment)ʹ RetrofitΦϒδΣΫτΛੜ੒ͯ͠ subscribeʂ

Slide 47

Slide 47 text

MainActivity.java

Slide 48

Slide 48 text

MainActivity.java

Slide 49

Slide 49 text

MainActivity.java

Slide 50

Slide 50 text

͜Ε͚ͩʂ

Slide 51

Slide 51 text

ͱ

Slide 52

Slide 52 text

ࢥΘͤͯ

Slide 53

Slide 53 text

AndroidManifest.xmlʹ Internet௨৴ͷͨΊͷ Permissionهड़͕ඞཁͦ͏ɾɾɾ

Slide 54

Slide 54 text

No content

Slide 55

Slide 55 text

AndroidManifest.xml

Slide 56

Slide 56 text

AndroidManifest.xml

Slide 57

Slide 57 text

No content

Slide 58

Slide 58 text

Keyword(͓͞Β͍) • REST(RESTful) • (ؔ਺ܕ)ϦΞΫςΟϒϓϩάϥϛϯά(FRP) • ReactiveX(ϦΞΫςΟϒΤΫεςϯγϣϯ) • Parse(ύʔε) • ঁਆͷΜͨΜ

Slide 59

Slide 59 text

ΈΜͳ΋ϦΞΫςΟϒʹ REST௨৴͠Αͬˑ

Slide 60

Slide 60 text

No content

Slide 61

Slide 61 text

https://github.com/kobaken0029/RestSample