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
400
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Swiftでライブラリを書いて学んだこと
Kohei Tabata
August 17, 2016
More Decks by Kohei Tabata
See All by Kohei Tabata
AIと協業する開発の進め方
nerd0geek1
0
180
営業活動なしで継続的に案件を受注する方法 / how to get a contract without sales as a freelance
nerd0geek1
2
990
生体データを取り扱うアプリ開発の勘所
nerd0geek1
1
150
動線改善とステータス可視化で家庭内のストレスを軽減した話
nerd0geek1
3
4.5k
家庭をプロジェクトとして運営した話
nerd0geek1
2
4.4k
fastlaneの勉強会を主催して学んだこと、得たこと、悩んだこと
nerd0geek1
1
1.2k
みんなで育てるprecheck
nerd0geek1
1
840
matchとは?match導入のメリット
nerd0geek1
4
630
Improve your workflow with Sketch plugin
nerd0geek1
3
1.6k
Other Decks in Programming
See All in Programming
技術記事、 専門家としてのプログラマ、 言語化
mizchi
13
6.3k
The ROI of Quarkus for Spring Boot Applications
hollycummins
0
130
依存関係から依存物へ―Dependencyという言葉の歴史をひも解く
j_lee
0
130
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
590
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
14
5.7k
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
890
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
210
Performance Engineering for Everyone
elenatanasoiu
0
200
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.3k
AI 輔助遺留系統現代化的經驗分享
jame2408
1
910
JJUG CCC 2026 Spring: JSpecify で実現する Kotlin フレンドリーな Java API 設計
ternbusty
1
180
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
200
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
66
55k
Leo the Paperboy
mayatellez
7
1.9k
Chasing Engaging Ingredients in Design
codingconduct
0
220
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
440
The SEO identity crisis: Don't let AI make you average
varn
0
490
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
GraphQLとの向き合い方2022年版
quramy
50
15k
KATA
mclloyd
PRO
35
15k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
240
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
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)