Slide 1

Slide 1 text

#POpSFJ04ʛ!TIUOLHN ύϑΥʔϚϯεվળͱϢχοτςετ

Slide 2

Slide 2 text

4IPUB/BLBHBNJ ϠϑʔגࣜձࣾʛΤϯδχΞ !TIUOLHN

Slide 3

Slide 3 text

:BIPPγϣοϐϯά

Slide 4

Slide 4 text

wJ04ΞϓϦϦϦʔε wίʔυن໛ wϢχοτςετ w୲౰J04ΤϯδχΞ ɿʙ ɿສߦʢ0CKFDUJWF$ɿʣ ɿ݅ʢΧόϨοδɿʣ ɿ໊ʢЋʣ

Slide 5

Slide 5 text

ݱࡏͷ໾ׂ w ύϑΥʔϚϯεվળ w ٕज़తෛ࠴ͷղফ w ։ൃޮ཰ͷվળ
 ʢGBTUMBOFɺ4XJGU-JOUɺ%BOHFSɺ4XJGU(FOɺ4DSFXESJWFSDEɺ1FSJQIFSZʣ ػೳ։ൃ νʔϜ ٕज़վળ νʔϜ

Slide 6

Slide 6 text

ࠓ೔࿩͍ͨ͜͠ͱ

Slide 7

Slide 7 text

:BIPPγϣοϐϯάΞϓϦͷ ύϑΥʔϚϯεվળͱ Ϣχοτςετ׆༻ͷ࿩

Slide 8

Slide 8 text

˞ܭଌ஋͸ࣗࣾௐ΂ 501ը໘ ΞϓϦىಈʙදࣔ·Ͱͷ଎౓վળ #FGPSFɿฏۉඵ

Slide 9

Slide 9 text

ΞϓϦىಈʙදࣔ·Ͱͷ଎౓վળ #FGPSFɿฏۉඵ ˞ܭଌ஋͸ࣗࣾௐ΂ ࡟ݮ 501ը໘ "GUFSɿฏۉඵ

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

ϘτϧωοΫՕॴͷௐࠪ

Slide 12

Slide 12 text

"1*௨৴Ͱ
 ಈతʹมΘΔλϒϝχϡʔ

Slide 13

Slide 13 text

ىಈ͔Β501දࣔ·ͰͷྲྀΕ

Slide 14

Slide 14 text

ىಈ "1*௨৴ "1*௨৴ λϒදࣔ 501දࣔ

Slide 15

Slide 15 text

ىಈ "1*௨৴ "1*௨৴ λϒදࣔ 501දࣔ

Slide 16

Slide 16 text

ىಈ "1*௨৴ "1*௨৴ λϒදࣔ 501දࣔ λϒ௥Ճ

Slide 17

Slide 17 text

ํ਑͸0,ɺͰ΋

Slide 18

Slide 18 text

ϓϩάϥϜͷෳࡶ౓͕૿͢ ฒྻԽඇಉظԽʹΑΓ

Slide 19

Slide 19 text

վमର৅ͷΫϥε͕طʹෳࡶ

Slide 20

Slide 20 text

վमର৅ͷΫϥεΛͳ͕ΊΔ w ॳظ࣮૷͔Β਺೥ܦ͍ͬͯΔ w मਖ਼ͷܧ͗଍͠ʹΑΔ'BU7$ʢߦPWFSʣ w 7JFX΍ϏδωεϩδοΫ͕ࠞࡏ͠ɺ੹຿աଟ w Ϣχοτςετ΄΅ͳ͠

Slide 21

Slide 21 text

Ͳ͏͢Δʁ

Slide 22

Slide 22 text

طଘΫϥε 'BU7$

Slide 23

Slide 23 text

طଘΫϥε ௥Ճ ❌͞ΒʹංେԽ ௥Ճ

Slide 24

Slide 24 text

طଘΫϥε Ϋϥε Ϋϥε Ϋϥε খ͘͞੾Γग़͠

Slide 25

Slide 25 text

طଘΫϥε Ϋϥε Ϋϥε Ϋϥε ฒྻԽॲཧ ඇಉظԽॲཧ

Slide 26

Slide 26 text

Ϋϥε Ϋϥε Ϋϥε طଘΫϥε ✅ ✅ ✅ Ϣχοτςετ

Slide 27

Slide 27 text

Ϋϥε Ϋϥε Ϋϥε طଘΫϥε ✅ ✅ ✅ ґଘΫϥεΛ֎෦͔Βઃఆ ʢ%FQFOEFODZ*OKFDUJPOʣ *OKFDU *OKFDU

Slide 28

Slide 28 text

.PDL Ϋϥε .PDL Ϋϥε Ϋϥε طଘΫϥε ✅ ✅ ✅ ✅ ্ҐϨΠϠʔ Ϣχοτςετ

Slide 29

Slide 29 text

΋͏গ͠۩ମతʹ w λϒϝχϡʔͷදࣔϩδοΫΛ੾Γग़͠ɺ
 4UBDL7JFXԽ w ঢ়ଶ؅ཧͱ௨৴ϩδοΫΛ੾Γग़͠ w λϒͷछྨΛFOVNͰ࠶੔ཧʜͳͲ

Slide 30

Slide 30 text

7JFXϨΠϠʔͷϢχοτςετ

Slide 31

Slide 31 text

ॻ͖ʹ͍͕͘ɺ ෆ͕҆͋Ε͹ॻ͘

Slide 32

Slide 32 text

7JFXͷςετ͕ॻ͖ʹ͍͘ཧ༝ w νΣοΫର৅͕7JFXͷදࣔͱͳΔͨΊɺग़ྗΛऔಘͮ͠Β͍
 ʢ҉໧తͳग़ྗͷνΣοΫʣ
 w 6*,JUͷϥΠϑαΠΫϧʹԊͬͯදࣔ׬ྃΛ଴ͭ
 ʢඇಉظςετʣ

Slide 33

Slide 33 text

// Tips: ΞΫηεम০ࢠΛมߋ͢Δ // before @IBOutlet private weak var titleLabel: UILabel! // after @IBOutlet private(set) weak var titleLabel: UILabel!

Slide 34

Slide 34 text

// Tips: subviews͔ΒಛఆΫϥεViewͷΈΛऔಘ͢Δ let labels = view.findViews(subclassOf: UILabel.self) let tabViews = view.findViews(subclassOf: TabView.self) extension UIView { var recursiveSubviews: [UIView] { return subviews + subviews.flatMap { $0.recursiveSubviews } } func findViews(subclassOf: T.Type) -> [T] { return recursiveSubviews.compactMap { $0 as? T } } }

Slide 35

Slide 35 text

// Tips: දࣔ׬ྃͷ଴ػ func waitUntil(condition: () -> Bool) { while !condition() { RunLoop.main.run(until: Date(timeIntervalSinceNow: 0.001)) } }

Slide 36

Slide 36 text

7JFXͷϢχοτςετΛ ॻ͍ͯΑ͔ͬͨ͜ͱ

Slide 37

Slide 37 text

Ϣχοτςετ͕௨Βͳ͍ λϒͷ਺͕ظ଴௨ΓʹͳΒͳ͍ ❌

Slide 38

Slide 38 text

खಈςετͰ͸Ұݟਖ਼͍͠

Slide 39

Slide 39 text

%FCVH7JFX)JFSBSDIZ

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

