Slide 1

Slide 1 text

͍͍͔Β!Λ࢖͑ʂ f o r : 6 . & . * T X J G U

Slide 2

Slide 2 text

} var employedBy = "YUMEMI Inc." var job = "iOS Tech Lead" var favoriteLanguage = "Swift" var twitter = "@lovee" var qiita = "lovee" var github = "el-hoshino" var additionalInfo = """ อޢͨ͠ೣ͕ͷൃ৘ظʹಥೖͯ݁͠ߏେม """ final class Me: Developable, Talkable {

Slide 3

Slide 3 text

4XJGUͰ!࢖ͬͯ·͢ʁ

Slide 4

Slide 4 text

΋ͪΖΜBool൓సҎ֎Ͱ

Slide 5

Slide 5 text

4XJGUʹ͓͚Δ!ͷओͳ࢖͍ಓ˞ w Optionalͷڧ੍6OXSBQʢ*60ؚΉʣ w ܕม׵ͷڧ੍μ΢ϯΩϟετas! w ྫ֎ॲཧͷڧ੍ྫ֎ແࢹtry! ˞#PPM൓సҎ֎

Slide 6

Slide 6 text

ڞ௨఺ɿϓϩάϥϜ͕ 
 Ϋϥογϡ͢ΔϦεΫ͕͋Δ

Slide 7

Slide 7 text

!Λ࢖Θͳ͍ํ͕҆શ 本当にそうか?

Slide 8

Slide 8 text

͜ͷίʔυͬͯɺ҆શʁ func doSomething() { let image = UIImage(named: "ImageName") ?? UIImage() // do something with image }

Slide 9

Slide 9 text

͜ͷίʔυͬͯɺ҆શʁ func doSomething() { guard let appDelegate = UIApplication .shared.delegate as? AppDelegate else { return } // do something with appDelegate }

Slide 10

Slide 10 text

͜ͷίʔυͬͯɺ҆શʁ func doSomething(with data: Data) { do { let decoder = JSONDecoder() let response = try decoder.decode(Response.self, from: data) // do something with response } catch { debugPrint(error) return } }

Slide 11

Slide 11 text

ΞϓϦ͕Ϋϥογϡ͠ͳ͍͔Βɺ 
 ҆શɻ

Slide 12

Slide 12 text

ΞϓϦ͕Ϋϥογϡ͠ͳ͍͔Βɺ 
 ҆શʜͳͷ͔ʁ

Slide 13

Slide 13 text

ͦ΋ͦ΋ɺ҆શͬͯɺͳʹʁ

Slide 14

Slide 14 text

ੲɺ0CK$͔Β4XJGUʹҠߦͨ࣌͠ͷ࿩˞ w αʔό͔Βը૾σʔλͱදࣔαΠζΛऔಘ͢Δॲཧ͕͋ͬͨ w αΠζσʔλ͸෯ߴͦ͞ΕͧΕ0CK$ͷίʔυͰintValueͰऔಘͯͨ͠ w 4XJGUԽ͢Δͱ͖͸Կ΋ߟ͑ͣʹas? Int ?? 0Ͱॲཧͯͨ͠ w ϦϦʔεޙɺҰ෦ͷը૾ͷΈΞεϖΫτൺ͕มΘͬͯ͠·ͬͨࣄ͕݅ൃੜ w ௐࠪͨ͠Βɺαʔό͔Βؼ͖ͬͯͨσʔλ͕ͳ͔ͥจࣈྻσʔλͩͬͨͨ Ίɺ0CK$͸ࣗಈม׵ͯ͘͠Ε͕ͨ4XJGU͸ܕʹݫ͍ͨ͠Ίࣗಈม׵ͯ͘͠ Εͣɺ?? 0ʹΑͬͯ0͕୅ೖ͞Εͨ w ෯0ߴ͞0ͷ৔߹͸σϑΥϧταΠζͰදࣔ͢Δॲཧ͕͋ͬͨͨΊɺςε τσʔλͰಈ࡞֬ೝ͢Δͱ͖͸શ͘ؾ͔ͮͳ͔ͬͨ ˞࣮࿩Ͱ͢

Slide 15

Slide 15 text

Ϋϥογϡ͸͠ͳ͔͕ͬͨɺ 
 !Λආ͚Δ͋·Γɺ 
 ٯʹόάͷൃݟΛ஗Βͤͨ

Slide 16

Slide 16 text

ʮ҆શʯͳιʔείʔυ͸ɺ όάΛຊ൪ϦϦʔεલʹ 
 ؾ͔ͮͤΔ΂͖ɻ

Slide 17

Slide 17 text

͜ͷίʔυͬͯɺ҆શʁ func doSomething() { let image = UIImage(named: "ImageName") ?? UIImage() // do something with image }

Slide 18

Slide 18 text

͜ͷίʔυͷํ͕ɺ҆શ func doSomething() { let image = UIImage(named: "ImageName")! // do something with image } όϯυϧʹೖͬͯͳ͍ͱ͍͚ͳ͍͸ͣͷ 
 ը૾Ϧιʔε͔ͩΒɺ ສ͕Ұೖͬͯͳ͔ͬͨΒͦΕ͸όάͳͷͰ ಈ࡞֬ೝͰΫϥογϡͯ͘͠Εͨํ͕ 
 ؾ෇͖΍͍͢

Slide 19

Slide 19 text

͜ͷίʔυͬͯɺ҆શʁ func doSomething() { guard let appDelegate = UIApplication .shared.delegate as? AppDelegate else { return } // do something with appDelegate }

Slide 20

Slide 20 text

͜ͷίʔυͷํ͕ɺ҆શ func doSomething() { let appDelegate = UIApplication.shared.delegate as! AppDelegate // do something with appDelegate } ϓϩδΣΫτͷ࡞Γ͕ 
 ͜ͷΑ͏ʹͳͬͯΔ͸ͣͳͷͰɺ ສ͕Ұ͜ΕͰμ΢ϯΩϟετͰ͖ͳ͔ͬͨΒ ઈରϓϩάϥϜ͕Կ͔ؒҧͬͯΔ͸͔ͣͩΒɺ ಈ࡞֬ೝͰΫϥογϡͯ͘͠Εͨํ͕ ؾ෇͖΍͍͢

Slide 21

Slide 21 text

!Λ࢖͏΂͖ॴͰ࢖ͬͨํ͕ɺ όάͷૣظൃݟʹͭͳ͕Γɺ Ή͠Ζ҆қͳѲΓ௵͠ΑΓ҆શɻ

Slide 22

Slide 22 text

౰વɺཚ༻ͯ͠͸͍͚ͳ͍ɻ

Slide 23

Slide 23 text

͜ͷίʔυͬͯɺ҆શʁ func doSomething(with data: Data) { do { let decoder = JSONDecoder() let response = try decoder.decode(Response.self, from: data) // do something with response } catch { debugPrint(error) return } }

Slide 24

Slide 24 text

͜ͷίʔυͷํ͕ɺ҆શ func doSomething(with data: Data) { do { let decoder = JSONDecoder() let response = try decoder.decode(Response.self, from: data) // do something with response } catch { assertionFailure("\(error)") return } } ԾʹαʔόͷσʔλͱҰக͠ͳ͔ͬͨΒ BTTFSUJPO'BJMVSFʹΑͬͯ σόοάϏϧυ͚ͩΫϥογϡͯ͠ 
 όάΛૣظൃݟ͠ɺ ຊ൪ͷϦϦʔεϏϧυʹ͸Өڹͳ͠ɻ ʢ΋ͪΖΜ͜͜ͰߋʹΤϥʔΞϥʔτΛ 
 Ϣʔβʹදࣔͤͨ͞Βͳ͓ྑ͠ʣ

Slide 25

Slide 25 text

͜ͷίʔυ͸ɺ͕͢͞ʹ҆શͰ͸ͳ͍ func doSomething(with data: Data) { let decoder = JSONDecoder() let response = try! decoder.decode(Response.self, from: data) // do something with response } ສ͕Ұαʔόଆ͕όάΛى͜Γ 
 ຊདྷͷ࢓༷ͱ͸ҧ͏ܕͷϨεϙϯε͕ 
 ؼ͖ͬͯͨΒ 
 ΞϓϦ͕ଈΫϥογϡ͢ΔͷͰ 
 ྲྀੴʹྑ͘ͳ͍

Slide 26

Slide 26 text

5*14ᶃ w ͦΕͰ΋΍͸ΓͲ͏ͯ͠΋ຊ൪ϦϦʔεͰΫϥογϡ ͯ͠ཉ͘͠ͳ͍ɻԿ͔ํ๏͋Δʁ w assertionFailureΛ࢖͑͹ɺσόοάϏϧυͩ ͚ΫϥογϡͰ͖ΔͷͰɺͥͻ׆༻͠·͠ΐ͏ɻ w ྫɿ let image = UIImage(named: "ImageName") ?? { assertionFailure("ImageName not found") return UIImage() }()

Slide 27

Slide 27 text

5*14ᶄ w ଞʹ΋Ͳ͔͜ੵۃతʹ!Λ࢖ͬͨํ͕৔໘͋Δʁ w ςετίʔυ΋Ή͠ΖੵۃతʹόάΛؾ෇͖͍ͨ͠ ຊ൪ΞϓϦʹҰ੾Өڹ͠ͳ͍ͷͰɺੵۃతʹ!Λ࢖ ͑Δ͜ͱ͕ଟ͍Ͱ͢ɻ w ͨͩ͠Ϋϥογϡ͢Δͱޙଓͷίʔυ΋ಈ͔ͳ͘ ͳΔͷͰɺ৔ॴʹΑͬͯ͸XCTFailΛ࢖ͬͨํ ͕͍͍͜ͱ΋͋Γ·͢ w 1MBZHSPVOEͱ͔ͷຊ൪ΞϓϦؔ܎ͳࣗ͘෼Ͱखܰ ͳಈ࡞֬ೝ͍ͨ࣌͠΋΋ͪΖΜੵۃతʹ࢖ͬͯΑ͠

Slide 28

Slide 28 text

!Λա౓ʹڪΕͣʹ ͏·͘׆༻ͯ͠ όάΛૣظʹ௵͠·͠ΐ͏