iOSライブラリ選定チートシート


iOSアプリ開発のライブラリ選定時に、定番ライブラリが沢山乗っている記事があったら嬉しいな〜と思い、調べて書いてみました。

「他にもこんな良いライブラリがあるよ!」等ありましたら、教えていただけると嬉しいです!

  • GitHubでstarが多かったり、よく名前を耳にするライブラリを集めました
  • ライブラリ名の横にライセンス種別を記載しています。
    • 最新のライセンスではない可能性があるので導入の際は実際にリポジトリのライセンスページをご確認ください。

[2020/03/01 いくつかライブラリを追加しました]

Network

迷ったらAlamofireを使えば良いと思います

Alamofire[MIT]

  • パパっとネットワーク通信ができるライブラリ
  • Alamofireのメソッド1つでAPIが叩けるので、クセがなくとても使いやすい

APIKit[ライセンス文]

  • タイプセーフ(APIのレスポンスをModelにパースしやすい構成)なネットワーキングライブラリ
  • Modelへのパース処理もAPIKitに含まれているので、Alamofireに比べたら専用のサブクラスを定義をしなければいけないというクセがある

Moya[MIT]

  • Alamofireのラッパーライブラリ, Alamofireの処理をさらに簡略化
  • リクエスト型を定義して、Moyaのメソッドに入れればAPIの処理を全部やってくれる

JSONDecoder

Codableを使ってみて、使いにくいと思ったらSwiftyJSONやHimotokiに手を出すと良いです

Codable(Decodable)

Swiftの標準ライブラリ

  • レスポンスのJSONのkeyと同じ名前の変数を定義しておけば自動でパパッとデコードしてくれる

SwiftyJSON[MIT]

  • 使用するためのクラス定義などが必要なく、クセが少ないので初心者におすすめ

ObjectMapper[MIT]

  • デコードの独自演算子(<-)などがあって面白い

Himotoki[MIT]

  • ObjectMapperにインスパイアを受けているらしい
  • デコードの独自演算子(<|)などがこちらにもある

非同期処理

Promise

Javascript発祥の非同期処理オブジェクト。複数のライブラリが存在するが、大体の書き方はどれも同じ。
PromiseKit以外更新が止まりかけてる...

PromiseKit[MIT]

  • 一番有名
  • .then.doneを使い分ける必要あり

Hydra[MIT]

  • async/await的な書き方もできる

Promises[Apache2.0]

  • Google作
  • シンプルなPromiseって感じで好き

SwiftTask[MIT]

  • Promiseをさらに拡張した感じ
  • ガチで非同期処理やりたい人向け

Bolts[BSD]

  • 個人的にはPromiseで良いと思った
  • 「Boltsのここが良い!!」という情報求む!

RxSwift[MIT]

画像取得

URLから画像をダウンロードして表示するやつ

たくさんあるのでこちらの記事を参照: Swiftの有名画像キャッシュライブラリを比較してみた

Kingfisher[MIT]

  • アニメーション, placeholder, prefetchなど多機能で無難

Nuke[MIT]

  • 高速で良い
  • 速さを求めたり、大量に画像を表示するならこれ

データベース

Modelをアプリ内に保存しておきたい場合にデータベースライブラリを用いる事が多い。記事アプリのオフライン閲覧とかこれ。

CoreData

  • Swiftの標準ライブラリ

Realm[Apache2.0]

Linter

SwiftLint[MIT]

  • プログラムの記述方法をチェックしてくれる物
  • 変な書き方(スペースを入れていないなど)をXcode上のwarningとして表示してくれる。

Logger

ログ出力ライブラリを導入することでデバッグがしやすくなるのでおすすめ

XCGLogger[MIT]

  • シンプル
  • [info], [error], [warning]等のラベルとログが出力されたクラスと行番号を表示できる。

SwiftyBeaver[MIT]

  • ログを閲覧する専用のデスクトップアプリがあり、ログの種類でフィルターをかけたり, マーキングできたりするリッチなLogger
  • もちろんLogger単体としても使用できる

swift-log[Apache2.0]

  • Apple製ロギングライブラリ

AutoLayout

