Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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