No content

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

ݪҼ 6*4UBDL7JFXͷαϒϏϡʔͷ࡟আͷ࢓ํ

Slide 45

Slide 45 text

6*4UBDL7JFXͰλϒΛ؅ཧ λϒͷ௥ՃɿBEE"SSBOHFE4VCWJFX @ λϒͷ࡟আɿSFNPWF"SSBOHFE4VCWJFX @

Slide 46

Slide 46 text

// arrangedSubviewsΛ࡟আ stackView.arrangedSubviews .forEach { stackView.removeArrangedSubview($0) } // subviewsΛ࡟আ stackView.subviews .forEach { $0.removeFromSuperview() }

Slide 47

Slide 47 text

7JFXͷϢχοτςετͰ खಈςετͰ͸ؾ͖ͮʹ͍͘ ໰୊ʹؾ͚ͮͨ

Slide 48

Slide 48 text

ৼΓฦΓ

Slide 49

Slide 49 text

w ϢχοτςετΛॻ͖ͳ͕ΒϦϑΝΫλͯ͠
 ࠓޙ΋ϝϯς͠΍͍͢ίʔυʹ w खಈςετͰͷख໭Γ͕࠷খݶ
 ʢόάΛઌग़͠Ͱݕग़ʣ (

Slide 50

Slide 50 text

w ϩάૹ৴͍ͯ͠Δσʔλͷத਎͕Ұ෦ܽଛ w ϢχοτςετɺखಈςετͰ΋ݕ஌Ͱ͖ͣ )

Slide 51

Slide 51 text

ߴ଎Խ͗ͯ͢͠લఏ৚่͕݅ΕΔ w ߴ଎Խલ͸λΠϛϯά͕஗͔ͬͨͷͰɺਖ਼͘͠ಈ࡞ w ϩάૹ৴ͷλΠϛϯά͕ૣ͘ͳΓɺ
 ඞཁͳσʔλ͕औΕͯͳ͍ͷʹϩάૹ৴ ૹ৴σʔλͷऔಘ ϩάૹ৴˓ ϩάૹ৴º ߴ଎Խ

Slide 52

Slide 52 text

Ϟδϡʔϧؒͷ҉໧తͳґଘؔ܎͸
 ϢχοτςετͰ͸ؾ͖ͮʹ͍͘

Slide 53

Slide 53 text

func sendLog() { assert(analyticsData.foo != nil, "foo͕औಘͰ͖͍ͯΔ͜ͱ") logger.sendLog() }

Slide 54

Slide 54 text

·ͱΊ

Slide 55

Slide 55 text

·ͱΊ w ύϑΥʔϚϯεվળͱϦϑΝΫλϦϯά͸
 Ͱ͖Ε͹ηοτͰ w खಈςετͰ͸ؾ͚ͮͳ͍ෆ۩߹ʹ
 7JFXͷςετͰؾ͚ͮͨ w Ϣχοτςετ͚ͩͰͳ͘"TTFSUJPO΋׆༻

Slide 56

Slide 56 text

͋Γ͕ͱ͏͍͟͝·ͨ͠ #POpSFJ04ʛ!TIUOLHN