Slide 1

Slide 1 text

Kotlin AndroidΞϓϦ ։ൃࣄྫ঺հ(ٕज़ฤ) 2016/09/07 ΪϧυΧϯϑΝϨϯε2016
 Abe Asami

Slide 2

Slide 2 text

ࣗݾ঺հ "CF"TBNJl͖ͷࢠz
 େࡕͷϑϦʔϥϯεϓϩάϥϚ IUUQOPDPOPOFU !BBUI 4DBMBɺ"OEPSJE +BWB,PUMJO

Slide 3

Slide 3 text

w ౔ େࡕ࢈ۀ૑଄ؗʹͯ։࠵ʂ IUUQTVNNJUTDBMBLBOTBJPSH

Slide 4

Slide 4 text

ຊ೔ͷ಺༰ • ۩ମతͳίʔυྫΛݩʹɺઌ೔ͷAndroid։ ൃҊ݅Ͱར༻ͨ͠Kotlinͷػೳ΍AndroidϥΠ ϒϥϦͷ঺հ͍͖ͯ͠·͢ɻ • λΠτϧʹ ɹϚʔΫ͕͋ΔεϥΠυ͸ KotlinɺɹɹϚʔΫ͕͋ΔεϥΠυ͸Android ϥΠϒϥϦͷ࿩Ͱ͢ɻ

Slide 5

Slide 5 text

Kotlin࠾༻ʹ͋ͨΓ ·ͣߦͬͨ͜ͱ

Slide 6

Slide 6 text

৘ใऩू

Slide 7

Slide 7 text

৘ใऩूͷ݁Ռ ࣄલʹܾΊͨ͜ͱ • kapt(Annotation ProcessingΛ࢖༻͢ΔͨΊͷϥΠ ϒϥϦ)Λ࢖༻͠ͳ͍ • ෆ۩߹͕ଟ͘ϋϚΓ΍͍͢ͱฉ͍ͨͨΊ • KotlinͰDagger2Λར༻͢ΔࡍʹඞཁʹͳΔ • ར༻͍ͯ͠Δͱ͍͏࿩΋Α͘ฉ͘ͷͰɺ࣍͸νϟϨ ϯδͯ͠Έ͍ͨ

Slide 8

Slide 8 text

ϓϩδΣΫτͷߏ੒ • ϓϨθϯ૚ • Activity΍FragmentɺCustomView (UI෦඼) • υϝΠϯ૚ • ϏδωεϩδοΫɺEntity (ΞϓϦଆ༻) • Πϯϑϥ૚ • API΍DB΁ͷσʔλΞΫηεɺEntity (API༻) ※ ࠓճॾࣄ৘ʹΑΓɺΞϓϦଆͱAPIଆͷσʔλϞσϧͷണ཭͕ൃੜ͠ɺΠϯϑϥ૚ͱυϝΠϯ૚ͷ྆ํʹEntity Λ࡞੒ͨ͠

Slide 9

Slide 9 text

Πϯϑϥ૚

Slide 10

Slide 10 text

Entity

Slide 11

Slide 11 text

Entityͷίʔυ ྫ) name, age 2ͭͷϓϩύςΟΛ࣋ͭPersonΫϥε

Slide 12

Slide 12 text

data class • ϓϩύςΟʹԠͯ͡equalsɺhashCodeɺtoString ͳͲΛΑ͠ͳʹੜ੒ͯ͘͠ΕΔ • ͍ΘΏΔPOJOΫϥεΛ࡞Δ࣌ʹศར

Slide 13

Slide 13 text

Null҆શ (null-safety) • nullͱͳΓಘΔ(Nullable)͔൱(NotNull)͔Λܕ Ͱ໌֬ʹ۠ผ͢Δ • ܕͷޙΖʹ `?` Λ͚ͭͳ͚Ε͹nullΛ୅ೖ͢Δ ͜ͱ͸Ͱ͖ͳ͍

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

APIΞΫηε

Slide 16

Slide 16 text

Retrofit • Squareࣾ੡ͷAPIΞΫηεͷͨΊͷHTTPΫϥ ΠΞϯτϥΠϒϥϦ • ΠϯλʔϑΣΠε͑͞࡞ͬͯ͠·͑͹ɺ࣮૷ ͸Α͠ͳʹੜ੒ͯ͘͠ΕΔ

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

RetrofitMockͱ͍͏ϥΠϒϥϦͰϞοΫΛ࡞੒͢Δ ͜ͱ΋Մೳ

Slide 19

Slide 19 text

υϝΠϯ૚

Slide 20

Slide 20 text

