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
Swiftでライブラリを書いて学んだこと
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Kohei Tabata
August 17, 2016
Programming
0
390
Swiftでライブラリを書いて学んだこと
Kohei Tabata
August 17, 2016
Tweet
Share
More Decks by Kohei Tabata
See All by Kohei Tabata
AIと協業する開発の進め方
nerd0geek1
0
160
営業活動なしで継続的に案件を受注する方法 / how to get a contract without sales as a freelance
nerd0geek1
2
960
生体データを取り扱うアプリ開発の勘所
nerd0geek1
1
140
動線改善とステータス可視化で家庭内のストレスを軽減した話
nerd0geek1
3
4.4k
家庭をプロジェクトとして運営した話
nerd0geek1
2
4.3k
fastlaneの勉強会を主催して学んだこと、得たこと、悩んだこと
nerd0geek1
1
1.2k
みんなで育てるprecheck
nerd0geek1
1
800
matchとは?match導入のメリット
nerd0geek1
4
610
Improve your workflow with Sketch plugin
nerd0geek1
3
1.5k
Other Decks in Programming
See All in Programming
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
200
AWS re:Invent 2025参加 直前 Seattle-Tacoma Airport(SEA)におけるハードウェア紛失インシデントLT
tetutetu214
2
120
AI巻き込み型コードレビューのススメ
nealle
2
1.4k
Automatic Grammar Agreementと Markdown Extended Attributes について
kishikawakatsumi
0
200
humanlayerのブログから学ぶ、良いCLAUDE.mdの書き方
tsukamoto1783
0
200
CSC307 Lecture 05
javiergs
PRO
0
500
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
280
CSC307 Lecture 07
javiergs
PRO
1
560
AI によるインシデント初動調査の自動化を行う AI インシデントコマンダーを作った話
azukiazusa1
1
750
16年目のピクシブ百科事典を支える最新の技術基盤 / The Modern Tech Stack Powering Pixiv Encyclopedia in its 16th Year
ahuglajbclajep
5
1k
CSC307 Lecture 08
javiergs
PRO
0
670
CSC307 Lecture 09
javiergs
PRO
1
840
Featured
See All Featured
The Language of Interfaces
destraynor
162
26k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
60
42k
Designing Experiences People Love
moore
144
24k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
190
Deep Space Network (abreviated)
tonyrice
0
65
The Spectacular Lies of Maps
axbom
PRO
1
530
Designing for humans not robots
tammielis
254
26k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Mobile First: as difficult as doing things right
swwweet
225
10k
Utilizing Notion as your number one productivity tool
mfonobong
3
220
Transcript
SwiftͰϥΠϒϥϦΛ ॻֶ͍ͯΜͩ͜ͱ 2016/08/17 Kyobashi.swift @גࣜձࣾϦΫϧʔτϚʔέςΟϯάύʔτφʔζ
ࣗݾհ ɾKohei Tabata(@nerd0geek1) ɾSaib Studio LLC ɾiOS/MacOS/tvOS Developer ɾFastlaneେ͖ ɾݴޠ༷ϥΠϒϥϦఏڙΑΓɺαʔϏεఏڙͷڵຯڧ͍
Said Studio LLC Kohei Tabata Next! Remote quick-zip plus Sleeple
ϥΠϒϥϦॻ͍ͯ·͔͢ʁ
࣍ ɾͳͥϥΠϒϥϦΛॻ͘ͷ͔ʁ ɾϥΠϒϥϦΛॻ͘ϝϦοτ ɾϥΠϒϥϦΛॻ͘σϝϦοτ ɾ·ͱΊ
ͳͥϥΠϒϥϦΛॻ͘ͷ͔ʁ
ΠϯηϯςΟϒͷͨΊʁ
None
ٕज़తؔ৺ͷͨΊʁ
None
ϓϨθϯε্ͷͨΊʁ
None
ָ͍͔ͨ͠Βɻ
ͳͥϥΠϒϥϦΛॻ͘ͷ͔ʁ ɾଞ༷ࣾͰΞϓϦ։ൃͷ͓ख͍ͭͭ͠ɺࣗࣾαʔϏεΛ։ൃ͠ɺݸਓΞϓϦ։ൃ͍ͯ͠Δɻ ɾࠓɺࣗࣾΞϓϦ2ͭ(iOSɺMac)ɺݸਓΞϓϦ1ͭӡ༻ͭͭ͠ɺݸਓΞϓϦ2ͭ։ൃத ɾ1ճղܾͨ͠ΛɺϓϩδΣΫτ͝ͱʹԿճղܾ͢Δͱ͔ͬͯΒΕͳ͍ ɾࣅͨΑ͏ͳίʔυͱɺϓϩδΣΫτ͝ͱͷςετίʔυͱ͔ ɾࣗͷؔΘΔϓϩδΣΫτͰָΛ͢ΔͨΊʹɺԿ࣮͢ΔΑ͏ͳ൚༻తͳػೳΛϥΠϒϥϦԽ
࡞ͬͨϥΠϒϥϦ ɾnerd0geek1/NSPageControl ɹ֓ཁɿUIPageControlͷMacOS(AppKit)൛ɻ ɹಈػɿMacOSͰUIPageControlʹ૬͢ΔUIίϯϙʔωϯτ͕ଘࡏ͠ͳ͔ͬͨͨΊɻ ɾnerd0geek1/Logger ɹ֓ཁɿϩάͷΧελϚΠζ(ΧϥʔϦϯάɺΫϥεɺߦ൪߸ɺϝιου) ɹಈػɿॻ͖͢ͷ͕໘ͩͬͨͨΊɻ ɾnerd0geek1/PausableTimer ɹ֓ཁɿετοϓΥονػೳ(։࢝ /
Ұ࣌ఀࢭ / ࠶։ɺΓ࣌ؒɺ࡞ಈத͔) ɹಈػɿϓϥΠϕʔτͱࣗࣾϓϩδΣΫτͰಉ͡ػೳΛ࣮͢Δͷ͕໘ͩͬͨͨΊɻ ɹɹɹɹݸਓϓϩδΣΫτ͔ΒΓग़ͯ͠ϥΠϒϥϦԽɻ ɾnerd0geek1/PlayListPlayer ɹ֓ཁɿAVPlayerͷϥούʔ(AVQueuePlayerͱҧ͍ɺPlayListมΘΒͳ͍) ɹಈػɿAVFoundationपΓɺ࠶࣮͕໘ɻ׳Εͯͳ͍ਓ͕࣮͢Δͱόά͕ຒΊࠐ·Ε͍͢ɻ
NSPageControl ɾNSPageControl(MacOSͰUIPageControlͷUIΛ࣮ݱ͢ΔͨΊͷϥΠϒϥϦ)
PlayListPlayer
ϥΠϒϥϦΛॻ͘ϝϦοτ ɾΕΔ΄ͲָʹͳΔ ɾઃܭྗ্͕͠ɺΩϨΠͳઃܭΛ৺͕͚ΔΑ͏ʹɻ ɾ͕ࣗಇ͔ͳͯ͘ɺࣗͱಉ͡ΫΦϦςΟͰػೳΛఏڙ͘͢͠ͳΔɻ ɾϏϧυʹؔ͢Δ͕ࣝਂ·Δ ɾࣗͷεΩϧ͕Ͳͷఔ͔ɺਓʹΘ͔ͬͯΒ͍͍͢ɻ ɾ(ࣗͷ߹ɺ͔ͳΓ෭࣍తͳҐஔ͚͚ͮͩͲ)ਓͷखॿ͚ɻ
ΕΔ΄ͲָʹͳΔ ɾTableViewΛMVVMΞʔΩςΫνϟͰ࣮͢Δ ɹͨΊͷϥΠϒϥϦ ɾॳσʔλΛಉظతʹऔಘ͠ɺબಉ࣌ʹ ɹ1ྻͷΈબՄೳͳϢʔεέʔεΛఆ ɹ+ σʔλ͕ඇಉظʹऔಘ͞ΕΔέʔε ɹ+ ෳͷྻΛಉ࣌ʹબ͢Δέʔε →ࠓޙͷϓϩδΣΫτͰɺ্هશͯͷέʔεͰ
ɹ಄Λ͏ඞཁ͕ͳ͘ͳΔ ڧͯ͘χϡʔήʔϜঢ়ଶͰ ৽نϓϩδΣΫτʂ
ઃܭྗͷ্ ɾprotocolͰ֎෦ʹެ։͖͢ΠϯλʔϑΣΠεΛఆٛɹˠɹ࣮ & ςετ ɹˠ࣮ʹҾͬுΒΕΔͱ͍͏͜ͱ͕ͳ͘ͳͬͨʂ ɾpublicͱinternalͷ͍͚Λҙࣝɻ →
Ϗϧυʹؔ͢Δ͕ࣝਂ·Δ ɾϩΪϯάextensionͳͲɺϓϥοτϑΥʔϜʹґଘͤͣʹར༻Ͱ͖ΔػೳͷϞδϡʔϧԽΛߦ͏ ɹˠطଘͷϚϧνϓϥοτϑΥʔϜରԠ͍ͯ͠ΔϥΠϒϥϦ(Alamofire)ͷઃఆΛௐΔ ɹɹɾϓϩδΣΫτߏ ɹɹɾίϯύΠϧରϑΝΠϧͷઃఆ ɹɹɾϓϥοτϑΥʔϜͷࠩΛٵऩ͢ΔΫϥεͷ࡞Γํ ɹɹɾ.travis.ymlͷॻ͖ํ ɹɹɾetc…
ϥΠϒϥϦΛॻ͘σϝϦοτ ɾӡ༻͢Δඞཁ͋Γ ɾਐา͠ʹ͘͘ͳΔ ɾެ։࣌ʹ༻ҙ͢ΔϑΝΠϧ͕૿͑Δ߹͋Γ ɹ(ݸਓͰͷΈ͏߹CarthageରԠͷΈɺ ɹෳਓϓϩδΣΫτͰ͏߹podspecREADMEΛ༻ҙ) ɾ.podspecREADME.mdͱ͍ͬͨࣗͰ͙͢ʹ ɹར༻͠ͳ͍ͷΛॻ͘ͱ͖ͷΔؾɾੜ࢈ੑͷ͞ ɹˠςϯϓϨʔτԽɾδΣωϨʔλͰ؆қԽ
·ͱΊ ɾݸਓϥΠϒϥϦ࡞Γ࢝Ί͔ͯΒɺίʔυͷ࠶ར༻ઃܭྗͷ্Ͱɺࣄ͕͔ͳΓָʹɻ ɾϥΠϒϥϦͰҰ࣮ͨ͠ػೳͰ͋Εɺ୭Ͱ࣮Ͱ͖ΔΑ͏ʹͳΔͷͰɺ໘ന͍ࣄʹूதͰ͖Δ ɹΑ͏ʹʂ ɾେ͖ͳOSSΛಡΉ࿅शʹͳΔɻ ɾυΩϡϝϯτ࡞͕໘Ͱޮ͕མͪΔ͜ͱ͋Δ͕ɺ૯߹తʹϥΠϒϥϦΛ࡞Γଓ͚Δ΄͏͕ ɹ͔ͳΓಘɻ ੋඇɺࣗͷϥΠϒϥϦΛ ࡞ͬͯΈͯʁ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ
ࢀߟ ɾCyberAgent - GitHubελʔΠϯηϯςΟϒ ɹ(https://www.cyberagent.co.jp/techinfo_detail/id=10151) ɾQiita - SwiftͰίϚϯυϥΠϯπʔϧΛ࡞Δ ɹ(http://qiita.com/gin0606/items/e53853b121a669ddc738) ɾίϚϯυϥΠϯπʔϧʹ͍ͭͯௐͨ͜ͱ
ɹ(http://jpmartha.hatenablog.jp/entry/2016/02/14/215728) ɾGitHub - NSPageControl ɹ(https://github.com/nerd0geek1/NSPageControl) ɾGitHub - PlayListPlayer ɹ(https://github.com/nerd0geek1/PlayListPlayer)