Slide 1

Slide 1 text

εΫγϣ͔Β࢝·Δσόοάʹ͍ͭͯ 2014/09/27 yidev #16 @dealforest Toshihro Morimoto

Slide 2

Slide 2 text

ࣗݾ঺հ http://about.me/dealforest ! ! iOS App / Web Application(perl, ruby) @dealforest Toshihro Morimoto

Slide 3

Slide 3 text

ͦ΋ͦ΋ σόοά͢Δ࣌͸ͲΜͳͱ͖ʁ

Slide 4

Slide 4 text

ҙਤͨ͠ڍಈͱҧ͏ͱ͖ʂʂ

Slide 5

Slide 5 text

։ൃͷαΠΫϧ 1. iPhone Simulator 2. ࣮ػ 3. CI 4. Adhock Ͱ഑෍ 5. TestFlight ͰϦϦʔεલʹΠϯετʔϧ 6. AppStore ͔ΒΠϯετʔϧ

Slide 6

Slide 6 text

։ൃͷαΠΫϧ 1. iPhone Simulator 2. ࣮ػ 3. CI 4. Adhock Ͱ഑෍ 5. TestFlight ͰϦϦʔεલʹΠϯετʔϧ 6. AppStore ͔ΒΠϯετʔϧ

Slide 7

Slide 7 text

։ൃͷαΠΫϧ 1. iPhone Simulator 2. ࣮ػ 3. CI 4. Adhock Ͱ഑෍ 5. TestFlight ͰϦϦʔεલʹΠϯετʔϧ 6. AppStore ͔ΒΠϯετʔϧ ೉ қ

Slide 8

Slide 8 text

σόοάͷαΠΫϧ

Slide 9

Slide 9 text

σόοάͷαΠΫϧ 1. σόοάͷͨΊͷ৘ใΛݩʹͯ͠ όάͷݪҼΛਪଌ͢Δ

Slide 10

Slide 10 text

σόοάͷαΠΫϧ 1. σόοάͷͨΊͷ৘ใΛݩʹͯ͠ όάͷݪҼΛਪଌ͢Δ 2. όάΛ࠶ݱͤ͞Δ

Slide 11

Slide 11 text

σόοάͷαΠΫϧ 1. σόοάͷͨΊͷ৘ใΛݩʹͯ͠ όάͷݪҼΛਪଌ͢Δ 2. όάΛ࠶ݱͤ͞Δ 3. Let’s debug…debug…debug!!!

Slide 12

Slide 12 text

όάͷݪҼΛਪଌ͠Α͏ʹ΋ ৘ใ͕Կ΋ͳ͍ͱצͰௐ΂Δ͔͠ͳ͍

Slide 13

Slide 13 text

΍Δؾ͕͓͖ͳ͍…

Slide 14

Slide 14 text

഑෍ͨ࣌͠͸ σόοάͷͨΊͷ৘ใ͕ ͞Βʹগͳ͍ʂʂʂ

Slide 15

Slide 15 text

഑෍ͨ࣌͠ͷσόοάͷ೰Έ

Slide 16

Slide 16 text

഑෍ͨ࣌͠ͷσόοάͷ೰Έ • print debug ΍ break point ʹΑΔσόο ά͕΄΅ෆՄೳ

Slide 17

Slide 17 text

഑෍ͨ࣌͠ͷσόοάͷ೰Έ • print debug ΍ break point ʹΑΔσόο ά͕΄΅ෆՄೳ • ୺຤৘ใʹґଘ͍ͯ͠Δ৔߹ɺঢ়گΛ ਪଌͯ͠σόοά͠ͳ͍ͱ͍͚ͳ͍

Slide 18

Slide 18 text

