Edited at

Swiftアプリ開発で使ってよかったライブラリまとめ

More than 3 years have passed since last update.

Swiftビギナーな自分が最近知った & 使ってよかったライブラリをまとめていきます

随時更新予定です:tada:


UI


SnapKit/SnapKit

コードで簡単にAutoLayoutが実装できます

すでにAutoLayoutを使用しているView上に、コードでaddSubview()をするときなどに便利でした


Sample.swift

// viewにnewViewを追加

view.addSubview(newView)

// Superview(view)のTop、Bottom、Leading、Trailingに各margin0で制約を与える
newView.snp_makeConstraints { make -> Void in
make.top.leading.trailing.bottom.equalTo(view)
}



facebook/pop

バウンスの動きなど、アニメーションの実装が簡単にできるライブラリ

:tada: TIPS: Objective-C製なので要BridgingHeaderです


devxoul/JLToast

Androidが羨ましかった!トースト表示のライブラリです

以下のようなAttributeも付与できて便利でした

Attribute

JLToastViewBackgroundColorAttributeName

JLToastViewCornerRadiusAttributeName

JLToastViewTextInsetsAttributeName

JLToastViewTextColorAttributeName

JLToastViewFontAttributeName

JLToastViewPortraitOffsetYAttributeName

JLToastViewLandscapeOffsetYAttributeName

:tada: TIPS: 現時点ではAttributeを一つずつ設定することしかできないようなので、Forkして同時に複数設定できるようにすると良いかもしれません(Sampleあります


JSON / Model Mapping


Hearst-DD/ObjectMapper

JSON形式のAPIのレスポンスやplistのマッピングに使っています

:tada: TIPS: Objective-CでいうところのMantle/Mantle


Network


Alamofire/Alamofire

ネットワーク通信用の定番ライブラリ

:tada: TIPS: Objective-CでいうところのAFNetworking/AFNetworking


Image Downloader


onevcat/Kingfisher

画像のダウンロードとキャッシングのライブラリ

:tada: TIPS: rs/SDWebImageにもINSPIREされたようです!function名も似ていて使いやすさ◎


Reactive Programing


ReactiveX/RxSwift

リアクティブプログラミングに利用します

:tada: TIPS: Objective-C製ではReactiveCocoa/ReactiveCocoaでしょうか

(Swift対応済みなのですね。leegunさんありがとうございます!)

前述のAlamofireObjectMapperと併用したネットワーク周りの実装に役立っています

また、値監視をしてMVVMモデルを実装したり、用途は様々でとても便利です

:tada: TIPS: RxSwift + MVVMモデルのサンプルあります


Data Base


realm/realm-cocoa (RealmSwift)

簡単にアプリ内でデータベースを実装できます

前述のObjectMapperとの併用も便利です

:tada: TIPS: 公式サイトやドキュメントも整備されているので◎


Date


malcommac/SwiftDate

NSDateの面倒な扱いがぐっと楽になっていて驚きました

Before:SwiftDateなし(いつもの)


WithoutSwiftDate.swift

// 現在日時を取得

let nowDate = NSDate()

// フォーマット指定(YYYY/MM/DD HH:MM:SS)
let formatter = NSDateFormatter()
formatter.dateFormat = "YYYY/MM/DD HH:MM:SS"

print("\(formatter.stringFromDate(nowDate))") // 2016/02/35 11:02:09


After:SwiftDateあり


WithSwiftDate.swift

// 現在日時を指定フォーマット(YYYY/MM/DD HH:MM:SS)で取得

let nowDate = NSDate().toString(DateFormat.Custom("YYYY/MM/DD HH:MM:SS"))
print("\(nowDate)") // 2016/02/35 11:02:09

こんなコードも簡単にできました

let date = 5.days.fromNow // 現在から5日後のNSDataオブジェクト

let date = 4.hours.ago // 現在から4時間前のNSDataオブジェクト
let date = (5.days + 2.hours - 15.minutes).fromNow // 計算もらくらく!


Log


DaveWoodCom/XCGLogger

ログ出力用ライブラリ


おまけ


ライブラリ選定のポイント

cocoacontrolsなどで探すと、一見素敵なライブラリがたくさん見つかります

自戒を込めて、そんな中で良ライブラリと出会うために気をつけるべきことをまとめてみました


  • Starの数

  • Forkの数

  • Contributorsの数


  • Issuesを見てみる


    • バグ報告に対応しているか?

    • おかしい部分をフックしているか?




  • 更新日時


    • だいたい最終更新2monthが目安




  • バージョンが1以上か?


    • 1以下の場合、アプリのベースに関わる部分に使うのを避ける



以上です :tada:

ありがとうございました