Slide 1

Slide 1 text

ΞϓϦΤϯδχΞʹ஌ͬͯ΄͠ ͍1PTUNBOͷ࢖͍ํ for0UFNBDIJTXJGU

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

ຊ೔஀ੜ೔

Slide 4

Slide 4 text

͓அΓ w ͜ͷൃද͸4XJGUͷίʔυ͕Ұ੾΄ͱΜͲग़·ͤΜ w ͜ͷൃද͸J04ͷ͜ͱҰ੾ग़·ͤΜ

Slide 5

Slide 5 text

αʔό"1*

Slide 6

Slide 6 text

αʔό"1* w ϕʔε63- w IUUQTXXXTFSWFSDPN w ύε w MPHJO w ϝιου w 1045 w ϘσΟʢ+40/ͳͲʣ w \NBJMTPNFCPEZ!TPNFXIFSFDPN QBTTXPSE6T'HP^ w Ϩεϙϯεʢ+40/ͳͲʣ w \TVDDFTTUSVF UPLFO&&/LX9Y%7B9;ST1/ZETZH&&H^

Slide 7

Slide 7 text

extension LoginRequest: Request { var baseURL: URL { return self.apiURL } var method: HTTPMethod { return .post } var path: String { return "/login" } var parameters: Any? { let postingParameters: [String: Any?] = [ "mail": self.mail, "password": self.password ] return postingParameters } struct Response: Decodable { let token: String } }

Slide 8

Slide 8 text

extension LoginRequest: Request { var baseURL: URL { return self.apiURL } var method: HTTPMethod { return .post } var path: String { return "/login" } var parameters: Any? { let postingParameters: [String: Any?] = [ "mail": self.mail, "password": self.password ] return postingParameters } struct Response: Decodable { let token: String } } let request = LoginRequest(apiURL: userAPIBaseURL, mail: mail, password: password) Session.send(request) { [unowned self] (result) in switch result { case .success(let response): let status = self.makeAccountStatus(from: response) completion?(status) case .failure(let error): let status = self.makeAccountStatus(from: error) completion?(status) } } $PEFXJUI"1*,JU
 IUUQTHJUIVCDPNJTILBXB"1*,JU

Slide 9

Slide 9 text

仕様書だけでコード組むの怖い! ※どうせ仕様書通りに動かない 確認しながら通信周り
 組んでいきたい!

Slide 10

Slide 10 text

ƋƒŧūŧƄŧƄ4XJGUƊ
 ǜǏǞlj✣ǟ⊾ƣƑ૫֚ŧl

Slide 11

Slide 11 text

1PTUNBO

Slide 12

Slide 12 text

IUUQTXXXHFUQPTUNBODPNBQQT

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

1PTUNBO(MPTTBSZ w 8PSLTQBDF w ෳ਺ͷϓϩδΣΫτΛ·ͱΊͨ৔ॴ w $PMMFDUJPOT w ҰͭͷϓϩδΣΫτͰ࢖͏༷ʑͳ؀ڥ΍"1*Λ·ͱ Ίͨ৔ॴ w &OWJSPONFOU w ֤छ؀ڥʢ%FW؀ڥͩͱ͔ຊ൪؀ڥͩͱ͔ʣ w 3FRVFTU w ࣮ࡍͷ"1*ϦΫΤετ

Slide 15

Slide 15 text

1PTUNBOͷϝϦοτ w ม਺ΛهԱͰ͖Δʗ؀ڥʹԠͯ͡࢖͍෼͚͕Ͱ͖Δ w +BWB4DSJQUͰϦΫΤετͷલ΍ޙʹಈ࡞ΛૠೖͰ͖Δ

Slide 16

Slide 16 text

w 4UBHJOH؀ڥͷςετΞΧ΢ϯτ৘ใΛऔಘ w ΞΧ΢ϯτ৘ใͰϩάΠϯ"1*Λୟ͘ w ϩάΠϯࡁΈͷ5PLFOΛར༻ͯ͠ผͷ"1*Λୟ͘

Slide 17

Slide 17 text

1PTUNBOʹ4UBHJOH؀ڥͰඞཁͳม਺Λ
 ؀ڥઃఆͰఆٛ

Slide 18

Slide 18 text

3FRVFTUΛ࡞੒͠ɺύε΍ϘσΟͳͲΛ
 طఆͷม਺͔Βఆٛ ʢ{{variableName}}Ͱม਺Λ࢖͑Δʣ

Slide 19

Slide 19 text

ʮ4FOEʯΛԡͤ͹ฦ͖ͬͯͨϨεϙϯεΛ
 ͙͢ʹ֬ೝͰ͖Δ

Slide 20

Slide 20 text

ʮ5FTUTʯͰϨεϙϯε΋ΒͬͨޙͷॲཧΛ
 +BWB4DSJQUͰॻ͚Δ
 ʢຊདྷ͸ϨεϙϯεΛςετ͢ΔͨΊͰ͕͢
 ςετҎ֎Ͱ΋࢖͑Δʣ

Slide 21

Slide 21 text

w pmͰ1PTUNBOͷϝιουΛݺͼग़ͤΔ w pm.response.json();ͰϨεϙϯεͷ +40/ΦϒδΣΫτΛऔಘͰ͖Δ w pm.environment.set(key, value);Ͱ ؀ڥʹม਺ΛઃఆͰ͖Δ w IUUQTXXXHFUQPTUNBODPNEPDTW QPTUNBOTDSJQUTUFTU@TDSJQUT

Slide 22

Slide 22 text

ʮ5FTUTʯͰอଘͨ͠token͕௥Ճ͞Εͨ

Slide 23

Slide 23 text

อଘ͞ΕͨtokenΛ࢖ͬͯผͷ"1*Λୟ͚ͨ

Slide 24

Slide 24 text

r੕໺ܙྤ l1PTUNBOͰखܰͳ"1*֬ೝΛz

Slide 25

Slide 25 text

ʲએ఻ʳ

Slide 26

Slide 26 text

J04ΞϓϦઃܭύλʔϯೖ໳ IUUQTQFBLTDDJ04@BSDIJUFDUVSF

Slide 27

Slide 27 text

גࣜձࣾΏΊΈɺΤϯδχΞઈࢍืूத IUUQSFDSVJUZVNFNJDPKQ