Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Protocols in Swift
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Yuya Hirayama
September 02, 2016
Technology
1.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Protocols in Swift
Yuya Hirayama
September 02, 2016
More Decks by Yuya Hirayama
See All by Yuya Hirayama
VRTと真面目に向き合う
hiragram
1
840
Claudeをクラウド型エージェントのように使う
hiragram
0
270
わいわいClaude Code アイスブレイクLT iOSDC2025 Day2 アンカンファレンス
hiragram
0
200
LLMエージェント時代に適応した開発フロー
hiragram
2
890
Deep Dive into ~/.claude/projects
hiragram
14
37k
iOSアプリ開発もLLMで自動運転する
hiragram
7
3.2k
iOSアプリの定期リリースとその自動化@potatotips#90
hiragram
1
550
Xcode Cloud事例紹介
hiragram
1
600
iOSアプリを安全にローカライズする
hiragram
1
540
Other Decks in Technology
See All in Technology
会社説明資料
persolserverworks
0
9.8k
Metadata - Section 1: HTML Basics
mohab1
0
120
スプシの手作業からの解脱 ~更新はClaude Codeに、見せ方と使い方はGASアプリに任せる~
kentarofujii
0
150
Conditional PED-ANOVA: Hyperparameter Importance in Hierarchical & Dynamic Search Spaces
pfn
PRO
0
140
Rust で関数型ドメインモデリング
takonda
0
140
go-sqletch
moznion
0
140
Getting Started with Google Antigravity
glaforge
0
310
V8のArray.prototype.flatを最大約20倍速くするまでと、巨大OSSへの大規模コミットの道のり
riyaamemiya
0
290
実践!Cloud Run ハンズオン!! / Cloud Run handson
y0hgi
2
280
パスキーの自動テストはどこまでいけるのか
teamlab
PRO
0
250
Persisting Massive Data with Rails ~Designing for 60 billion rows, and fighting the bottlenecks~ Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
0
730
AI駆動で「他アプリの音を加工できる」アプリを作った
satomasahiro2005
0
150
Featured
See All Featured
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
630
30 Presentation Tips
portentint
PRO
1
430
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
Amusing Abliteration
ianozsvald
1
350
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
Fantastic passwords and where to find them - at NoRuKo
philnash
53
4k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
710
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
410
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
990
Building a Scalable Design System with Sketch
lauravandoore
464
34k
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
870
Being A Developer After 40
akosma
92
590k
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
ϓϩτίϧ֦ுΛ͏ͱ • σϑΥϧτ࣮͚ͩͰ͍͍࣌ɺܕͷఆٛʹϓ ϩτίϧ໊Λॻ͖͚ͩ͢Ͱͦͷϓϩτίϧʹ ద߹Ͱ͖Δɻָɻ • ͋Δಛఆͷܕʹରͯ͠ϓϩτίϧ੍Λ͚ͭΔ ͱ͖͚ͩར༻ՄೳͳσϑΥϧτ࣮ΛఆٛͰ͖ Δ
·ͱΊ • ݺͼग़͠ݩ͔Βݟ͑Δൣғ͕ݶఆͰ͖Δͷྑ͍ • δΣωϦΫε+ܕਪͰΧνοͱ͍͔ͯͯͭ͠ίʔ υॻ͖͍͢ • ܧঝͭΒ͍ • ࢀরܕͭΒ͍ͱ͍͏จ຺ͱ߹ΘͤͯΫϥεͰͳ
͘ܕͰܧঝͰ͖ͳ͍ߏମΛ͓͏ͥΈ͍ͨͳ ෩ை͕͋Δ
͓ΘΓ