コード記述でAutoLayoutをするやつ

NSLayoutAnchor

  • 標準ライブラリ
  • 普通に使いやすい

SnapKit[MIT]

  • 昔から有名なAutoLayoutのライブラリ
  • が、ほぼ同じことができるので最近は標準ライブラリのNSLayoutAnchorで十分と言われている

TinyConstraints[MIT]

  • NSLayoutAnchorのラッパーライブラリ
  • SnapKitを使うくらいならこちらの方がいい気がする

Misc

Reachability.swift[MIT]

  • ネットワーク状態を取得できる
  • APIを叩く前にネットワーク情報を調べる事で無駄な通信を減らせる上、エラーハンドリングもやりやすくなる

PluggableAppDelegate[MIT]

  • 色々とセットアップを行うとすぐに肥大化してしまうAppDelegateを複数のクラスに分けて綺麗に書くことができる

Instantiate[MIT]

  • ViewControllerやViewへのDIをサポートするライブラリ
  • StoryboardXibからのインスタンス化もサポートされている

ReusableKit[MIT]

Table/CollectionViewのCellのregister, dequeueを以下のように簡単に行えるようにする物。


let reusableUserCell = ReusableCell<UserCell>()
collectionView.register(reusableUserCell)
collectionView.dequeue(reusableUserCell)

Cellをサブクラスのままdequeueできるので、Cellのダウンキャストの必要がなくて便利。

R.swift[MIT]


let icon = UIImage(named: "settings-icon")
let font = UIFont(name: "San Francisco", size: 42)
let color = UIColor(named: "indictator highlight")


let icon = R.image.settingsIcon()
let font = R.font.sanFrancisco(size: 42)
let color = R.color.indicatorHighlight()

といった感じで記述できるように、画像などのリソースの型を定義するコードを自動生成するライブラリ

SwiftGen[MIT]

SwiftDate[MIT]

  • 日付周りの処理を簡単にやってくれるもの

KeychainAccess[MIT]

  • ID, パスワード保存

LicensePlist[MIT]

  • 導入するだけでライセンス一覧を設定アプリ内に表示できるすごい物

アニメーション系

PKHUD[MIT]

  • AppleっぽいデザインのHUD


(Githubから引用)

lottie-ios[Apache2.0]

  • いい感じのアニメーション集


(Githubから引用)

Hero[MIT]

  • いい感じのViewControllerアニメーション
  • AppleStoreのTodayみたいな画面遷移ができる

(Githubから引用)

SkeletonView[MIT]

  • TableViewとかのロード中に出すやつ

(Githubから引用)

レイアウト系

IGListKit[MIT]

  • Insta作CollectionViewライブラリ
  • 複雑なCollectionのレイアウトでもスッキリ書く事ができる

AMScrollingNavbar[MIT]

  • スクロールするとNavigationBarが折りたたまれるやつ

(Githubから引用)

PanModal[MIT]

  • Slack作下から出てくるメニュー
  • Twitterアプリのアカウント切り替えメニューみたいなやつ


(https://www.cocoacontrols.com/controls/panmodal から引用)

SPStorkController[MIT]

  • AppleMusicのような下から出てくる画面

(Githubから引用)

TOCropViewController[MIT]

  • SNSでよくある、プロフィール用に画像を丸く切り抜く画面

(Githubから引用)

XLPagerTabStrip[MIT]

  • AndroidにあるSegmentのライブラリ

(Githubから引用)

FSPagerView[MIT]

  • スライドショーなどに使える横スクロール

(Githubから引用)

SwiftMessages[MIT]

  • 色々なアラート/トーストを表示できる

(Githubから引用)

SwiftEntry[MIT]

  • アラート, トースト, バナーなどを表示できる
  • カスタマイズ性が高い
Toasts Notes Floats Popups
Alerts Forms Rating More...

(Githubから引用)

ActiveLabel.swift[MIT]

  • Label拡張 URLとかハッシュタグとかを埋め込める


(Githubから引用)

TagListView[MIT]

  • 検索画面のタグ検索とかによくあるやつ

(Githubから引用)

Floaty[MIT]

  • 多機能フローティングボタン

(Githubから引用)