഑෍ͨ࣌͠ͷσόοάͷ೰Έ • print debug ΍ break point ʹΑΔσόο ά͕΄΅ෆՄೳ • ୺຤৘ใʹґଘ͍ͯ͠Δ৔߹ɺঢ়گΛ ਪଌͯ͠σόοά͠ͳ͍ͱ͍͚ͳ͍ • όά͕࠶ݱՄೳͳ୺຤ͰσόοάͰ͖ ΔΘ͚Ͱ͸ͳ͍

Slide 19

Slide 19 text

ͭΒ͍…

Slide 20

Slide 20 text

ͱ͸͍͑ ৘ใ͕গͳ͍͚Ͳόά͕ ࠶ݱͰ͖Ε͹Ͳ͏ʹ͔ͳΔʂ

Slide 21

Slide 21 text

ͨͩ୺຤ʹґଘͨ͠ΓͰ ࠶ݱ͠ͳ͔ͬͨΓ͢Δͷ͕ݱ࣮

Slide 22

Slide 22 text

഑෍ͨ͠ࡍʹͲ͏΍ͬͯ σόοάͷͨΊͷ৘ใΛऩू͢Δ͔

Slide 23

Slide 23 text

Crash Report ͷऩू

Slide 24

Slide 24 text

Crash Report ͷऩू • Crash Report ղੳαʔϏεΛ࢖͑͹ָʹूΊΕΔ

Slide 25

Slide 25 text

Crash Report ͷऩू • Crash Report ղੳαʔϏεΛ࢖͑͹ָʹूΊΕΔ • Clashlitics, Bugsnag ͳͲ

Slide 26

Slide 26 text

Crash Report ͷऩू • Crash Report ղੳαʔϏεΛ࢖͑͹ָʹूΊΕΔ • Clashlitics, Bugsnag ͳͲ • ͱ͸͍͑ΞϓϦ͕ Crash ͠ͳ͍ͱू·Β͍ͷ͕೉఺ ։ൃऀͱͯ͠͸ Crash ͯ͠΄͘͠ͳ͍

Slide 27

Slide 27 text

iOS ͷ Framework Ͱൃੜͨ͠ NSError, NSException ͷऩू

Slide 28

Slide 28 text

iOS ͷ Framework Ͱൃੜͨ͠ NSError, NSException ͷऩू • Social.framework ΍ IAP Λར༻͍ͯ͠Δ৔߹͸ɺ୺຤ ଆʹ͔͠৘ใ͕ͳ͍ͷͰ͋Ε͹ͱͯ΋ॿ͔Δ

Slide 29

Slide 29 text

iOS ͷ Framework Ͱൃੜͨ͠ NSError, NSException ͷऩू • Social.framework ΍ IAP Λར༻͍ͯ͠Δ৔߹͸ɺ୺຤ ଆʹ͔͠৘ใ͕ͳ͍ͷͰ͋Ε͹ͱͯ΋ॿ͔Δ • Ͳͧ͜ͷ SDK ͕ Crash ͢ΔͷͰ Try-Catch ͯ͠ Crash ͠ͳ͍Α͏ʹͯ͠৘ใΛूΊΔ

Slide 30

Slide 30 text

iOS ͷ Framework Ͱൃੜͨ͠ NSError, NSException ͷऩू • Social.framework ΍ IAP Λར༻͍ͯ͠Δ৔߹͸ɺ୺຤ ଆʹ͔͠৘ใ͕ͳ͍ͷͰ͋Ε͹ͱͯ΋ॿ͔Δ • Ͳͧ͜ͷ SDK ͕ Crash ͢ΔͷͰ Try-Catch ͯ͠ Crash ͠ͳ͍Α͏ʹͯ͠৘ใΛूΊΔ • Crash Report ղੳαʔϏεͰ೚ҙͷλΠϛϯάͰϨ ϙʔτΛૹ৴Ͱ͖Δػೳ͕͋Ε͹؆୯ʹूΊΕΔ

Slide 31

Slide 31 text

