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
1.3k
0
Share
Protocols in Swift
Yuya Hirayama
September 02, 2016
More Decks by Yuya Hirayama
See All by Yuya Hirayama
VRTと真面目に向き合う
hiragram
1
750
Claudeをクラウド型エージェントのように使う
hiragram
0
250
わいわいClaude Code アイスブレイクLT iOSDC2025 Day2 アンカンファレンス
hiragram
0
180
LLMエージェント時代に適応した開発フロー
hiragram
2
840
Deep Dive into ~/.claude/projects
hiragram
14
32k
iOSアプリ開発もLLMで自動運転する
hiragram
7
3k
iOSアプリの定期リリースとその自動化@potatotips#90
hiragram
1
520
Xcode Cloud事例紹介
hiragram
1
570
iOSアプリを安全にローカライズする
hiragram
1
510
Other Decks in Technology
See All in Technology
データ分析基盤の信頼を支える視点と設計
yuki_saito
1
660
TSKaigi 2026 - 10秒のビルドを1秒へ:tsdownが切り拓く2026年のTypeScriptライブラリ開発
teamlab
PRO
2
260
自称宇宙最速で不合格となったAIP-C01にリベンジを果たすべくAIで問題集アプリを作ってみた。
yama3133
0
150
AI とサービス・デザイン / AI and Service Design
ks91
PRO
0
170
Claude Codeですべての日常業務を爆速化しよう!
minorun365
PRO
15
13k
Generative UI × A2UI で AI エージェントを作った話 AI-DLC も使ってみた!
kmiya84377
1
170
Node.js+TypeScriptにおけるCJS/ESM相互運用の最新ポイント
grainrigi
2
120
実践 TanStack Start ― 新規プロダクトを開発して確立した、サーバーとクライアント境界の設計パターン / Practical TanStack Start Server-Client Boundary Patterns
kaminashi
2
320
イベントで大活躍する電子ペーパー名札 〜その3〜 / ビジュアルプログラミングIoTLT vol.23
you
PRO
0
140
シンデレラなんかになりたくない!ガラスの靴が割れた時代にどう歩く?
nomizone
0
190
自作エディターをOSSにして分かった、一人に刺さる開発が世界を動かす理由
shinyasaita
1
390
RubyでRuby拡張を書いたらRubyより35倍速になったってどういうこと??
kazuho
3
610
Featured
See All Featured
How GitHub (no longer) Works
holman
316
150k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
270
How to Ace a Technical Interview
jacobian
281
24k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
170
Documentation Writing (for coders)
carmenintech
77
5.3k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
830
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
400
Code Review Best Practice
trishagee
74
20k
The Curious Case for Waylosing
cassininazir
1
360
Six Lessons from altMBA
skipperchong
29
4.2k
Producing Creativity
orderedlist
PRO
348
40k
Done Done
chrislema
186
16k
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
ϓϩτίϧ֦ுΛ͏ͱ • σϑΥϧτ࣮͚ͩͰ͍͍࣌ɺܕͷఆٛʹϓ ϩτίϧ໊Λॻ͖͚ͩ͢Ͱͦͷϓϩτίϧʹ ద߹Ͱ͖Δɻָɻ • ͋Δಛఆͷܕʹରͯ͠ϓϩτίϧ੍Λ͚ͭΔ ͱ͖͚ͩར༻ՄೳͳσϑΥϧτ࣮ΛఆٛͰ͖ Δ
·ͱΊ • ݺͼग़͠ݩ͔Βݟ͑Δൣғ͕ݶఆͰ͖Δͷྑ͍ • δΣωϦΫε+ܕਪͰΧνοͱ͍͔ͯͯͭ͠ίʔ υॻ͖͍͢ • ܧঝͭΒ͍ • ࢀরܕͭΒ͍ͱ͍͏จ຺ͱ߹ΘͤͯΫϥεͰͳ
͘ܕͰܧঝͰ͖ͳ͍ߏମΛ͓͏ͥΈ͍ͨͳ ෩ை͕͋Δ
͓ΘΓ