【Swift】カテゴリ別ライブラリ一覧（個人メモ）

# はじめに
普段iOSアプリ開発をする時にライブラリをよく使っていて、いいなと思ったものをGitHubでスター付けたりブックマークに保存したりしてたのですが、如何せん数が多くなってきたので整理しようというモチベーションでこの記事を書いてます。まだ使ったことないものも含まれてます。随時更新して行こうかなと思っております。

普段ここら辺からライブラリを見つけてます。
- [iOS Cookies](https://ioscookies.com/)
- [iOS Goodies](https://ios-goodies.com/)
- [iOS Dev Weekly](https://iosdevweekly.com/)
- [GitHub](https://github.com/)

## 環境
Xcode 10.2
Swift 5.0（一部4.2）

# Architecture

### [ReactorKit](https://github.com/ReactorKit/ReactorKit)
`View`, `Reactor`というprotocol を提供していて、それに従うだけで単方向ストリームの綺麗なアーキテクチャが構成できます。僕はほとんどのアプリでこれを採用していています。

<img src="https://cloud.githubusercontent.com/assets/931655/25073432/a91c1688-2321-11e7-8f04-bf91031a09dd.png">

### [Prex](https://github.com/marty-suzuki/Prex)
`Flux`と`MVP`を組み合わせたアーキテクチャを提供しています。

<img src="https://raw.githubusercontent.com/marty-suzuki/Prex/master/Images/data-flow.png">

# Network

### [Moya](https://github.com/Moya/Moya)
Alamofireのラッパーという認識。今まで自分でAlamofireのラッパーを頑張って書いてたのがアホらしくなりました。`RxSwift`に対応しているのが嬉しい。

### [Kingfisher](https://github.com/onevcat/Kingfisher)
URLから画像取得に使うやつ。

# View

### [SnapKit](https://github.com/SnapKit/SnapKit)
AutoLayout。これがなきゃ始まんない。

### [IGListKit](https://github.com/Instagram/IGListKit)
Instagramが提供する、高速で柔軟なリストを`UICollectionView`で実現するためのライブラリ。

### [Eureka](https://github.com/xmartlabs/Eureka/)
<img src="https://raw.githubusercontent.com/xmartlabs/Eureka/master/Example/Media/EurekaExample1.gif"><img src="https://raw.githubusercontent.com/xmartlabs/Eureka/master/Example/Media/EurekaExample2.gif"><img src="https://raw.githubusercontent.com/xmartlabs/Eureka/master/Example/Media/EurekaExample3.gif">

### [SideMenu](https://github.com/jonkykong/SideMenu)
<img src="https://raw.githubusercontent.com/jonkykong/SideMenu/master/etc/SlideOut.gif">

### [NextGrowingTextView](https://github.com/muukii/NextGrowingTextView)
![sample1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266157/5706c0ea-78ab-9f63-85c8-ee0465814ff2.gif)


### [UITextView-Placeholder](https://github.com/devxoul/UITextView-Placeholder)
`UITextView`にplaceholderを拡張してくれる。

### [ActiveLabel](https://github.com/optonaut/ActiveLabel.swift)
<img src="https://raw.githubusercontent.com/optonaut/ActiveLabel.swift/master/ActiveLabelDemo/demo.gif">

### [TagListView](https://github.com/ElaWorkshop/TagListView)
<img src="https://raw.githubusercontent.com/ElaWorkshop/TagListView/master/Screenshots/Screenshot.png">

### [YPImagePicker](https://github.com/Yummypets/YPImagePicker)
<img src="https://raw.githubusercontent.com/Yummypets/YPImagePicker/master/Images/library.PNG">

### [PopupDialog](https://github.com/Orderella/PopupDialog)
<img src="https://raw.githubusercontent.com/Orderella/PopupDialog/master/Assets/PopupDialog01.gif"><img src="https://raw.githubusercontent.com/Orderella/PopupDialog/master/Assets/PopupDialog03.gif">

### [TransitionableTab](https://github.com/Interactive-Studio/TransitionableTab)
![move.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266157/c82aed0c-1279-a89a-f2b4-1ce63ccdcc9e.gif)


### [FloatingPanel](https://github.com/SCENEE/FloatingPanel)
<img src="https://raw.githubusercontent.com/SCENEE/FloatingPanel/master/assets/maps.gif">

### [UPCarouselFlowLayout](https://github.com/ink-spot/UPCarouselFlowLayout)
<img src="https://raw.githubusercontent.com/ink-spot/UPCarouselFlowLayout/master/images/demo.gif">

### [ImageViewer](https://github.com/Krisiacik/ImageViewer)
![single.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266157/e70022d7-90fa-7127-3afe-57cb669c9d66.gif)

### [Nantes](https://github.com/instacart/Nantes)
強化版UILabel。旧TTTAttributedLabel。

### [PanModal](https://github.com/slackhq/PanModal)
Slackアプリの下からニョキって出てくるSemi-Modal。

### [Loaf](https://github.com/schmidyy/Loaf)
<img src="https://user-images.githubusercontent.com/22358682/53534239-f71a9f80-3acb-11e9-8010-c7915012a187.gif">

### [Gallery](https://github.com/hyperoslo/Gallery)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266157/5bbf66cc-d1a3-fc78-02ec-9322cad1a839.png)

### [JTAppleCalendar](https://github.com/patchthecode/JTAppleCalendar)
<img src="https://cloud.githubusercontent.com/assets/2439146/20638185/d708d542-b353-11e6-8119-fa36c11b66cb.gif">

### [smooth-scroll](https://github.com/Cuberto/smooth-scroll)
<img src="https://raw.githubusercontent.com/Cuberto/smooth-scroll/master/Screenshots/animation.gif">

### [Pixel](https://github.com/muukii/Pixel)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266157/58e0aae0-cfb7-277c-6955-5c2586b53e3d.png)

### [RichTextView](https://github.com/tophat/RichTextView)
LaTeX, HTML, Markdown, YouTube/Vimeo Linksに対応したTextView。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266157/4d98b4d7-4137-783f-5037-8abed2de1983.png)


### [WeScan](https://github.com/WeTransfer/WeScan)
![WeScan.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266157/0fe7170a-c9e4-f74e-0ca3-a330717848b5.gif)

### [HGCircularSlider](https://github.com/HamzaGhazouani/HGCircularSlider)
<img src="https://raw.githubusercontent.com/HamzaGhazouani/HGCircularSlider/master/Screenshots/Bedtime.gif"><img src="https://raw.githubusercontent.com/HamzaGhazouani/HGCircularSlider/master/Screenshots/OClock.gif">

### [Charts](https://github.com/danielgindi/Charts)
<img src="https://camo.githubusercontent.com/78b4bc4e50e151970961daf56e81c4c0db72d27c/68747470733a2f2f7261772e6769746875622e636f6d2f5068696c4a61792f4d5043686172742f6d61737465722f73637265656e73686f74732f73696d706c6564657369676e5f6261726368617274332e706e67">

### [SwiftCharts](https://github.com/i-schuetz/SwiftCharts)
<img src="https://raw.githubusercontent.com/i-schuetz/SwiftCharts/master/Screenshots/IMG_1328.PNG">

### [FSPagerView](https://github.com/WenchaoD/FSPagerView?)
<img src="https://cloud.githubusercontent.com/assets/5186464/22688057/9003d880-ed65-11e6-882e-4587c97c8878.gif">

### [XLPagerTabStrip](https://github.com/xmartlabs/XLPagerTabStrip)
<img src="https://raw.githubusercontent.com/xmartlabs/XLPagerTabStrip/master/Example/youtube.gif">

### [TOCropViewController](https://github.com/TimOliver/TOCropViewController)
画像のトリミング・回転・拡大縮小などの操作を行える。

### [SkyFloatingLabelTextField](https://github.com/Skyscanner/SkyFloatingLabelTextField)
<img src="https://raw.githubusercontent.com/Skyscanner/SkyFloatingLabelTextField/master/SkyFloatingLabelTextField/images/showcase-example.gif">

# Utility

### [Chameleon](https://github.com/viccalexander/Chameleon)
色に関することならなんでもお任せって感じのすごいやつ。

### [Then](https://github.com/devxoul/Then)
initializerのsyntactic sugar。
いつものこれが、

```swift
let label: UILabel = {
  let label = UILabel()
  label.textAlignment = .center
  label.textColor = .black
  label.text = "Hello, World!"
  return label
}()
```

こうなります。

```swift
let label = UILabel().then {
  $0.textAlignment = .center
  $0.textColor = .black
  $0.text = "Hello, World!"
}
```

### [RxGesture](https://github.com/RxSwiftCommunity/RxGesture)
Gestureに関するRx拡張を提供。

### [RxKeyboard](https://github.com/RxSwiftCommunity/RxKeyboard)
キーボードに関するRx拡張を提供。

### [RxViewController](https://github.com/devxoul/RxViewController)
`UIViewController`のライフサイクルに関するRx拡張を提供。

### [RxDataSources](https://github.com/RxSwiftCommunity/RxDataSources)
`UITableView`と`UICollectionView`のdataSourceを提供。

### [ReusableKit](https://github.com/devxoul/ReusableKit)
`UITableView`と`UICollectionView`の再利用の部分を簡潔に書けるようになります。

### [SwiftyStoreKit](https://github.com/bizz84/SwiftyStoreKit)
In App Purchasesに関する便利なライブラリ。

### [Siren](https://github.com/ArtSabintsev/Siren)
強制アップデートを簡単に実装できる。

### [SwiftLocation](https://github.com/malcommac/SwiftLocation)
位置情報を簡単に扱うためのライブラリ。

### [Dismissable](https://github.com/younatics/Dismissable)
プルダウンで`dismiss`できるようになります。
<img src="https://raw.githubusercontent.com/younatics/Dismissable/master/image/Dismissable.gif">

### [SlackKit](https://github.com/pvzig/SlackKit)
SlackAPIのラッパーって感じ。

### [Ballcap-iOS](https://github.com/1amageek/Ballcap-iOS)
Cloud Firestoreをいい感じに扱えるようにしてくれる。

# Tool

### [SwiftLint](https://github.com/realm/SwiftLint)
Linter。SwiftLint標準のものに加え、独自のルールも追加できるので、チーム内の約束事をこれで強制したりもできます。

### [SwiftFormat](https://github.com/nicklockwood/SwiftFormat)
Formatter。ビルド時にインデントや改行など諸々のフォーマットを揃えてくれる。共同開発時によく用います。

### [Wormholy](https://github.com/pmusolino/Wormholy)
ネットワークのログが詳細に見れる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266157/c7816ebe-3668-2446-2cb4-be7c8728f2ce.png)

# おわりに
説明雑なのですが自分のメモ用なのでご了承ください。
こんな便利なライブラリありますよーっていうの大歓迎なのでぜひぜひ教えてください。