248
277

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2019-05-20

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

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

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

[2020/03/01 いくつかライブラリを追加しました]
[2023/05/16 古い情報を修正しました]

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)

Fondationに入っている

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

SwiftyJSON[MIT]

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

ObjectMapper[MIT]

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

Himotoki[MIT]

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

非同期処理

Swift Concurrency

Swift5.5でSwiftにasync awaitが導入されました。基本的にはこちらを採用すると良いと思います。
参考記事: Swift Concurrency チートシート

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

  • Apple産
  • オープンソースではなく、ブラックボックスであることへの懸念がある
  • iOS13からのSwiftUIとの結合などで継続的にアップデートしているイメージがある

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をするやつ

NSLayoutConstraint

  • UIKitに入っている
  • 普通に使いやすい

SnapKit[MIT]

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

TinyConstraints[MIT]

  • NSLayoutConstraintのラッパーライブラリ
  • 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
toasts_example notes_example floats_example popup_example
Alerts Forms Rating More...
alert_example form_example rating_example custom_example

(Githubから引用)

ActiveLabel.swift[MIT]

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


(Githubから引用)

TagListView[MIT]

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

(Githubから引用)

Floaty[MIT]

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

(Githubから引用)

248
277
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
248
277

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?