AbemaTV (iOS) で使われているライブラリをまとめてみた

近頃よく聞く [AbemaTV](https://itunes.apple.com/jp/app/abematv/id1074866833?mt=8) をインストールしてみたら使い心地が良かったので、使われているライブラリを自分用にまとめてみた。

* 英語/技術の理解が微妙なので間違いあったら教えてください
* 本記事中のサンプルコード/gifは全てリンク先のものです


#UI 系

##[AttributedLabel](https://github.com/KyoheiG3/AttributedLabel)
使いやすく(UILabel より) 早い Labelっぽい。
デモを見る限りテキストの alignment が便利そう。

![](https://raw.githubusercontent.com/KyoheiG3/assets/master/AttributedLabel/customize.gif)

##[Cartography](https://github.com/robb/Cartography)
AutoLayout 用ライブラリ。
同様のライブラリとして [SwiftAutoLayout](https://github.com/indragiek/SwiftAutoLayout) というのもあるみたい。

##[Cheetah](https://github.com/suguru/Cheetah)
アニメーション用ライブラリ。
必要な記述が短く直感的。

```swift
// Move to 100px right
box.cheetah.move(100, 0).run()
```
![](https://camo.githubusercontent.com/05f5f57c94bbfe11b94a0b44f972d3b2d492ae0d/68747470733a2f2f7375677572752e6769746875622e696f2f436865657461682f696d616765732f73696d706c655f6d6f76652e676966)


##[ColorAdjuster](https://github.com/ikemai/ColorAdjuster)
HBS, RGB とグラデーションの色指定が簡単にできそう。
特にグラデーションは普通どうやるんだろう。

![](https://raw.githubusercontent.com/ikemai/assets/master/ColorAdjuster/colorGradationdemo.gif)

##[NavigationNotice](https://github.com/KyoheiG3/NavigationNotice)
上から出る通知。上にシュッてやって引っ込める。

![](https://github.com/KyoheiG3/assets/raw/master/NavigationNotice/notice.gif)

##[SpringIndicator](https://github.com/KyoheiG3/SpringIndicator)
マテリアルデザインな indicator。
PullToRefresh (引っ張って更新)にも使える。

![](https://github.com/KyoheiG3/assets/raw/master/SpringIndicator/refresher.gif)

##InfiniteView

@cjwirth 氏から [コメント](http://qiita.com/taiju59/items/db1f0e4432ea4a983430#comment-786211351224304b9df1)で情報いただきました:ok_woman:
>これは、https://github.com/KyoheiG3/PagingView の進化したバージョンです。
同じコンテンツをループで表示させます。

#便利/操作系

##[CryptoSwift](https://github.com/krzyzanowskim/CryptoSwift)
Swift で暗号化...?(知識不足)

* [CryptoSwiftでAES暗号 (AES-256-CBC)](http://tiny-wing.hatenablog.com/entry/2015/11/19/110115)

##[Device](https://github.com/Ekhoo/Device)
デバイスの種類とスクリーンサイズを簡潔な記述で取得。

##[KeyChainAccess](https://github.com/kishikawakatsumi/KeychainAccess)
Kishikawa Katsumi 氏による KeyChain を扱うためのライブラリ。
Touch ID も使える。

* [SwiftでKeychainを簡単に使うライブラリ "KeychainAccess" を書きました](http://blog.kishikawakatsumi.com/entry/2015/01/03/082916)

##[Siren](https://github.com/ArtSabintsev/Siren)
アプリの新しいバージョンが出たら通知して AppStore へ促す。

##[SwiftDate](https://github.com/malcommac/SwiftDate)
NSDate の取得/計算/判定を簡単にするライブラリ。

```swift
// Create a date at 14:00 on XMas Day
let date2 = NSDate(year: 2015, month: 12, day: 25, hour: 14)
```

* [SwiftのNSDate拡張ライブラリ、SwiftDateを使ってみる](http://llcc.hatenablog.com/entry/2015/09/21/235238)

#通信系

##[Kingfisher](https://github.com/onevcat/Kingfisher)
画像キャッシュライブラリ。
SDWebImage は聞いたことあるけど 他にも Kingfisher 含め [Haneke](https://github.com/Haneke/Haneke), [HanekeSwift](https://github.com/Haneke/HanekeSwift) などあるらしい。

* [イメージキャッシュライブラリのHanekeを使ってみた](http://qiita.com/shushutochako/items/4c7bd7baf1236afcfd09)

##[ReachabilitySwift](https://github.com/ashleymills/Reachability.swift)
Apple 公式の通信ライブラリ Reachability に代わるもの

##[ProtocolBuffers-Swift](https://github.com/alexeyxo/protobuf-swift)
@cjwirth 氏から [コメント](http://qiita.com/taiju59/items/db1f0e4432ea4a983430#comment-786211351224304b9df1)で情報いただきました:ok_woman:
>3.0.0 のタグを使っています。
iOSアプリはよく、通信してJSONデータを送ったり、受けたりしますよね？
AbemaTVは JSON じゃなくて、 Protocol Buffers を使っています。


#分析系

##[Crashlytics](https://try.crashlytics.com)

* [[Fabric] Crashlytics 入門 #1 まずは導入してみよう](http://dev.classmethod.jp/smartphone/ios-fabric-crashlytics-install/)

(上記記事より)
>Crashlytics とは、モバイルアプリのクラッシュ統計サービスです。iOS アプリや Android アプリに導入することでクラッシュレポートを収集することができます。

##[Fabric](https://get.fabric.io)

Twitter 社製の、アプリの配布/テストなどを自動化するためのツール。
上に書いた Crashlytics も Fabric の一部になるのかな？ 
(Android でも使える)

##[GoogleAnalytics](https://www.google.com/intl/ja/analytics/), [GoogleTagManager](https://www.google.com/intl/ja/tagmanager/)

割愛。


##[Growthbeat](https://growthbeat.com)

>グロースハックの実現をサポート. ユーザーの獲得、活性化、継続、紹介、収益の全てのフェーズを支援するツール群『Growthbeat』

サイバーエージェント関連会社(?)のシロク社製。

## [Quick](https://github.com/Quick/Quick) / [Nimble](https://github.com/Quick/Nimble)

@cjwirth 氏から [コメント](http://qiita.com/taiju59/items/db1f0e4432ea4a983430#comment-786211351224304b9df1)で情報いただきました:ok_woman:
>あと、テストのため、[Quick](https://github.com/Quick/Quick) / [Nimble](https://github.com/Quick/Nimble) を使っていますが、それはもちろんリリースビルドに入りませんね！

テスト用のフレームワークらしいけど正直テストのことはよく分からない。
Quick と Nimble はそれぞれ別のリポジトリだけど、Quick は Nimble と一緒に使うものみたい。
作者は同じ [modo cache](https://github.com/modocache) 。

#その他

##[NSObject-Rx](https://github.com/RxSwiftCommunity/NSObject-Rx), [RxCocoa](https://github.com/ReactiveX/RxSwift/tree/master/RxCocoa), [RxSwift](https://github.com/ReactiveX/RxSwift)
リアクティブプログラミングをするための Rx シリーズの仲間たち。
やってみたいけど手を出せていない...!

##[SQlite.swift](https://github.com/stephencelis/SQLite.swift)

割愛。

##[Swifter](https://github.com/mattdonnelly/Swifter)
Swift で書かれた Twitter framework らしい。
これがあると結局何ができるんだろう...

* [Swiftで書かれたTwitterライブラリ「Swifter」](http://www.softantenna.com/wp/mac/swifter/)

@cjwirth 氏から [コメント](http://qiita.com/taiju59/items/db1f0e4432ea4a983430#comment-786211351224304b9df1)で情報いただきました:ok_woman:
>メインのリポジトリでは CocoaPods対応していないので、私の[fork](https://github.com/cjwirth/Swifter) を使っています。
[プルリク](https://github.com/mattdonnelly/Swifter/pull/132) は結構前から送っていますが、なかなかマージしてくれないですw 😅