iOS ͷ Framework Ͱൃੜͨ͠ NSError, NSException ͷऩू • Social.framework ΍ IAP Λར༻͍ͯ͠Δ৔߹͸ɺ୺຤ ଆʹ͔͠৘ใ͕ͳ͍ͷͰ͋Ε͹ͱͯ΋ॿ͔Δ • Ͳͧ͜ͷ SDK ͕ Crash ͢ΔͷͰ Try-Catch ͯ͠ Crash ͠ͳ͍Α͏ʹͯ͠৘ใΛूΊΔ • Crash Report ղੳαʔϏεͰ೚ҙͷλΠϛϯάͰϨ ϙʔτΛૹ৴Ͱ͖Δػೳ͕͋Ε͹؆୯ʹूΊΕΔ • ։ൃऀ͕໌ࣔతʹઃఆ͢ΔͷͰͲ͜ͰΤϥʔ͕ى͖ ͯΔ͔͕೺Ѳ͠΍͍͢

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

εΫγϣΛࡱͬͯڞ༗ • σβΠφʔͷσβΠϯͱҧ͏ • Ϣʔβʔ͕ҙਤͨ͠ڍಈͱζϨ͕ੜͯ͡Δ • σʔλͷෆ੔߹͕ى͖ͯΔ • Τϥʔϝοηʔδ(ίʔυ)ΛΈͤΔͨΊ

Slide 37

Slide 37 text

ͦͷଞ

Slide 38

Slide 38 text

ͦͷଞ • ࣾ಺Ͱޱ಄΍νϟοτͰݴΘΕΔ

Slide 39

Slide 39 text

ͦͷଞ • ࣾ಺Ͱޱ಄΍νϟοτͰݴΘΕΔ • Ϣʔβʔ͔Βͷ໰͍߹Θͤ(Helpshiftͱ͔)

Slide 40

Slide 40 text

ͦͷଞ • ࣾ಺Ͱޱ಄΍νϟοτͰݴΘΕΔ • Ϣʔβʔ͔Βͷ໰͍߹Θͤ(Helpshiftͱ͔) • AppStore ͷϨϏϡʔ

Slide 41

Slide 41 text

ͦͷଞ • ࣾ಺Ͱޱ಄΍νϟοτͰݴΘΕΔ • Ϣʔβʔ͔Βͷ໰͍߹Θͤ(Helpshiftͱ͔) • AppStore ͷϨϏϡʔ • SNS ͰΤΰαʔν

Slide 42

Slide 42 text

ݱঢ়͜Μͳײ͔͡ͳͱ

Slide 43

Slide 43 text

ͯ͞ɺ͔͜͜Β͕ຊ୊Ͱ͢

Slide 44

Slide 44 text

͋ͳͨ͸ Twitter ࣾͰ ΞϓϦΛ࡞੒͍ͯ͠·͢

Slide 45

Slide 45 text

○○͕όάͬͯΜ͚ͩͲͬͯ ͜ΜͳεΫγϣΛૹΒΕ͖ͯ·ͨ͠

Slide 46

Slide 46 text

͜Ε͔Βਪଌ͠ͳ͍ͱ͍͚ͳ͍

Slide 47

Slide 47 text

͜Ε͔Βਪଌ͠ͳ͍ͱ͍͚ͳ͍ • ͓·͑ɺͩΕʁ (Identifier తͳҙຯͰ)

Slide 48

Slide 48 text

͜Ε͔Βਪଌ͠ͳ͍ͱ͍͚ͳ͍ • ͓·͑ɺͩΕʁ (Identifier తͳҙຯͰ) • API ଆ͕ݪҼʁ ͦΕͱ΋ΞϓϦଆʁ

Slide 49

Slide 49 text

͜Ε͔Βਪଌ͠ͳ͍ͱ͍͚ͳ͍ • ͓·͑ɺͩΕʁ (Identifier తͳҙຯͰ) • API ଆ͕ݪҼʁ ͦΕͱ΋ΞϓϦଆʁ • ͍·Έ͑ͯΔ Cell Λߏஙͯ͠ Δσʔλ͕Έ͍ͨ

