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
Kohei Tabata
August 17, 2016
Programming
0
380
Swiftでライブラリを書いて学んだこと
Kohei Tabata
August 17, 2016
Tweet
Share
More Decks by Kohei Tabata
See All by Kohei Tabata
AIと協業する開発の進め方
nerd0geek1
0
120
営業活動なしで継続的に案件を受注する方法 / how to get a contract without sales as a freelance
nerd0geek1
2
930
生体データを取り扱うアプリ開発の勘所
nerd0geek1
1
110
動線改善とステータス可視化で家庭内のストレスを軽減した話
nerd0geek1
3
4.3k
家庭をプロジェクトとして運営した話
nerd0geek1
2
4.2k
fastlaneの勉強会を主催して学んだこと、得たこと、悩んだこと
nerd0geek1
1
1.1k
みんなで育てるprecheck
nerd0geek1
1
740
matchとは?match導入のメリット
nerd0geek1
4
580
Improve your workflow with Sketch plugin
nerd0geek1
3
1.4k
Other Decks in Programming
See All in Programming
第9回 情シス転職ミートアップ 株式会社IVRy(アイブリー)の紹介
ivry_presentationmaterials
1
200
GoのGenericsによるslice操作との付き合い方
syumai
2
670
A2A プロトコルを試してみる
azukiazusa1
2
820
統一感のある Go コードを生成 AI の力で手にいれる
otakakot
0
3k
なぜ「共通化」を考え、失敗を繰り返すのか
rinchoku
1
360
CursorはMCPを使った方が良いぞ
taigakono
0
140
Cursor AI Agentと伴走する アプリケーションの高速リプレイス
daisuketakeda
1
120
プロダクト開発でも使おう 関数のオーバーロード
yoiwamoto
0
160
SODA - FACT BOOK
sodainc
1
1.1k
AIネイティブなプロダクトをGolangで挑む取り組み
nmatsumoto4
0
120
DroidKnights 2025 - 다양한 스크롤 뷰에서의 영상 재생
gaeun5744
3
300
Spring gRPC で始める gRPC 入門 / Introduction to gRPC with Spring gRPC
mackey0225
2
520
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Building an army of robots
kneath
306
45k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
Automating Front-end Workflow
addyosmani
1370
200k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
Typedesign – Prime Four
hannesfritz
42
2.7k
YesSQL, Process and Tooling at Scale
rocio
173
14k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.8k
Stop Working from a Prison Cell
hatefulcrawdad
270
20k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
228
22k
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)