Slide 1

Slide 1 text

ະख़ͳνʔϜ։ൃ #DroidKaigi2017 @kgmyshin

Slide 2

Slide 2 text

ࣗݾ঺հ

Slide 3

Slide 3 text

ࣗݾ঺հ • @kgmyshin • ఝٶ ጏ೭հ • AndoridΤϯδχΞ • Server / iOS / WebͳͲ΋ • ϦΫϧʔτϚʔέςΟϯάύʔτφʔζ

Slide 4

Slide 4 text

ࠓ೔࿩͢಺༰

Slide 5

Slide 5 text

ࠓ೔࿩͢಺༰ ͏ͪ͸εʔύʔΤϯδχΞ͚ͩʂͱ͍ ͏૊৫͸໓ଟʹͳ͍ɻɻ

Slide 6

Slide 6 text

ࠓ೔࿩͢಺༰ ·ͩ·ͩະख़ͳνʔϜͰͲ͏΍ͬͯ։ ൃ͍ͯ͘͠ͷ͔ɻɻ

Slide 7

Slide 7 text

ࠓ೔࿩͢಺༰ ະख़ͳνʔϜͰ ࣮ࡍͷ։ൃΛ௨ͯ͡͏·͘ߦͬͨ͜ͱ΍ ͦͷ൓ল఺Λ࿩͠·͢ɻ

Slide 8

Slide 8 text

ࠓ೔࿩͢಺༰ ౰ͨΓલͱࢥ͏͜ͱ΋ ͋Δ͔΋͠Ε·ͤΜ͕ɺ গ͠Ͱ΋ࢀߟʹͳΔ͜ͱ͕͋Ε͹޾͍Ͱ͢ɻ

Slide 9

Slide 9 text

Case ελσΟαϓϦ ENGLISH

Slide 10

Slide 10 text

ελσΟαϓϦENGLISHͱ͸

Slide 11

Slide 11 text

ӳޠͰ࿩ͯ͠ΔͷΛฉ͍ͨΓ

Slide 12

Slide 12 text

࣮ࡍʹൃԻͯ͠ΈͨΓ

Slide 13

Slide 13 text

σΟΫςʔγϣϯͯ͠ΈͨΓ

Slide 14

Slide 14 text

ͱɺ୯७ʹAPIΛୟ͚ͩ͘Ͱ͸ͳ ͍ɺߴػೳͳΞϓϦέʔγϣϯ

Slide 15

Slide 15 text

ײ֮Ͱ͕͢ɺ͜ΜͳΠϝʔδ

Slide 16

Slide 16 text

Hello, World レベル

Slide 17

Slide 17 text

APIちょっと呼ぶだけ 特定の機能使うだけ

Slide 18

Slide 18 text

ある程度のコンテキストの違った API群があったり それをキャッシュしたり

Slide 19

Slide 19 text

多くのコンテキストの違ったAPI群があったり それをキャッシュしたり

Slide 20

Slide 20 text

ここらへん 今回作ったのはここらへん (主観)

Slide 21

Slide 21 text

౰࣌ͷঢ়گ

Slide 22

Slide 22 text

iOS͸ϦϦʔεࡁΈ

Slide 23

Slide 23 text

iOSͷ࣌͸৬ਓΤϯδχΞೋਓ ͱࢲ

Slide 24

Slide 24 text

