Slide 1

Slide 1 text

ϨΠΞ΢τΛ
 ΋ͬͱ4XJGUZʹ
 ʢ૯ूฤʣ for",*#"TXJGUʷΤ΢ϨΧίʔυϨΠΞ΢τษڧձ

Slide 2

Slide 2 text

var employedBy = "YUMEMI Inc." var job = "iOS Developer" var favoriteLanguage = "Swift" var twitter = "@lovee" var qiita = "lovee" var github = "el-hoshino" var additionalInfo = """ Ϛπμϩʔυελʔ͸͍͍ͧʂ """ class Me: Developable, Talkable { }

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

ࢀߟɿ௚઀ίʔυͰϨΠΞ΢τΛ૊Ήํ๏ ▸ ϨΠΞ΢ταΠΫϧͷ೺Ѳ ▸ ϨΠΞ΢τʹؔ܎͢ΔϓϩύςΟʔͷಈ͖Λཧղ ▸ దٓʹϥΠϒϥϦʔΛಋೖ ˞IUUQTTQFBLFSEFDLDPNMPWFFOPTUPSZOPCPBSE

Slide 5

Slide 5 text

ϨΠΞ΢τΛ
 ΋ͬͱ4XJGUZʹ
 ʢ૯ूฤʣ for",*#"TXJGUʷΤ΢ϨΧίʔυϨΠΞ΢τษڧձ

Slide 6

Slide 6 text

૯ूฤʁ!

Slide 7

Slide 7 text

IUUQTCPPUIQNKBJUFNT

Slide 8

Slide 8 text

4XJGUZͱ͸ ▸ Ϟμϯʁ ▸ Φϓγϣφϧʁ ▸ ಡΈ΍͢͞ʁ

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

ྑ͍ઃܭ͸ޡͬͨ༻๏Λ ίϯύΠϧΤϥʔʹ͢Δ CZੴ઒༸ࢿ גࣜձࣾϝϧΧϦ

Slide 12

Slide 12 text

4XJGUZͱ͸ޡͬͨ༻๏͕ ίϯύΠϧΤϥʔʹͳΔ CZMPWFF

Slide 13

Slide 13 text

ϨΠΞ΢τͷώϡʔϚϯΤϥʔΛ
 ίϯύΠϧΤϥʔʹ͢Δ

Slide 14

Slide 14 text

"VUP-BZPVUͷσϝϦοτ͸ ▸ ύϑΥʔϚϯε͕ѱ͍ ▸ σόοά͠ʹ͍͘ ▸ ಈతʹมΘΔϨΠΞ΢τʹରԠ͠ʹ͍͘ ▸ ϨΠΞ΢τʹΤϥʔ͕͋ͬͯ΋͸ϥϯλΠϜͰॳΊͯ஌Δ

Slide 15

Slide 15 text

ϨΠΞ΢τͷώϡʔϚϯΤϥʔΛ
 ίϯύΠϧΤϥʔʹͰ͖ͳ͍ "VUP-BZPVU͸ 4XJGUZ͡Όͳ͍

Slide 16

Slide 16 text

ϨΠΞ΢τͷώϡʔϚϯΤϥʔΛ
 ίϯύΠϧΤϥʔʹ͢Δʹ͸ CGRectΛ࡞Ε͹͍͍

Slide 17

Slide 17 text

CGRectΛ࡞Δʹ͸ ▸ CGRectͷΠχγϟϥΠβʔΛ௨͢ඞཁ͕͋Δ ▸ CGRect(x: 0, y: 0, width: 100)ΛݺΜ͡Ό͑͹ ίϯύΠϧΤϥʔʹͳΔ ▸ height΋ඞཁͳͷʹઃఆ͞Ε͍ͯͳ͍

Slide 18

Slide 18 text

CGRect ࡞Δͷ໘౗͡ΌΜʂ ▸ x, y, width, height Ͱ͔͠ઃఆͰ͖ͳ͍ ▸ "VUP -BZPVU ͳΒࠨӈͷ৔ॴͱ͔΋࢖͑Δ ▸ "VUP -BZPVU ͳΒଞͷϏϡʔͱͷҐஔؔ܎ͱ͔΋࢖͑Δ

Slide 19

Slide 19 text

/PU"VUP-BZPVUͩͬͯ
 ࢖͑Δ"

Slide 20

