iOS 開発で使いたいライブラリまとめ(2016/02)


iOS関連のライブラリまとめ記事をたまにみかけますが最近はどうなんだろうと思ったので[iOS Cookies](http://www.ioscookies.com/)からよさそうなのをまとめてみました。

# Database

## Realm

もう定番の Realm。データ永続化するならとりあえずこれ、という感じでしょうか。

https://github.com/realm/realm-cocoa

導入記事はこちら[[Realm Swift](https://realm.io/jp/docs/swift/latest/)]。

## SQLite.swift

SQLite を使いたい時はこちら。
https://github.com/stephencelis/SQLite.swift


# WalkThrough, CoachMark

## Presentation

初回起動時に表示するウォークスルー。ユーザーにアプリの説明をするのに使用します。初回しか表示しませんが重要な部分ですね。

https://github.com/hyperoslo/Presentation

![](https://raw.githubusercontent.com/hyperoslo/Presentation/master/Example/Parallax/Images/Parallax-v2.gif)

# RazzleDazzle

こちらも同じくウォークスルーライブラリ。アニメーションを細かく指定できるのが特徴。IFTTT製。

https://github.com/IFTTT/RazzleDazzle

![](https://raw.githubusercontent.com/IFTTT/RazzleDazzle/master/Example/Docs/razzledazzle-demo.gif)

## Instructions

セリフ付きで説明できるライブラリ。
https://github.com/ephread/Instructions

![](https://camo.githubusercontent.com/072ef03302b2ba16605c71f8e5e7a19bb700e149/687474703a2f2f692e696d6775722e636f6d2f4a556c514839462e676966)

## Gecco

ハイライトする形で説明を表示するライブラリ。
https://github.com/yukiasai/Gecco

![](https://cloud.githubusercontent.com/assets/6880730/12470510/2d1cb602-c038-11e5-8095-a2a0d77f99db.gif)

# Form

##

独自の記法でフォームを生成してくれるライブラリ。
https://github.com/xmartlabs/Eureka

![](https://raw.githubusercontent.com/xmartlabs/Eureka/master/Example/Media/EurekaNavigation.gif)


こんな風に書いていくようです。設定画面とかに使うのが便利かも。

```
override func viewDidLoad() {
        super.viewDidLoad()
        form +++ Section("Custom cells")
                    <<< WeekDayRow(){
                        $0.value = [.Monday, .Wednesday, .Friday]
                    }
                    <<< TextFloatLabelRow() {
                        $0.title = "Float Label Row, type something to see.."
                    }
    }
```


# Alert

## SweetAlert-iOS

アニメーション付きで表示されるアラート。

https://github.com/codestergit/SweetAlert-iOS

![](https://raw.githubusercontent.com/codestergit/SweetAlert-iOS/master/SweetAlertiOS.gif)

# Progress

## FillableLoaders

こちらもアニメーション付き。プログレス表示用ダイアログ。
https://github.com/poolqf/FillableLoaders

![](https://raw.githubusercontent.com/poolqf/FillableLoaders/master/Images/progress.gif)


# Image

## Kingfisher

[SDWebImage](https://github.com/rs/SDWebImage)にインスパイアされた画像のダウンロード、キャッシュライブラリ。
https://github.com/onevcat/Kingfisher

## Toucan

クロップやマスクなど画像処理を行うライブラリ。

https://github.com/gavinbunney/Toucan

# Permission

## PermissionScope

通知やマイク、カメラなどの権限管理をしてくれるライブラリ。各自でやっていた部分だと思いますがこれに任せると便利です。

https://github.com/nickoneill/PermissionScope

# Color

色のセンスのない僕のようなエンジニアを助けてくれるライブラリ群。

## Chameleon

https://github.com/ViccAlexander/Chameleon

## Hue

UIColor の指定を'#FFFFFF' のような16進数ができるライブラリ。

https://github.com/hyperoslo/Hue

# AutoLayout

## SnapKit

AutoLayout をコードで完結に記述的できるライブラリ。入れておきたい。

https://github.com/SnapKit/SnapKit

```
lazy var box = UIView()

    override func viewDidLoad() {
        super.viewDidLoad()

        self.view.addSubview(box)
        box.snp_makeConstraints { (make) -> Void in
           make.width.height.equalTo(50)
           make.center.equalTo(self.view)
        }
    }
```

# Chart

## ios-charts

きれいなチャートを描くライブラリ。

https://github.com/danielgindi/ios-charts

いろんなグラフが描けるようです。

![](https://camo.githubusercontent.com/e29d8d3316203700965cc6cc56e67b779f2845bb/68747470733a2f2f7261772e6769746875622e636f6d2f5068696c4a61792f4d5043686172742f6d61737465722f73637265656e73686f74732f636f6d62696e65645f63686172742e706e67)

他にもたくさん描けるみたいです。詳細気になる方はリンク先へ。

# Test

## Quick

RSpec 等にインスパイアされているテストフレームワーク。
https://github.com/Quick/Quick/

RSpec のように context, describe, it などを使ってテストを記述します。

```
class TableOfContentsSpec: QuickSpec {
  override func spec() {
    describe("the 'Documentation' directory") {
      it("has everything you need to get started") {
        let sections = Directory("Documentation").sections
        expect(sections).to(contain("Organized Tests with Quick Examples and Example Groups"))
        expect(sections).to(contain("Installing Quick"))
      }

      context("if it doesn't have what you're looking for") {
        it("needs to be updated") {
          let you = You(awesome: true)
          expect{you.submittedAnIssue}.toEventually(beTruthy())
        }
      }
    }
  }
}
```

Quick は[日本語ドキュメント](https://github.com/Quick/Quick/tree/master/Documentation/ja)も充実。

## Nimble

テストの時に使う Matcher のフレームワーク。単独もでも使えるし、Quick などと併用するとより便利に。

https://github.com/Quick/Nimble

下記のように expect を使って期待する動作を記述します。

```
expect(1 + 1).to(equal(2))
expect(1.2).to(beCloseTo(1.1, within: 0.1))
expect(3) > 2
expect("seahorse").to(contain("sea"))
expect(["Atlantic", "Pacific"]).toNot(contain("Mississippi"))
expect(ocean.isClean).toEventually(beTruthy())
```