Model • Πϯϑϥ૚Λར༻͠ɺσʔλΛొ࿥ɾऔಘ • (DDDతʹRepositoryͱ͍͏໊લͷํ͕ద੾ ͔ͩͬͨ΋ɾɾɾ)

Slide 21

Slide 21 text

۩ମతͳ࣮૷ͷ࿩Λ͢Δલʹ ิ଍આ໌

Slide 22

Slide 22 text

AndroidͷϚϧνεϨου
 ϓϩάϥϛϯάʹ͍ͭͯ • UIͷૢ࡞͸mainεϨουͰߦ͏ • ॏ͍ॲཧΛmainεϨουͰ࣮ߦͯ͠͸͍͚ͳ͍ • UI͕ݻ·Δ • ը໘ͷϥΠϑαΠΫϧʹ஫ҙ͢Δඞཁ͕͋Δ • ը໘͕ഁغ͞ΕͨޙʹαϒεϨου͔ΒmainεϨουΛݺͼग़ͯ͠UI ߋ৽͠Α͏ͱ͢ΔͱམͪΔ • AsyncTaskͱ͍͏ΫϥεΛ࢖͏ͷ͕Ұൠత͕ͩɺίʔυ͕൥ࡶʹͳΓ͕ͪ

Slide 23

Slide 23 text

ͦ͜Ͱొ৔͢Δͷ͕

Slide 24

Slide 24 text

RxAndroid • ͍͍ײ͡ʹඇಉظॲཧΛѻ͑ΔϥΠϒϥϦ • ObserverύλʔϯΛ؆୯ʹར༻Ͱ͖Δ • RxJavaͷAndroid༻ΤΫεςϯγϣϯ

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

unsubscribe͢ΔͱsubscribeॲཧΛ
 ΩϟϯηϧͰ͖Δ

Slide 27

Slide 27 text

ϥϜμࣜͱSAMม׵ • ϥϜμࣜͱSAMม׵ʹΑΓɺίʔϧόοΫॲཧΛJava7 ΑΓ؆ܿʹهड़͢Δ͜ͱ͕Ͱ͖Δ

Slide 28

Slide 28 text

ϓϨθϯ૚

Slide 29

Slide 29 text

Kotlin Android Extensions • JetBrainsࣾͷAndroidStudioϓϥάΠϯ • Activity͔ΒViewཁૉΛϓϩύςΟͱͯ͠ѻ͑ ΔΑ͏ɺࣗಈతʹόΠϯσΟϯάͯ͘͠ΕΔ

Slide 30

Slide 30 text

findViewByIdΛҰ૟Ͱ͖Δ

Slide 31

Slide 31 text

ςετ

Slide 32

Slide 32 text

UIςετ • ࠓճ͸UIςετͷΈΛ࡞੒ • KotlinͰॻ͖͔͕ͨͬͨɺ͕࣌ؒͳ͘ແ೉ʹ JavaͰهड़

Slide 33

Slide 33 text

࢖༻ͨ͠ϥΠϒϥϦ • Espresso • Google੡ AndroidͷUIςετ༻ϥΠϒϥϦ • Spoon • Squareࣾ੡ εΫϦʔϯγϣοτΛͱΔϥΠϒϥϦ • MockWebServer • Squareࣾ੡ ϞοΫαʔόʔ

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

·ͱΊ • KotlinΛར༻͢ΔͱैདྷͷJava7ΑΓ΋؆ܿͳ ίʔυΛॻ͘͜ͱ͕Մೳ • Kotlinؔ܎ͳ͘ɺAndroid։ൃΛָʹͯ͘͠Ε ΔศརͳϥΠϒϥϦ͕૿͍͑ͯΔ

Slide 37

Slide 37 text

• KotlinΛ࢖͑͹࣮ߦ଎౓͕͕͋Δʂͱ͍͏Θ͚Ͱ͸ͳ ͍ͷͰʮJava8Ͱ͍͍͡Όͳ͍ʯͱݴΘΕͯ͠·͏ͱ ʮͦ͏͔΋ʯͱ͍͏ײ͡Ͱ͢ɻ • ͨͩɺ؆ܿʹίʔυΛॻ͚ΔΑ͏ʹߟྀ͞Ε͓ͯΓɺ ؾ࣋Α͘ίʔυΛॻ͚Δݴޠͩͱࢥ͍·͢ɻ • ࠓճɺKotlin͸ಋೖͷෑډ͸௿͍ͱײ͡·ͨ͠ɻ
 Έͳ͞Μ΋ͥͻνϟϨϯδͯ͠Έ͍ͯͩ͘͞ɻ

Slide 38

Slide 38 text

͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ ࢀߟจݙɿ ,PUMJOελʔτϒοΫ৽͍͠"OESPJEϓϩάϥϛϯά௕ᖒଠ࿠