Slide 20 text

IUUQTHJUIVCDPNFMIPTIJOP/PU"VUP-BZPVU

Slide 21

Slide 21 text

/PU"VUP-BZPVUΛ࢖ͬͨϨΠΞ΢τίʔυ public override func layoutSubviews() { super.layoutSubviews() // ...ུ... self.nal.layout(self.subTitleLabel) { $0 .pinTopLeft(to: self.mainTitleLabel, with: { $0.bottomLeft }) .pinRight(to: self.mainTitleLabel, with: { $0.right }) .setBottom(by: { $0.safeAreaGuide.bottom }) } } ٿطصعٛوطقپ⑦؃و٩٦ٸڋخٿطصعٛ
 猺؆د؊⯪⟓؞䐂נنڋٜٿطصعٛ猻

Slide 22

Slide 22 text

/PU"VUP-BZPVUΛ࢖ͬͨϨΠΞ΢τίʔυ public override func layoutSubviews() { super.layoutSubviews() // ...ུ... self.nal.layout(self.subTitleLabel) { $0 .pinTopLeft(to: self.mainTitleLabel, with: { $0.bottomLeft }) .pinRight(to: self.mainTitleLabel, with: { $0.right }) .setBottom(by: { $0.safeAreaGuide.bottom }) } } PCN؃٠ڋٳٌ٭ڋٌخⓨا

Slide 23

Slide 23 text

/PU"VUP-BZPVUΛ࢖ͬͨϨΠΞ΢τίʔυ public override func layoutSubviews() { super.layoutSubviews() // ...ུ... self.nal.layout(self.subTitleLabel) { $0 .pinTopLeft(to: self.mainTitleLabel, with: { $0.bottomLeft }) .pinRight(to: self.mainTitleLabel, with: { $0.right }) .setBottom(by: { $0.safeAreaGuide.bottom }) } } NC[QWV؃و٩٦ٸڋخ ٿطصعٛ

Slide 24

Slide 24 text

/PU"VUP-BZPVUΛ࢖ͬͨϨΠΞ΢τίʔυ public override func layoutSubviews() { super.layoutSubviews() // ...ུ... self.nal.layout(self.subTitleLabel) { $0 .pinTopLeft(to: self.mainTitleLabel, with: { $0.bottomLeft }) .pinRight(to: self.mainTitleLabel, with: { $0.right }) .setBottom(by: { $0.safeAreaGuide.bottom }) } } ٿطصعٛ⻟彂 ؊و٩٦ٸڋ

Slide 25

Slide 25 text

/PU"VUP-BZPVUΛ࢖ͬͨϨΠΞ΢τίʔυ public override func layoutSubviews() { super.layoutSubviews() // ...ུ... self.nal.layout(self.subTitleLabel) { $0 .pinTopLeft(to: self.mainTitleLabel, with: { $0.bottomLeft }) .pinRight(to: self.mainTitleLabel, with: { $0.right }) .setBottom(by: { $0.safeAreaGuide.bottom }) } } デ⃫猺6QR.GHV猻ֻ⛔䷐猺4KIJV猻؄⃬䷐猺$QVVQO猻 ؊⬕㔡خٴِٖٜٔغڋچ؃崎⹻

Slide 26

Slide 26 text

/PU"VUP-BZPVUΛ࢖ͬͨϨΠΞ΢τίʔυ public override func layoutSubviews() { super.layoutSubviews() // ...ུ... self.nal.layout(self.subTitleLabel) { $0 .pinTopLeft(to: self.mainTitleLabel, with: { $0.bottomLeft }) .pinRight(to: self.mainTitleLabel, with: { $0.right }) .setBottom(by: { $0.safeAreaGuide.bottom }) } } デ⃫خOCKP6KVNG.CDGN؊デ⃬؇٧چ

Slide 27

Slide 27 text

/PU"VUP-BZPVUΛ࢖ͬͨϨΠΞ΢τίʔυ public override func layoutSubviews() { super.layoutSubviews() // ...ུ... self.nal.layout(self.subTitleLabel) { $0 .pinTopLeft(to: self.mainTitleLabel, with: { $0.bottomLeft }) .pinRight(to: self.mainTitleLabel, with: { $0.right }) .setBottom(by: { $0.safeAreaGuide.bottom }) } } ⛔䷐خOCKP6KVNG.CDGN؊⛔䷐؇٧چ

