Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Protocols in Swift
Search
Yuya Hirayama
September 02, 2016
Technology
0
1.1k
Protocols in Swift
Yuya Hirayama
September 02, 2016
Tweet
Share
More Decks by Yuya Hirayama
See All by Yuya Hirayama
Xcode Cloud事例紹介
hiragram
1
400
iOSアプリを安全にローカライズする
hiragram
1
390
iPhoneXのTrueDepthカメラでVRMを動かす
hiragram
2
14k
生きた仕様書としてのUIカタログアプリ運用 構想編
hiragram
1
1.3k
waiwai-swiftc-lazy.pdf
hiragram
0
230
Protocol Oriented WebAPI Abstraction
hiragram
0
320
Vapor cloud + Codegen
hiragram
0
57
VaporアプリからFCM経由でプッシュ通知を送る
hiragram
0
130
アプリ内でWebAPIを抽象化するためのフレームワークAbstractionKitの紹介
hiragram
1
3.6k
Other Decks in Technology
See All in Technology
WINTICKETアプリで実現した高可用性と高速リリースを支えるエコシステム / winticket-eco-system
cyberagentdevelopers
PRO
1
190
とあるユーザー企業におけるリスクベースで考えるセキュリティ業務のお話し
4su_para
3
330
CAMERA-Suite: 広告文生成のための評価スイート / ai-camera-suite
cyberagentdevelopers
PRO
3
270
신뢰할 수 있는 AI 검색 엔진을 만들기 위한 Liner의 여정
huffon
0
370
ネット広告に未来はあるか?「3rd Party Cookie廃止とPrivacy Sandboxの効果検証の裏側」 / third-party-cookie-privacy
cyberagentdevelopers
PRO
1
130
現地でMeet Upをやる場合の注意点〜反省点を添えて〜
shotashiratori
0
530
Product Engineer Night #6プロダクトエンジニアを育む仕組み・施策
hacomono
PRO
1
470
30万人が利用するチャットをFirebase Realtime DatabaseからActionCableへ移行する方法
ryosk7
5
350
MAMを軸とした動画ハンドリングにおけるAI活用前提の整備と次世代ビジョン / abema-ai-mam
cyberagentdevelopers
PRO
1
120
omakaseしないための.rubocop.yml のつくりかた / How to Build Your .rubocop.yml to Avoid Omakase #kaigionrails
linkers_tech
3
740
AWS CodePipelineでコンテナアプリをデプロイした際に、古いイメージを自動で削除する
smt7174
1
100
Datachain会社紹介資料(2024年11月) / Company Deck
datachain
3
16k
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Automating Front-end Workflow
addyosmani
1365
200k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
For a Future-Friendly Web
brad_frost
175
9.4k
Visualization
eitanlees
144
15k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Intergalactic Javascript Robots from Outer Space
tanoku
268
27k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
Git: the NoSQL Database
bkeepers
PRO
425
64k
How to Think Like a Performance Engineer
csswizardry
19
1.1k
Making Projects Easy
brettharned
115
5.9k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Transcript
Protocols in Swift Speee Engineer Meeting 2016-08-31 @hiragram
SlackͷMac༻ΞϓϦ ॏ͘ͳ͍Ͱ͔͢ʁ
None
None
None
• ͜ΜͳΞϓϦΛ࡞ͬ ͍ͯΔதͰߟ͑ͨ͜ ͱΛ͠ΌΓ·͢
͢͜ͱ • ܧঝͭΒ͍ • Swiftͷϓϩτίϧʹ͍ͭͯ • ϓϩτίϧ͚ͩͰ݁߹ͨ͠ੈք • ϓϩτίϧ֦ு
ܧঝͭΒ͍ • AppleͷϑϨʔϜϫʔΫ ܧঝࡇΓ • શͯͷΫϥεNSObject ͷαϒΫϥε • ʮ͋ͷϝιουͬͯͲ͜ʹ ࣮͞Ε͚ͯͨͬʁʯ
ܧঝͭΒ͍ • UIViewControllerͷloadViewϝιου • ʮInterfaceBuilder͏ͳΒΦʔόʔϥΠυ͠ ͪΌμϝʯ
ܧঝͭΒ͍ • KVO(Ωʔࢹ)Ͱ͏observeValueForKeyPathϝιου • ʮΫϥεͷΛݺͿͱ͖ͪΌΜͱ࣮͞ΕͯΔ͔͔֬Ίͯ Ͷʯ
ͳʹͦΕ
ϓϩτίϧࢦϓϩάϥϛϯά • ෳΫϥεʹ·͕ͨͬͯ͋Δੑ࣭/ػೳΛ͍࣋ͨͤͨ ͱ͖ɺܧঝʹΑͬͯͰͳ͘ɺϓϩτίϧʹΑͬͯ ࣮ݱ͠·͠ΐ͏ɻ(BaseViewControllerͱ͔ͭΒ͍) • ܧঝҰͭͷ͔࣋ͯ͠ͳ͍͕ɺϓϩτίϧͳΒෳ ࣋ͯͯ͏Ε͍͠ɻ • ෳ࣋ͯΔ͕ɺෳͷϓϩτίϧͰ໊લ͕িಥ͢Δ
ͱશͯʹద߹Ͱ͖͍ͯͳ͍ͱ͍͏͜ͱͰίϯύΠϧ ௨Βͳ͍ɻ͜ΕෆՄආɻ
Swiftͷϓϩτίϧ • Property / Method Requirements • ࣮Λڧ੍͢Δ • Associatedtype
• ϓϩτίϧͰར༻͢Δɺؔ࿈͢Δܕ • Protocol Extension • ޙड़
มͷܕΛϓϩτίϧͰଋറ͢Δ
มͷܕΛϓϩτίϧͰଋറ͢Δ • aʮAwesomeProtocolʹ४ڌͯ͠ΔܕͷΦϒ δΣΫτԿͰಥͬࠐΊΔʯ • bʮAwesomeProtocolʹ४ڌ͍ͯ͠Δͻͱͭͷ ܕͷΦϒδΣΫτ͚ͩಥͬࠐΊΔʯ • ܕਪͷ͓͔͛ͰδΣωϦΫεͱ͍͍ͯ͢
ࣗ࡞SlackΞϓϦͰͬͯΔ͜ͱ • ςʔϒϧʹදࣔ͢ΔϝοηʔδͷܕΛࢦఆ͠ ͍͕ͯͨɺϑΟʔυʹදࣔ͢ΔΠϕϯτ༻ͷϓϩ τίϧΛ࡞ͬͨ → ϝοηʔδҎ֎ͷΠϕϯτ ؆୯ʹදࣔͰ͖ΔΑ͏ʹͳͬͨ
ܕʹ݁߹ͨ͠ੈք 7JFX$POUSPMMFS .FTTBHF&OUJUZ
ܕʹ݁߹ͨ͠ੈք 7JFX$POUSPMMFS ❗
Ϋϥεʹ݁߹ͨ͠ੈք 7JFX$POUSPMMFS ͳΜͨΒ .FTTBHF&OUJUZ
Ϋϥεʹ݁߹ͨ͠ੈք 7JFX$POUSPMMFS ❗ ͳΜͨΒ .FTTBHF&OUJUZ
ϓϩτίϧ͚ͩͰ݁߹ͨ͠ੈք 7JFX$POUSPMMFS .FTTBHF&OUJUZ "XFTPNF1SPUPDPM
ϓϩτίϧ͚ͩͰ݁߹ͨ͠ੈք 7JFX$POUSPMMFS "XFTPNF1SPUPDPM
ϓϩτίϧ͚ͩͰ݁߹ͨ͠ੈք 7JFX$POUSPMMFS "XFTPNF1SPUPDPM ผͷ&OUJUZ
ϓϩτίϧ͚ͩͰ݁߹ͨ͠ੈք ͷͤͳͱ͜Ζ • ݺͼग़͠ଆ(͖ͬ͞ͷྫͰViewController)͕ͬ ͍ͯΔϝιου͕ݶఆ͞ΕΔ • ʮ͜ͷϝιουͦ͏ͱࢥ͚ͬͨͲɺఆ֎ͷॴ͔ ΒݺΕͯͯม͑ΒΕͳ͍ʯΛ(͋Δఔ)ճආͰ͖ Δ •
ϓϩτίϧʹద߹͍ͯ͑͠͞Ε͍͍ͷͰɺଞͷܕ ͱೖΕସ͑ͨΓ৽͘͠Ճͨ͠Γ͢Δͷָ͕͍͢͝
ϓϩτίϧ͚ͩͰ݁߹ͨ͠ੈք ͷͭΒ͍ͱ͜Ζ • ܕΛࢦఆͯ͠ಈ͘ͱ͖ΑΓϓϩτίϧ͔ΒΠϯελ ϯεʹΞΫηε͢Δͱ͖ॲཧ͕͍ • Xcodeͷʮఆٛδϟϯϓʯ͕ͪΐͬͱෆศʹͳΔ • ϓϩτίϧ͕ཚཱͯ͘͠Δͱ໊લͱ͔ͪΌΜͱ͚ ͓͔ͯͳ͍ͱޙͰۤͦ͠͏ʁ
• delegateͷதͰ͞Βʹdelegateͱ͔ͬͯΔͱΧ Φε
ϓϩτίϧ֦ு • Swift2͔ΒՃ͞Εͨϓϩτίϧ֦ு(Protocol Extension) • ࣮Λڧ੍͢ΔProtocolʹରͯ͠ɺσϑΥϧτ ͷ࣮ΛఆٛͰ͖Δɻ
femitΞϓϦʹ Ұॠ͋ͬͨίʔυ
None
ϓϩτίϧ֦ுΛ͏ͱ • σϑΥϧτ࣮͚ͩͰ͍͍࣌ɺܕͷఆٛʹϓ ϩτίϧ໊Λॻ͖͚ͩ͢Ͱͦͷϓϩτίϧʹ ద߹Ͱ͖Δɻָɻ • ͋Δಛఆͷܕʹରͯ͠ϓϩτίϧ੍Λ͚ͭΔ ͱ͖͚ͩར༻ՄೳͳσϑΥϧτ࣮ΛఆٛͰ͖ Δ
·ͱΊ • ݺͼग़͠ݩ͔Βݟ͑Δൣғ͕ݶఆͰ͖Δͷྑ͍ • δΣωϦΫε+ܕਪͰΧνοͱ͍͔ͯͯͭ͠ίʔ υॻ͖͍͢ • ܧঝͭΒ͍ • ࢀরܕͭΒ͍ͱ͍͏จ຺ͱ߹ΘͤͯΫϥεͰͳ
͘ܕͰܧঝͰ͖ͳ͍ߏମΛ͓͏ͥΈ͍ͨͳ ෩ை͕͋Δ
͓ΘΓ