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
Libraries for the Swift
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
yohei sugigami
May 13, 2015
Technology
5.5k
14
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Libraries for the Swift
Libraries for the Swift
yohei sugigami
May 13, 2015
More Decks by yohei sugigami
See All by yohei sugigami
Snapshot Testing in iOS
susieyy
6
3.3k
Redux with iOS
susieyy
0
1.4k
Why use Redux in iOS
susieyy
5
2.7k
ReduxRxを活用したアプリアーキテクチャ
susieyy
8
2.4k
Redux+Rxを活用したiOSアプリアーキテクチャ
susieyy
10
2.2k
Swaggerで始めるAPI定義管理とコードジェネレート
susieyy
14
7.8k
開発中のアプリをXcode9 & Swift4に移行しました
susieyy
0
3.8k
Wantedly People ViewModel and Rx
susieyy
7
7.6k
ReduxDevTools' power to the iOS development
susieyy
0
930
Other Decks in Technology
See All in Technology
#エンジニアBooks 30分でわかる 「技術記事を書く技術」 / engineer-books 2026-06-30
jnchito
1
180
Fabricをフル活用する AI Agent Hub -製造業特化AIエージェントの設計
iotcomjpadmin
0
190
Multi-Agent並列開発を 安全に回すための技術 / Technology for Safely Multi-Agent Parallel Development
tooppoo
0
250
Mastraエージェント、どのクラウドにデプロイする?
minorun365
PRO
2
150
5分でわかるDuckDB Quack
chanyou0311
4
310
本当の”仕事”を手放せる未来が見えた
mu7889yoon
0
220
GitHub Copilot運用のリアル ~AI Credit時代にどう向き合うか~
takafumisu2uk1
0
620
フルAIで個人開発して学んだあれこれ / yuruai vol.1
isaoshimizu
0
170
“ID沼入口” - 基本とセキュリティから始める、考え続けるためのID管理技術勉強会 告知&イントロ
ritou
0
380
インフラ寄りSREでも 開発に踏み出せる〜境界を越えてユーザー体験に向き合いたい〜
sansantech
PRO
0
190
テスト設計の本質を改めて考えてみる~生成AIを活用する時代だからこそ、作ったテストの説明性を高めよう~
yamasaki696
1
290
Baseline対応のDOMの型定義を作った
uhyo
2
660
Featured
See All Featured
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
490
The Cost Of JavaScript in 2023
addyosmani
55
10k
Marketing to machines
jonoalderson
1
5.5k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
330
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Context Engineering - Making Every Token Count
addyosmani
9
1k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
240
Docker and Python
trallard
47
3.9k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
220
Automating Front-end Workflow
addyosmani
1370
210k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
Transcript
Libraries for the Swift yohei SUGIGAMI
None
We are selecting the library for a New App
HTTP + JSON ˔"MBNPpSF˒ ɹɹIUUQTHJUIVCDPN"MBNPpSF"MBNPpSF ˔4XJGUZ+40/˒ ɹɹIUUQTHJUIVCDPN4XJGUZ+40/4XJGUZ+40/ ˔"SHP˒
ɹɹIUUQTHJUIVCDPNUIPVHIUCPU"SHP ˔+40/&YQPSU˒ ɹɹIUUQTHJUIVCDPN"INFE"MJ+40/&YQPSU 3FGT4XJGUͷ+40/Λѻ͏ϥΠϒϥϦ·ͱΊ
JSONExport 3FGT4XJGUͷ+40/Λѻ͏ϥΠϒϥϦ·ͱΊ 4XJGU$MBTTFT5PVTFXJUI4XJGUZ+40/MJCSBSZ 4XJGU$MBTTFT5PVTFXJUI3FBMN
˔3FBDUJWF$PDPB#FUB˒ ɹɹIUUQTHJUIVCDPN3FBDUJWF$PDPB3FBDUJWF$PDPB ˔4XJGU5BTL˒ ɹɹIUUQTHJUIVCDPN3FBDU,JU4XJGU5BTL ˔#SJHIU'VUVSFT˒ ɹɹIUUQTHJUIVCDPN5IPNWJT#SJHIU'VUVSFT ˔'VUVSF,JU˒ ɹɹIUUQTHJUIVCDPN'VUVSF,JU'VUVSF,JU Promise
/ Future
˔3FBDUJWF$PDPB#FUB˒ ɹɹIUUQTHJUIVCDPN3FBDUJWF$PDPB3FBDUJWF$PDPB ˔3FBDU,JU˒ ɹɹIUUQTHJUIVCDPN3FBDU,JU3FBDU,JU ˔3Y4XJGU˒ ɹɹIUUQTHJUIVCDPNKTQBISTVNNFST3Y4XJGU ˔3Y4XJGU˒ ɹɹIUUQTHJUIVCDPNL[BIFS3Y4XJGU Reactive
SwiftTask func auth() -> AuthTask { return self.getAccessToken() .then({ (token:
String?, errorInfo: ResponseTask.ErrorInfo?) -> AuthTask in return AuthTask { progress, fulfill, reject, configure in if let errorInfo = errorInfo { reject(errorInfo.error!) return } if let token = token { self.ref.authWithCustomToken(token) { (error: NSError!, autData: AuthData!) in if let error = error { reject(error) return } if let autData = autData { fulfill(autData) } } } } }) }
ViewBinding ˔3FBDUJWF$PDPB#FUB˒ ɹɹIUUQTHJUIVCDPN3FBDUJWF$PDPB3FBDUJWF$PDPB ˔4XJGU#POE˒ ɹɹIUUQTHJUIVCDPN4XJGU#POE#POE ˔3FBDU,JU˒ ɹɹIUUQTHJUIVCDPN3FBDU,JU3FBDU,JU
SwiftBond class LoginViewController: UIViewController { @IBOutlet weak var activityIndicator: UIActivityIndicatorView!
@IBOutlet weak var usernameTextField: UITextField! @IBOutlet weak var passwordTextField: UITextField! @IBOutlet weak var loginButton: UIButton! let viewModel = LoginViewModel() override func viewDidLoad() { viewModel.username <->> usernameTextField viewModel.password <->> passwordTextField viewModel.activityIndicatorVisible ->> activityIndicator viewModel.loginButtonEnabled ->> loginButton viewModel.loginState ->| loginStateChangedObserver loginButton.dynEvent .filter(==, .TouchUpInside) ->| loginButtonTapObserver }
SwiftBond var tableViewDataSourceBond: UITableViewDataSourceBond<UITableViewCell>! override func viewDidLoad() { super.viewDidLoad() tableViewDataSourceBond
= UITableViewDataSourceBond(tableView: self.tableView) repositories.map { [unowned self] (repository: Repository) -> UITableViewCell in let cell = self.tableView .dequeueReusableCellWithIdentifier("cell") as UITableViewCell repository.name ->> cell.nameLabel repository.photo ->> cell.avatarImageView return cell } ->> tableViewDataSourceBond }
Functional tool kit ˔%PMMBSBOE$FOU˒ ɹɹIUUQTHJUIVCDPNBOLVSQ%PMMBSTXJGU ˔4XJGU[˒ ɹɹIUUQTHJUIVCDPNUZQFMJGU4XJGU[ ˔&Y4XJGU˒
ɹɹIUUQTHJUIVCDPNQ/SF&Y4XJGU
Date Helper ˔4XJGU.PNFOU˒ ɹɹIUUQTHJUIVCDPNBLPTNB4XJGU.PNFOU ˔5JNFQJFDF˒ ɹɹIUUQTHJUIVCDPNOBPUZ5JNFQJFDF ˔"'%BUF)FMQFS˒ ɹɹIUUQTHJUIVCDPNNFMWJUBY"'%BUF)FMQFS ˔5FNQP˒ ɹɹIUUQTHJUIVCDPNSFNJSPCFSU5FNQP
Logger ˔9$(-PHHFS˒ ɹɹIUUQTHJUIVCDPN%BWF8PPE$PN9$(-PHHFS ˔4XFMM˒ ɹɹIUUQTHJUIVCDPNIVCFSUS4XFMM
XCGLogger with Aspects let logger = XCGLogger.defaultInstance() logger.setup(logLevel: .Verbose, showLogLevel:
true, showFileNames: true, showLineNumbers: true, writeToFile: nil) let hooks = ["viewDidLoad", "viewWillAppear:", "viewWillDisappear:"] UIViewController.aspect_hookLoggers(hooks) { (_className: String?, _methodName: String?) in if var className = _className { if var methodName = _methodName { let items = className.componentsSeparatedByString(".") className = items.count > 1 ? items[1] : items[0] logger.verbose("\(className)#\(methodName)") } } }
XCGLogger with Aspects 2015-05-10 16:18:57.847 [Info] XCGLogger Version: 2.0 -
LogLevel: Verbose 2015-05-10 16:18:57.978 [Verbose] [AppDelegate.swift:87] UITabBarController#viewDidLoad 2015-05-10 16:18:57.995 [Verbose] [AppDelegate.swift:87] UITabBarController#viewWillAppear: 2015-05-10 16:18:58.005 [Verbose] [AppDelegate.swift:87] UITableViewController#viewDidLoad 2015-05-10 16:18:58.005 [Verbose] [AppDelegate.swift:87] UITableViewController#viewWillAppear:
Architecture
Architecture 7JFX $POUSPMMFS 7JFX.PEFM .PEFM 3FBDU,JU 4XJGU5BTL 4XJGUZ+40/ 4XJGU#POE .77.
Find a library
GitHub Search Repositories
GitHub Trending Repositories
Awesome Swift
Swift Toolbox
CocoaControls
Enjoy your library life.