Slide 50

Slide 50 text

͜Ε͔Βਪଌ͠ͳ͍ͱ͍͚ͳ͍ • ͓·͑ɺͩΕʁ (Identifier తͳҙຯͰ) • API ଆ͕ݪҼʁ ͦΕͱ΋ΞϓϦଆʁ • ͍·Έ͑ͯΔ Cell Λߏஙͯ͠ Δσʔλ͕Έ͍ͨ • ͜Ε࠶ݱͰ͖Δ͔ͳ…

Slide 51

Slide 51 text

ਪଌͯ͠৘ใΛूΊͳ͍ͱ͍͚ͳ͍

Slide 52

Slide 52 text

ͭΒ͍…

Slide 53

Slide 53 text

ͦ΋ͦ΋ϢʔβʔͷͨΊʹ ද͍ࣔͯ͠Δը໘ͳΜ͔ͩΒ σόοάʹඞཁͳ৘ใ͸΄΅ͳ͍

Slide 54

Slide 54 text

σόοάͷαΠΫϧ 1. όάͷݪҼਪଌ 2. όάͷ࠶ݱ 3. debug…debug…debug!!!

Slide 55

Slide 55 text

σόοάͷαΠΫϧ 1. όάͷݪҼਪଌ͢ΔͨΊͷ৘ใΛը૾ ͔ΒಡऔΔ 2. όάͷݪҼਪଌ 3. όάͷ࠶ݱ 4. debug…debug…debug!!!

Slide 56

Slide 56 text

εΫγϣ͔ΒۭؾΛಡΜͰ Կ౓΋σόοά͢Δ͕ ຊ౰ʹΊΜͲ͏͍͘͞ʂʂʂʂ

Slide 57

Slide 57 text

print debug ΍ break point Λ ࢖͑ΔͳΒ؆୯ʹ ৘ใΛूΊΕΔͷʹ…

Slide 58

Slide 58 text

ʂʂʂʂʂʂʂʂʂʂʂʂʂʂʂ

Slide 59

Slide 59 text

ͦΕͳΒεΫγϣΛࡱͬͨ࣌ʹ σόοάʹඞཁͳ৘ใΛ Ұॹʹը૾ͱͯ͠ग़ྗ͢Ε͹͍͍ʂ

Slide 60

Slide 60 text

! DFTDebugScreenshot http://github.com/dealforest/DFTDebugScreenshot

Slide 61

Slide 61 text

Install pod ‘DFTDebugScreenshot’

Slide 62

Slide 62 text

Usage

Slide 63

Slide 63 text

DEMO

Slide 64

Slide 64 text

Ԡ༻

Slide 65

Slide 65 text

Ԡ༻ • AutoLayout Ͱ UIView ʹઃఆ͍ͯ͠Δ Constraints Λ ग़ྗ͢Δ͜ͱ΋Ͱ͖Δ

Slide 66

Slide 66 text

Ԡ༻ • AutoLayout Ͱ UIView ʹઃఆ͍ͯ͠Δ Constraints Λ ग़ྗ͢Δ͜ͱ΋Ͱ͖Δ • UIWebView Ͱ࡞͍ͬͯΔΞϓϦͰ΋ɺjs ͷ৘ใ(ม ਺, ϒϥ΢βͷ৘ใ)Λग़ྗ͢Δ͜ͱ΋Ͱ͖Δ

Slide 67

Slide 67 text