Slide 28

Slide 28 text

/PU"VUP-BZPVUΛ࢖ͬͨϨΠΞ΢τίʔυ public override func layoutSubviews() { super.layoutSubviews() // ...ུ... self.nal.layout(self.subTitleLabel) { $0 .pinTopLeft(to: self.mainTitleLabel, with: { $0.bottomLeft }) .pinRight(to: self.mainTitleLabel, with: { $0.right }) .setBottom(by: { $0.safeAreaGuide.bottom }) } } ⃬䷐خ岋؊َڋ٨ػٽص؊⃬䷐؇崎⹻

Slide 29

Slide 29 text

/PU"VUP-BZPVUΛ࢖ͬͨϨΠΞ΢τίʔυ public override func layoutSubviews() { super.layoutSubviews() // ...ུ... self.nal.layout(self.subTitleLabel) { $0 .pinTopLeft(to: self.mainTitleLabel, with: { $0.bottomLeft }) .pinRight(to: self.mainTitleLabel, with: { $0.right }) .setBottom(by: { $0.safeAreaGuide.bottom }) } } ٿطصعٛخ∽اٴڋؾڋ

Slide 30

Slide 30 text

/PU"VUP-BZPVU͸ͱͯ΋ศར ▸ ࠨӈͷ৔ॴͱ͔΋ϨΠΞ΢τܾΊʹ࢖͑Δ ▸ ଞͷϏϡʔΛࢀর͢Δ͜ͱ΋Ͱ͖Δ ▸ ಡΈ΍͍͢ߏจͰϨΠΞ΢τ͕؆୯ʹΠϝʔδͰ͖Δ ▸ ϝιουνΣʔϯͰඞཁͳ΋ͷ͸ίʔυิ׬Ͱ͙͢ॻ͚Δ ▸ ઃఆ͕଍Γͳ͚Ε͹ίϯύΠϧΤϥʔͰڭ͑ͯ͘ΕΔʂ

Slide 31

Slide 31 text

/PU"VUP-BZPVUΛ࢖ͬͨϨΠΞ΢τίʔυ public override func layoutSubviews() { super.layoutSubviews() // ...ུ... self.nal.layout(self.subTitleLabel) { $0 .pinTopLeft(to: self.mainTitleLabel, with: { $0.bottomLeft }) .pinRight(to: self.mainTitleLabel, with: { $0.right }) .setBottom(by: { $0.safeAreaGuide.bottom }) } }

Slide 32

Slide 32 text

/PU"VUP-BZPVUΛ࢖ͬͨϨΠΞ΢τίʔυ public override func layoutSubviews() { super.layoutSubviews() // ...ུ... self.nal.layout(self.subTitleLabel) { $0 .pinTopLeft(to: self.mainTitleLabel, with: { $0.bottomLeft }) .pinRight(to: self.mainTitleLabel, with: { $0.right }) } } Cannot convert value of type 'LayoutMaker' (aka 'LayoutMaker') to closure result type 'LayoutMaker'

Slide 33

Slide 33 text

/PU"VUP-BZPVUΛ࢖ͬͨϨΠΞ΢τίʔυ public override func layoutSubviews() { super.layoutSubviews() // ...ུ... self.nal.layout(self.subTitleLabel) { $0 .pinTopLeft(to: self.mainTitleLabel, with: { $0.bottomLeft }) .pinRight(to: self.mainTitleLabel, with: { $0.right }) .fitWidth() } } Type 'IndividualProperty.TopLeft.WillSetRightProperty' (aka 'IndividualProperty.TopLeftRight') does not conform to protocol 'LayoutPropertyCanStoreWidthType'

Slide 34

Slide 34 text

Ͳ͏΍ͬͯ͜ͷ࢓૊ΈΛ ࡞͔ͬͨ!

Slide 35

Slide 35 text

O x y ࢛͍֯ྖҬΛ࡞Δʹ͸ ▸ ԣʹॏෳ͠ͳ͍ཁૉ ▸ ॎʹॏෳ͠ͳ͍ཁૉ ▸ ˞୺Ͱ͋Δඞཁ͸ͳ͍ ▸ ྫ͑͹தԝͩͬͨΓɺ௕͞ ͩͬͨΓ΋0, ▸ ྫ͑͹CGRect(x, y, width, height)͸ԣʹ xͱwidthͷཁૉɺॎ ʹyͱheightͷཁૉ