• ίʔυ͸͍͍ͩͨ20ສߦ • ը໘਺50΄Ͳ • ظؒ͸5ϲ݄ͩͬͨ (ऴ൫͸Ϊ ϦΪϦ

Slide 25

Slide 25 text

AndroidͷνʔϜߏ੒ ࢲɺ৽ଔΤϯδχΞɺiOSΤϯδχΞ

Slide 26

Slide 26 text

• ظؒ͸iOSͱಉ͡ • ΋ͪΖΜػೳείʔϓ΋ಉ͡ • ਓ਺ͦ͜ἧ͍ͬͯΔ͕ೳྗ໘Ͱ ෆ҆ͷ͋ΔνʔϜͩͬͨ

Slide 27

Slide 27 text

͕ͩͬͨɺ݁Ռ͸ແࣄ஗ΕΔ͜ ͱͳ͘ϦϦʔε • CrashFree཰͸99.98%͋ͨΓ • ධՁ͸4ΛԼճͬͨ͜ͱͳ͍

Slide 28

Slide 28 text

։ൃং൫

Slide 29

Slide 29 text

࠷ѱͳ݁຤ͱ͸ͳΜͩΖ͏…

Slide 30

Slide 30 text

࠷ѱͳ݁຤͸ ೲظʹؒʹ߹Θͳͯ͘ ϦϦʔεͰ͖ͳ͍͜ͱ

Slide 31

Slide 31 text

ະख़ͳνʔϜ͕࠷ѱͳ݁຤ʹ ؕΔཁҼ

Slide 32

Slide 32 text

ະख़ͳνʔϜ͕࠷ѱͳ݁຤ʹ ؕΔཁҼ • ܦݧ͕ͳ͍ͨΊʹɺίʔυ͕ΧΦεʹͳͬ ͯ͠·͏ • ܦݧ͕ͳ͍ͨΊʹɺ։ൃ଎౓͕଍Γͳ͍ ͜ͷະख़ͳνʔϜʹடংͱεϐʔυΛʂ

Slide 33

Slide 33 text

εϐʔυΛ্͛Δʹ͸ʁʁʁ

Slide 34

Slide 34 text

։ൃதʹҰ൪ଟ͍࣌ؒ͸ ߟ͑Δ࣌ؒ • ϓϩάϥϜΛλΠϐϯά͢Δ࣌ؒ͸ͦΜ ͳʹมΘΒͳ͍ • ݁ہ͕ࠩग़Δͷ͸Ͳ͏૊Ή͔Λߟ͑ɺࢼ ߦࡨޡ͍ͯ͠Δ࣌ؒ • ܦݧऀ͸ܦݧ্Ͳ͏૊Ή͔ͷΞΠσΞ Λ͍࣋ͬͯΔͷͰૣ͍

Slide 35

Slide 35 text

։ൃதʹҰ൪ଟ͍࣌ؒ͸ ߟ͑Δ࣌ؒ ͋Β͔͡Ί͔ͬ͠Γઃܭࢥ૝Λ ͔ͬͪΓ࿅ͬͯɺ ϝϯόʔ͕࣮૷࣌ʹߟ͑Δ࣌ؒΛݮΒ͢ (ͦͯ͜͠Ε͕டংʹ΋ͳΔ)

Slide 36

Slide 36 text

ઃܭ͸͔ͬͪΓܾΊ͓ͯ͘ ྫ͑͹͋ΔػೳΛ࡞Δͱ͖ʹɺ HogeActivity, HogePresenter, HogeUseCase, HogeRepositoryͳͲ Λ࡞Ε͹͍͍ͱɺ୭Ͱ΋૝૾Ͱ͖ΔΑ͏ ʹɺͲ͏͍͏ઃܭʹ͢Δͷ͔ߟ͓͑ͯ͘ டং εϐʔυ

Slide 37

Slide 37 text

ઃܭ͸͔ͬͪΓܾΊ͓ͯ͘ Ͳ͏͍͏ΞʔΩςΫνϟͰ΋͍͍ͱࢥ͏͕ɺ Լه͸ԡ͓͑ͯ͘͞ • ඇಉظ • ӬଓԽ • ϏδωεϩδοΫ • Πϕϯτ؅ཧ • ϑϨʔϜϫʔΫಠࣗͷͤ͘ டং εϐʔυ

Slide 38

Slide 38 text

ઃܭ͸͔ͬͪΓܾΊ͓ͯ͘ wikiʹ·ͱΊͯɺ࣮ࡍͷ͋Δͻͱͭͷػೳ Λ࡞ͬͯΈͯઆ໌ டং εϐʔυ

Slide 39

Slide 39 text

͋ͱ͸டংͮ͘Γ

Slide 40

Slide 40 text

ςετ͸ඞͣॻ͘ • ςετ͕ͳ͍ͱ͜Ζʹ్த͔Βςε τΛೖΕΔͷ͸෷͏ͷ͕೉͍͠΄Ͳ ίετ͕ߴ͘ͳΔɻ • ςετͷ࣭΋ॏཁ͚ͩͲɺগͳ͘ͱ ΋ॳΊ͔Βςελϒϧʹɻ டং

Slide 41

Slide 41 text

Theme / Style / colorͷ௥Ճېࢭ • σβΠϯΨΠυϥΠϯΛݩʹॳΊʹ جຊతͳ΋ͷΛΨπͬͱ௥Ճ • ͦΕҎ߱͸ඞཁͳ͍͸ͣͳͷͰ௥Ճ ېࢭ டং

Slide 42

Slide 42 text

dimen / string / shape / selector͸࢖͍ճ͠͠ͳ͍ • جຊతͳ΋ͷ͸ઌʹΨπͬͱ࡞Δ • ͦΕҎ߱͸ɺඃ͍ͬͯͯ΋খ·Ίʹ ࡞Δ • த్൒୺ʹ࢖͍ճ͍ͯ͠͠Δͱमਖ਼ ͨ͠ͱ͖ʹࢥΘ͵ͱ͜Ζ͕มΘͬͯ ͠·͏֬͠ೝ͠Α͏͕ͳ͍ɻɻ டং

Slide 43

Slide 43 text

൓ল఺ ཪ໨ʹग़ͨ͜ͱͱ͔͸ͳ͔͕ͬͨɺ ΋͏গ͜͠͏ͨ͠΄͏͕Α͔ͬͨͳͬͯ͜ ͱͳͲ

Slide 44

Slide 44 text

ઃܭ্ࣅͨΑ͏ͳ΋ͷΛ࡞Δ͜ ͱ͕ଟ͍ͷͰΧελϜςϯϓϨʔ τ࡞ͬͨ΄͏͕Α͔ͬͨ ෳ਺ϑΝΠϧΛ ؆୯ʹੜ੒Ͱ͖Δ εϐʔυ

Slide 45

Slide 45 text

ઃܭ্ࣅͨΑ͏ͳ΋ͷΛ࡞Δ͜ ͱ͕ଟ͍ͷͰΧελϜςϯϓϨʔ τ࡞ͬͨ΄͏͕Α͔ͬͨ http://motida-japan.hatenablog.com/entry/ 2017/01/03/190016 εϐʔυ

Slide 46

Slide 46 text

ίʔυϑΥʔϚολʔͳͲͷ IDEઃఆΛڞ༗͢Δ டং IDEͷઃఆ͸ ExportͰ͖ΔͷͰ ڞ༗͠·͠ΐ͏

Slide 47

Slide 47 text

ςετΛॻ͍ͯ΋Β͏Α͏ʹ͠ ͚ͯͨͲɺςετ࿙Ε͕͋ͬͨ githubͷࠩ෼͚ͩݕࡧ͠ͳ͍ͱΘ͔Βͳ ͍ͷͰݟམͱ͢͜ͱ͕͋Δ ΧελϜlintͰݕ஌ͯ͠CIͰfailʹ͍ͯ͠Δ டং

Slide 48

Slide 48 text

Getting StartedΛॻ͍ͯ΋ಡ· ͳ͍ਓ΋͍Δ໰୊ ͦ΋ͦ΋ಡ·ͳ͍࣌఺Ͱ…ͱ͍͏ͷ΋͋Δ͕ ͔֬ʹίʔυϑΥʔϚολʔ΍ΧελϜςϯ ϓϨʔτͷίϐʔͱ͔໘౗ɻ ઃఆ΍ςϯϓϨʔτ΋git؅ཧԼʹ͓͍ͯɺಋೖ͸ε ΫϦϓτҰͭୟ͚͹͍͍͚ͩͱ͍͏෩ʹ͓ͯ͘͠ டং

Slide 49

Slide 49 text

Getting StartedΛॻ͍ͯ΋ಡ· ͳ͍ਓ΋͍Δ໰୊ டং DEMO

Slide 50

Slide 50 text

։ൃத൫

Slide 51

Slide 51 text

৽ଔҭ੒ͷ࿩

Slide 52

Slide 52 text

ܾΊͨ͜ͱɺ΍ͬͨ͜ͱ • λεΫͷཻ౓͸ࡉ͔͘ɺ׳ΕΔʹ͠ ͕ͨͬͯͲΜͲΜେ͖͘ • ࣮૷લʹΫϥεਤΛॻ͍ͯ΋Β͏

Slide 53

Slide 53 text

λεΫͷཻ౓Λࡉ͔͘ɺ׳Εͨ Βେ͖͘ • λεΫͷཻ౓͕େ͖͍͕ނʹͦ΋ͦ ΋ͷ࣮૷ʹ͕͔͔࣌ؒΔɺͦͯ͠Ϩ ϏϡʔͰࢦఠେྔ…݁Ռɺͳ͔ͳ͔ ऴΘΒͳ͍ͱ͍͏͜ͱ͕.. ·ͣ͸ࡉ͔۠͘੾ͬͯ੒ޭମݧΛʂ

Slide 54

Slide 54 text

࣮૷લʹΫϥεਤΛॻ͍ͯ΋Β ͏ ΫϥεਤΛॻ͘લ • ઃܭํ਑ෆཧղ • ίʔυΛ͕ͬͭΓॻ͍ͨޙʹ͢΂ͯ ΍Γ௚͠…Έ͍ͨͳ͜ͱ͕ൃੜ • ωʔϛϯάͷѱ͞

Slide 55

Slide 55 text

࣮૷લʹΫϥεਤΛॻ͍ͯ΋Β ͏ ΫϥεਤΛॻ͘Α͏ʹͳͬͯ • ઃܭํ਑ͷ৯͍ҧ͍͕ࣄલʹΘ͔Δ • ωʔϛϯάͷϨϏϡʔ͕Ͱ͖Δ • ೋ౓ख͕ؒͳ͘ͳͬͨ • ΠϯλϑΣʔεΛ͔ͬ͠Γҙࣝͯ͘͠Ε ΔΑ͏ʹͳͬͨ

Slide 56

Slide 56 text

ᷤ౻͕͋ͬͨͱ͜Ζ ઃܭํ਑ͳͲΛࣗ෼͕ߟ͑Δ͜ͱͰ ੒௕ͷػձΛୣͬͯ͠·͏ͷͰ͸…

Slide 57

Slide 57 text

੒௕ʹ͸ஈ֊͕͋Δʮकഁ཭ʯ ·ͣ͸ʮकʯ͔Βɻ ܕΛ஌Δ΂͖λΠϛϯάͩͬͨͷͰ ੒௕ʹ໾ཱ͍ͬͯͨ໛༷…

Slide 58

Slide 58 text

൓ল఺

Slide 59

Slide 59 text

λεΫফԽલʹ࣮૷ΪϦΪϦ· Ͱͷॴ·Ͱམͱ͠ࠐΜͰ ڞ௨ೝࣝΛ࡞Δ εϐʔυ • ઃܭࣗମͷڞ௨ೝࣝ͸Ͱ͖͍ͯͯ΋ࡉ͔ ͍ͱ͜ΖͰ৯͍ҧ͍͕ग़ͯ͘Δ • ͦΕ͕൑໌͢Δͷ͕ϨϏϡʔ࣌Ͱ͕࣌ؒ ΋͍ͬͨͳ͍ λεΫফԽલʹڞ௨ೝࣝΛ࡞Δ͜ͱ

Slide 60

Slide 60 text

λεΫফԽલʹ࣮૷ΪϦΪϦ· Ͱͷॴ·Ͱམͱ͠ࠐΜͰ ڞ௨ೝࣝΛ࡞Δ εϐʔυ • 1िؒ୯ҐͰΠςϨʔτ͍ͯ͠Δ • λεΫΛܾΊͨॳΊͷ೔ʹAndroidνʔ ϜͰू·ͬͯશλεΫʹ͍ͭͯΫϥεਤ Λඳ͍ͨΓɺؾʹͳΔͱ͜Ζ͸ϝιου ͷத਎·Ͱඳ͍ͯڞ௨ೝࣝΛ࡞͍ͬͯΔ

Slide 61

Slide 61 text

λεΫফԽલʹ࣮૷ΪϦΪϦ· Ͱͷॴ·Ͱམͱ͠ࠐΜͰ ڞ௨ೝࣝΛ࡞Δ εϐʔυ • λεΫܾఆ೔ॳ೔ʹ3-4࣌ؒऔΒΕΔ • ͕ɺҰिؒͷΞ΢τϓοτ͸͜ͷ΍Γํ ͷ΄͏͕େ͖͍

Slide 62

Slide 62 text

λεΫফԽલʹ࣮૷ΪϦΪϦ· Ͱͷॴ·Ͱམͱ͠ࠐΜͰ ڞ௨ೝࣝΛ࡞Δ εϐʔυ ϨϏϡʔͰ͸ࠣࡉͳࢦఠ͔͠ͳ͍ͷͰɺλεΫফԽ͕ૣ͍

Slide 63

Slide 63 text

։ൃऴ൫

Slide 64

Slide 64 text

͍··Ͱʹ΍ͬͨ͜ͱ͕ ͏·͘͸·ͬͯ ͬ͘͡ΓQAΛ΍ͬͯ·ͨ͠

Slide 65

Slide 65 text

ͦͯ͠ແࣄϦϦʔε

Slide 66

Slide 66 text

·ͱΊ

Slide 67

Slide 67 text

·ͱΊ • ະख़ͳνʔϜʹ͸ܦݧෆ଍Ώ͑ʹடং ͱ։ൃεϐʔυ͕ͳ͍ • டং͸࡞Δ΂͠ • ࣮૷தʹߟ͑Δ͜ͱΛͰ͖ΔݶΓ࣮ ૷લʹߟ͑Δ͜ͱͰεϐʔυΛੜΈ ग़͢΂͠

Slide 68

Slide 68 text

·ͱΊ • ϝϯόʔҭ੒΋େࣄɻཻ౓Λߟ͑ͯ੒ ޭମݧΛੵΈ্͛Δ΂͠ɻ

Slide 69

Slide 69 text

͝੩ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠ ϦΫϧʔτϚʔέςΟϯάύʔτφʔζͷ ϒʔεʹ͍ͨΓ͢ΔͷͰ Կ͔࣭໰͋Ε͹ͦͪΒ͔ΒͰ΋ʂ (͍ͳ͔ͬͨΒ twitter͔ΒͰ΋ʂʂ)