Ԡ༻ • AutoLayout Ͱ UIView ʹઃఆ͍ͯ͠Δ Constraints Λ ग़ྗ͢Δ͜ͱ΋Ͱ͖Δ • UIWebView Ͱ࡞͍ͬͯΔΞϓϦͰ΋ɺjs ͷ৘ใ(ม ਺, ϒϥ΢βͷ৘ใ)Λग़ྗ͢Δ͜ͱ΋Ͱ͖Δ • completionBlock Λ࢓ࠐΜͰ͓͘ͱεΫγϣΛࡱΔͱ εΫγϣͱσόοΫ৘ใΛ Slack ΍ S3 ΍ϝʔϧ౳Ͱ ࣗಈతʹૹ৴͜ͱ΋Ͱ͖Δ

Slide 68

Slide 68 text

Ԡ༻ • AutoLayout Ͱ UIView ʹઃఆ͍ͯ͠Δ Constraints Λ ग़ྗ͢Δ͜ͱ΋Ͱ͖Δ • UIWebView Ͱ࡞͍ͬͯΔΞϓϦͰ΋ɺjs ͷ৘ใ(ม ਺, ϒϥ΢βͷ৘ใ)Λग़ྗ͢Δ͜ͱ΋Ͱ͖Δ • completionBlock Λ࢓ࠐΜͰ͓͘ͱεΫγϣΛࡱΔͱ εΫγϣͱσόοΫ৘ใΛ Slack ΍ S3 ΍ϝʔϧ౳Ͱ ࣗಈతʹૹ৴͜ͱ΋Ͱ͖Δ • ಛఆͷϢʔβʔ͚ͩσόοά৘ใΛग़ྗ͢Δ͜ͱ΋ Մೳ

Slide 69

Slide 69 text

TODO

Slide 70

Slide 70 text

TODO • ݱࡏදࣔ͞Ε͍ͯΔ UIViewController ͷ debugObject Λ͍ͭͰ΋औಘͰ͖ΔΑ͏ͳ interface Λ௥Ճ͢Δͭ΋Γ

Slide 71

Slide 71 text

TODO • ݱࡏදࣔ͞Ε͍ͯΔ UIViewController ͷ debugObject Λ͍ͭͰ΋औಘͰ͖ΔΑ͏ͳ interface Λ௥Ճ͢Δͭ΋Γ • dealforest/DFTAwesomePrint Λ࡞͍ͬͯͯ debugObject Λ colorize ͯ͠ը૾ʹ͢Δͭ΋Γ

Slide 72

Slide 72 text

TODO • ݱࡏදࣔ͞Ε͍ͯΔ UIViewController ͷ debugObject Λ͍ͭͰ΋औಘͰ͖ΔΑ͏ͳ interface Λ௥Ճ͢Δͭ΋Γ • dealforest/DFTAwesomePrint Λ࡞͍ͬͯͯ debugObject Λ colorize ͯ͠ը૾ʹ͢Δͭ΋Γ • AccessToken ΍ cookie Λग़ྗͨ࣌͠ͷͨΊʹ҉߸Խ ͍ͨ͠(QRίʔυͱ͔ʁ)

Slide 73

Slide 73 text

TODO • ݱࡏදࣔ͞Ε͍ͯΔ UIViewController ͷ debugObject Λ͍ͭͰ΋औಘͰ͖ΔΑ͏ͳ interface Λ௥Ճ͢Δͭ΋Γ • dealforest/DFTAwesomePrint Λ࡞͍ͬͯͯ debugObject Λ colorize ͯ͠ը૾ʹ͢Δͭ΋Γ • AccessToken ΍ cookie Λग़ྗͨ࣌͠ͷͨΊʹ҉߸Խ ͍ͨ͠(QRίʔυͱ͔ʁ) • σόοΫ༻ը૾ͷσβΠϯ୭͔͍͍ײ͡ʹͯ͠w

Slide 74

Slide 74 text

·ͱΊ εΫγϣ͔Βσόοάʹ ඞཁͳ৘ใΛਪଌͤͣʹ ͙͢ʹݪҼಛఆʹͱΓ͔͔ΕΔ

Slide 75

Slide 75 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