Slide 36

Slide 36 text

/PU"VUP-BZPVUΛ࢖ͬͨϨΠΞ΢τίʔυ public override func layoutSubviews() { super.layoutSubviews() // ...ུ... self.nal.layout(self.subTitleLabel) { $0 .pinTopLeft(to: self.mainTitleLabel, with: { $0.bottomLeft }) .pinRight(to: self.mainTitleLabel, with: { $0.right }) .setBottom(by: { $0.safeAreaGuide.bottom }) } } طٞيٶپٴڋؾڋ
 猺ؚ׼∶؞崎⹻ױب؂נ؆נ猻

Slide 37

Slide 37 text

/PU"VUP-BZPVUΛ࢖ͬͨϨΠΞ΢τίʔυ public override func layoutSubviews() { super.layoutSubviews() // ...ུ... self.nal.layout(self.subTitleLabel) { $0 .pinTopLeft(to: self.mainTitleLabel, with: { $0.bottomLeft }) .pinRight(to: self.mainTitleLabel, with: { $0.right }) .setBottom(by: { $0.safeAreaGuide.bottom }) } } デ⃫崎⹻䃩؛ٴڋؾڋ
 猺㴋屢倁؇デ䷐ֻ儇屢倁؇⃫䷐ר崎⹻ױب׻猻

Slide 38

Slide 38 text

/PU"VUP-BZPVUΛ࢖ͬͨϨΠΞ΢τίʔυ public override func layoutSubviews() { super.layoutSubviews() // ...ུ... self.nal.layout(self.subTitleLabel) { $0 .pinTopLeft(to: self.mainTitleLabel, with: { $0.bottomLeft }) .pinRight(to: self.mainTitleLabel, with: { $0.right }) .setBottom(by: { $0.safeAreaGuide.bottom }) } } デ⃫؄⛔崎⹻䃩؛ٴڋؾڋ
 猺㴋屢倁؇デ䷐؄⛔䷐ֻ儇屢倁؇⃫䷐ר崎⹻ױب׻猻

Slide 39

Slide 39 text

/PU"VUP-BZPVUΛ࢖ͬͨϨΠΞ΢τίʔυ public override func layoutSubviews() { super.layoutSubviews() // ...ུ... self.nal.layout(self.subTitleLabel) { $0 .pinTopLeft(to: self.mainTitleLabel, with: { $0.bottomLeft }) .pinRight(to: self.mainTitleLabel, with: { $0.right }) .setBottom(by: { $0.safeAreaGuide.bottom }) } } ٨ٿڋٳ崎⹻䃩؛ٴڋؾڋ
 猺⑉؂؊㊦屢؆屢倁ר崎⹻ױب׻猻

Slide 40

Slide 40 text

/PU"VUP-BZPVUΛ࢖ͬͨϨΠΞ΢τίʔυ public override func layoutSubviews() { super.layoutSubviews() // ...ུ... self.nal.layout(self.subTitleLabel) { $0 .pinTopLeft(to: self.mainTitleLabel, with: { $0.bottomLeft }) .pinRight(to: self.mainTitleLabel, with: { $0.right }) .setBottom(by: { $0.safeAreaGuide.bottom }) } } .C[QWV/CMGT+PKVKCN .C[QWV/CMGT(TCOG 
 恘䎚؄倣䎚ר㽛ؚ׿؂מاقڀڋًٶڋ

Slide 41

Slide 41 text

No content

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

ϝιουνΣʔϯͱΫϩʔδϟΛ ૊Έ߹ΘͤΔ͜ͱʹΑͬͯ ߋͳΔརศੑͱ҆શੑ

Slide 44

Slide 44 text

/PU"VUP-BZPVU
 $PNQBUJCMFXJUI4XJGU
 "WBJMBCMFGSPN5PEBZ Should be IUUQTHJUIVCDPNFMIPTIJOP/PU"VUP-BZPVU

Slide 45

Slide 45 text

IUUQTCPPUIQNKBJUFNT ϨΠΞ΢τΛɺ΋ͬͱ4XJGUZʹ ࣥච࣌͸όʔδϣϯ͕ͩɺ /PU"VUP-BZPVUʹ࢖ΘΕͯΔ ςΫχοΫ౳΋ܝࡌ