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
430
iOSアプリを安全にローカライズする
hiragram
1
400
iPhoneXのTrueDepthカメラでVRMを動かす
hiragram
2
14k
生きた仕様書としてのUIカタログアプリ運用 構想編
hiragram
1
1.4k
waiwai-swiftc-lazy.pdf
hiragram
0
240
Protocol Oriented WebAPI Abstraction
hiragram
0
340
Vapor cloud + Codegen
hiragram
0
59
VaporアプリからFCM経由でプッシュ通知を送る
hiragram
0
130
アプリ内でWebAPIを抽象化するためのフレームワークAbstractionKitの紹介
hiragram
1
3.6k
Other Decks in Technology
See All in Technology
.NET AspireでAzure Functionsやクラウドリソースを統合する
tsubakimoto_s
0
190
2025年の挑戦 コーポレートエンジニアの技術広報/techpr5
nishiuma
0
140
商品レコメンドでのexplicit negative feedbackの活用
alpicola
1
340
Reactフレームワークプロダクトを モバイルアプリにして、もっと便利に。 ユーザに価値を届けよう。/React Framework with Capacitor
rdlabo
0
120
AWS re:Invent 2024 re:Cap Taipei (for Developer): New Launches that facilitate Developer Workflow and Continuous Innovation
dwchiang
0
160
[IBM TechXchange Dojo]Watson Discoveryとwatsonx.aiでRAGを実現!座学①
siyuanzh09
0
110
AWSの生成AIサービス Amazon Bedrock入門!(2025年1月版)
minorun365
PRO
7
470
データ基盤におけるIaCの重要性とその運用
mtpooh
4
490
comilioとCloudflare、そして未来へと向けて
oliver_diary
6
440
Accessibility Inspectorを活用した アプリのアクセシビリティ向上方法
hinakko
0
180
Oracle Exadata Database Service(Dedicated Infrastructure):サービス概要のご紹介
oracle4engineer
PRO
0
12k
ABWGのRe:Cap!
hm5ug
1
120
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.5k
Docker and Python
trallard
43
3.2k
A designer walks into a library…
pauljervisheath
205
24k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
3
360
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Producing Creativity
orderedlist
PRO
343
39k
Product Roadmaps are Hard
iamctodd
PRO
50
11k
The World Runs on Bad Software
bkeepers
PRO
66
11k
A Philosophy of Restraint
colly
203
16k
Building Better People: How to give real-time feedback that sticks.
wjessup
366
19k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
Agile that works and the tools we love
rasmusluckow
328
21k
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
ϓϩτίϧ֦ுΛ͏ͱ • σϑΥϧτ࣮͚ͩͰ͍͍࣌ɺܕͷఆٛʹϓ ϩτίϧ໊Λॻ͖͚ͩ͢Ͱͦͷϓϩτίϧʹ ద߹Ͱ͖Δɻָɻ • ͋Δಛఆͷܕʹରͯ͠ϓϩτίϧ੍Λ͚ͭΔ ͱ͖͚ͩར༻ՄೳͳσϑΥϧτ࣮ΛఆٛͰ͖ Δ
·ͱΊ • ݺͼग़͠ݩ͔Βݟ͑Δൣғ͕ݶఆͰ͖Δͷྑ͍ • δΣωϦΫε+ܕਪͰΧνοͱ͍͔ͯͯͭ͠ίʔ υॻ͖͍͢ • ܧঝͭΒ͍ • ࢀরܕͭΒ͍ͱ͍͏จ຺ͱ߹ΘͤͯΫϥεͰͳ
͘ܕͰܧঝͰ͖ͳ͍ߏମΛ͓͏ͥΈ͍ͨͳ ෩ை͕͋Δ
͓ΘΓ