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]
- 他のライブラリと比べ規模が大きいので注意
- 詳しくはこちらの記事参照: ゼロからはじめるRxSwift(Swift4)
画像取得
URLから画像をダウンロードして表示するやつ
たくさんあるのでこちらの記事を参照: Swiftの有名画像キャッシュライブラリを比較してみた
Kingfisher[MIT]
- アニメーション, placeholder, prefetchなど多機能で無難
Nuke[MIT]
- 高速で良い
- 速さを求めたり、大量に画像を表示するならこれ
データベース
Modelをアプリ内に保存しておきたい場合にデータベースライブラリを用いる事が多い。記事アプリのオフライン閲覧とかこれ。
CoreData
- Apple産
- オープンソースではなく、ブラックボックスであることへの懸念がある
- iOS13からのSwiftUIとの結合などで継続的にアップデートしているイメージがある
Realm[Apache2.0]
- 公式ドキュメントがしっかりしてて良い
- SQLiteより軽量で高速
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をサポートするライブラリ
-
Storyboard
やXib
からのインスタンス化もサポートされている
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]
- 立ち位置は
R.swift
とほぼ同じ - どちらが良いか?は参考記事: R.swiftとSwiftGenの導入方法とどちらを採用した方がいいのか
SwiftDate[MIT]
- 日付周りの処理を簡単にやってくれるもの
KeychainAccess[MIT]
- ID, パスワード保存
LicensePlist[MIT]
- 導入するだけでライセンス一覧を設定アプリ内に表示できるすごい物
アニメーション系
PKHUD[MIT]
- AppleっぽいデザインのHUD
lottie-ios[Apache2.0]
- いい感じのアニメーション集
Hero[MIT]
- いい感じのViewControllerアニメーション
- AppleStoreのTodayみたいな画面遷移ができる
(Githubから引用)
SkeletonView[MIT]
- TableViewとかのロード中に出すやつ
(Githubから引用)
レイアウト系
IGListKit[MIT]
- Insta作CollectionViewライブラリ
- 複雑なCollectionのレイアウトでもスッキリ書く事ができる
AMScrollingNavbar[MIT]
- スクロールするとNavigationBarが折りたたまれるやつ
(Githubから引用)
PanModal[MIT]
- Slack作下から出てくるメニュー
- Twitterアプリのアカウント切り替えメニューみたいなやつ
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とかハッシュタグとかを埋め込める
TagListView[MIT]
- 検索画面のタグ検索とかによくあるやつ
(Githubから引用)
Floaty[MIT]
- 多機能フローティングボタン
(Githubから引用)