Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
190
Help us understand the problem. What is going on with this article?

More than 5 years have passed since last update.

@mesummery

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

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:
ありがとうございました

190
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
190
Help us understand the problem. What is going on with this article?