【iOS】最速でアプリ開発を行う際に使えそうなライブラリ

この記事は、[LIFULL Advent Calendar](https://qiita.com/advent-calendar/2017/lifull) 2017の22日目の記事です。

こんばんわ。皆さんはアプリ開発を行う際に、メインの実装以外にアニメーションを入れたり、
アラートを出したり、ちょっとした実装が面倒だと思ったことはないでしょうか。
意外と時間がかかったり、ハマったりするかもしれません。

今回は、少しでも楽に開発が進むようなライブラリを紹介したいと思います。

### 選定基準
・Starがある程度ついている
・更新がされている
・Usageがわかりやすい


## [Shimmer](https://github.com/facebook/Shimmer)
facebookでの読み込みの際に使われているものです
手軽にtableViewでのローディングが実装できます

![Shimmer](https://raw.githubusercontent.com/facebook/Shimmer/master/shimmer.gif "")

## [XLActionController](https://github.com/xmartlabs/XLActionController)
アニメーション付きでactionControllerを表示してくれます
細かく設定ができますので自由度は高いです

![XLActionController](https://raw.githubusercontent.com/xmartlabs/XLActionController/master/Media/demo_spotify.gif "")
![XLActionController](https://raw.githubusercontent.com/xmartlabs/XLActionController/master/Media/demo_twitter.gif "")

## [IQKeyboardManager](https://github.com/hackiftekhar/IQKeyboardManager)
textFieldやtextViewなどキーボードで隠れないように自動で行ってくれます

縦画面でも横画面でも対応しています
これStar数すごいですね。
これは地味に対応しないといけない場面が多いので是非とも入れておきたいです

## [Spring](https://github.com/MengTo/Spring)
これも有名ですね。

自前で実装するとなると面倒なちょっとしたアニメーションが簡単に実装できます
デモアプリで試して見てから好きなアニメーションを使ってください
![Spring](https://camo.githubusercontent.com/301f360304b089f40989a870ff3c04572054e288/687474703a2f2f636c2e6c792f696d6167652f316e3145326a3357337932342f737072696e6773637265656e2e6a7067 "")

## [Chameleon](https://github.com/ViccAlexander/Chameleon)
個人開発などでは意外と配色に困ったりする場面ってありますよね？
フラットカラーやカラースキーム、色の抽出、１行でテーマを設定する、グラデーションなど、
色に関することなら大抵これで解決できると思います

![Chameleon](https://camo.githubusercontent.com/747d1a53ed34124c5ab7fb9007f4ccda8da37398/687474703a2f2f692e696d6775722e636f6d2f776b4747576b4e2e706e67 "")
![Chameleon](https://camo.githubusercontent.com/d4d441c0729475dd35e969b3577a64dac85806e5/687474703a2f2f7332392e706f7374696d672e6f72672f693173796437626b6e2f436f6e74726173742e676966 "")

## [SwiftDate](htthttps://github.com/ashleymills/Reachability.swiftp://malcommac.github.io/SwiftDate/)
Date系の面倒な処理を手軽に扱えます
例えば、指定した日付が今日かどうかの判定や、演算子で日付の計算もできちゃいます
詳しい実装は[こちら](http://malcommac.github.io/SwiftDate/)

## [Reachability.swift](https://github.com/ashleymills/Reachability.swift)
通信状態を管理してくれます
ネットワーク状況を調べたり、接続が切れた際の処理など簡単に実装できます

## [UIImageColors](https://github.com/jathu/UIImageColors)
画像からイメージカラーを抽出してくれます

![UIImageColors](https://raw.githubusercontent.com/jathu/UIImageColors/master/preview.png "")

## [Charts](https://github.com/danielgindi/Charts)
グラフ系の鉄板ライブラリ

![Chats](https://camo.githubusercontent.com/4e85ee91169c2ad5dc500b3b415a0c974766615d/68747470733a2f2f7261772e6769746875622e636f6d2f5068696c4a61792f4d5043686172742f6d61737465722f73637265656e73686f74732f63756269636c696e6563686172742e706e67 "")
![Chats](https://camo.githubusercontent.com/7e8a4a3c938c21d032d44d999edd781b6e146f2a/68747470733a2f2f7261772e6769746875622e636f6d2f5068696c4a61792f4d50416e64726f696443686172742f6d61737465722f73637265656e73686f74732f73696d706c6564657369676e5f7069656368617274312e706e67 "")

## [ScrollableGraphView](https://github.com/philackm/ScrollableGraphView)
これもグラフでおすすめ
おしゃれなアニメーション付きのグラフが作成できます

![ScrollableGraphView](https://raw.githubusercontent.com/philackm/ScrollableGraphView/master/readme_images/IMG_5814_small.jpg "")
![ScrollableGraphView](https://raw.githubusercontent.com/philackm/ScrollableGraphView/master/readme_images/animating.gif "")

## [Device](https://github.com/Ekhoo/Device)
デバイスの管理系ライブラリです
画面サイズやどの機種か分かります

## [ALCameraViewController](https://github.com/AlexLittlejohn/ALCameraViewController)
カメラを手軽に扱えるライブラリです
クリッピングや一覧表示などできます

![ALCameraViewController](https://cloud.githubusercontent.com/assets/932822/8455697/c627ac44-2006-11e5-82be-7f96e73d9b1f.jpg "")
![ALCameraViewController](https://cloud.githubusercontent.com/assets/932822/8455695/c620ebb6-2006-11e5-9c61-75a81870c9de.jpg "")

## まとめ
今回紹介したライブラリは基本的にUIと直接紐づいているようなものを中心にチョイスしてみました。

選定基準にも書いてありますが、基本的にライブラリを導入する際は、定期的に更新がされているものを前提に選ぶと良いでしょう。Swift言語のバージョンアップなどに対応していないと後々の運用保守が面倒になるからです。

アプリを作る際に参考になれば幸いです。