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.2k
Protocols in Swift
Yuya Hirayama
September 02, 2016
Tweet
Share
More Decks by Yuya Hirayama
See All by Yuya Hirayama
わいわいClaude Code アイスブレイクLT iOSDC2025 Day2 アンカンファレンス
hiragram
0
130
LLMエージェント時代に適応した開発フロー
hiragram
2
690
Deep Dive into ~/.claude/projects
hiragram
14
21k
iOSアプリ開発もLLMで自動運転する
hiragram
7
2.7k
iOSアプリの定期リリースとその自動化@potatotips#90
hiragram
1
460
Xcode Cloud事例紹介
hiragram
1
510
iOSアプリを安全にローカライズする
hiragram
1
460
iPhoneXのTrueDepthカメラでVRMを動かす
hiragram
2
14k
生きた仕様書としてのUIカタログアプリ運用 構想編
hiragram
1
1.4k
Other Decks in Technology
See All in Technology
デザインとエンジニアリングの架け橋を目指す OPTiMのデザインシステム「nucleus」の軌跡と広げ方
optim
0
110
ストレージエンジニアの仕事と、近年の計算機について / 第58回 情報科学若手の会
pfn
PRO
3
800
HonoとJSXを使って管理画面をサクッと型安全に作ろう
diggymo
0
180
ハノーファーメッセ2025で見た生成AI活用ユースケース.pdf
hamadakoji
1
460
難しいセキュリティ用語をわかりやすくしてみた
yuta3110
0
390
Azureコストと向き合った、4年半のリアル / Four and a half years of dealing with Azure costs
aeonpeople
1
280
個人でデジタル庁の デザインシステムをVue.jsで 作っている話
nishiharatsubasa
3
5k
事業開発におけるDify活用事例
kentarofujii
5
1.4k
Dylib Hijacking on macOS: Dead or Alive?
patrickwardle
0
470
ソースを読むプロセスの例
sat
PRO
15
9.9k
【SORACOM UG Explorer 2025】さらなる10年へ ~ SORACOM MVC 発表
soracom
PRO
0
130
IoTLT@ストラタシスジャパン_20251021
norioikedo
0
130
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.9k
Building an army of robots
kneath
305
46k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
930
Build The Right Thing And Hit Your Dates
maggiecrowley
38
2.9k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Music & Morning Musume
bryan
46
6.9k
Building a Modern Day E-commerce SEO Strategy
aleyda
44
7.8k
It's Worth the Effort
3n
187
28k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.2k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
658
61k
Java REST API Framework Comparison - PWX 2021
mraible
34
8.9k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
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
ϓϩτίϧ֦ுΛ͏ͱ • σϑΥϧτ࣮͚ͩͰ͍͍࣌ɺܕͷఆٛʹϓ ϩτίϧ໊Λॻ͖͚ͩ͢Ͱͦͷϓϩτίϧʹ ద߹Ͱ͖Δɻָɻ • ͋Δಛఆͷܕʹରͯ͠ϓϩτίϧ੍Λ͚ͭΔ ͱ͖͚ͩར༻ՄೳͳσϑΥϧτ࣮ΛఆٛͰ͖ Δ
·ͱΊ • ݺͼग़͠ݩ͔Βݟ͑Δൣғ͕ݶఆͰ͖Δͷྑ͍ • δΣωϦΫε+ܕਪͰΧνοͱ͍͔ͯͯͭ͠ίʔ υॻ͖͍͢ • ܧঝͭΒ͍ • ࢀরܕͭΒ͍ͱ͍͏จ຺ͱ߹ΘͤͯΫϥεͰͳ
͘ܕͰܧঝͰ͖ͳ͍ߏମΛ͓͏ͥΈ͍ͨͳ ෩ை͕͋Δ
͓ΘΓ