post Image
【Swift4】iOSアプリ開発で使える(使いたい)Swiftライブラリー

iOSアプリ開発で(自分が)使えるなあ、使いたいなあと思ったライブラリーをリストアップします。Swiftのみとして、Objective-Cは載せていません。

Reactive Extensions

RxSwift

RxはReactive Extensionsの略です。もともとはC#が発祥ですが、javaを始めとしてswiftにも実装されています。swiftには独自の拡張として、RxCocoaがあり、iOSのUIKitをReactive Extensionsのパーツとして使うことができます。

自分勝手な視点ですが利点をあげると、

  1. View(UIView/UIViewController)の制御を非同期に記述することが容易。
  2. それによってViewを別のレイヤー(ViewModel/Modelなど)から容易に分離することができる。

RxSwiftがなぜ有用と考えるのかの自分なりの考察をこちらにアップしました。
iOSアプリの基本設計を考える:疎結合の概念から構造化、MVVM、RxSwiftまで

非同期処理

非同期処理ライブラリーです。
実はRxSwiftでも同様の記述は実現できるのですが、あえてここで上げてみました。
利点は単純です。

  1. 非同期の処理を綺麗に書けること。

例えば非同期の処理をネストしないでシリアルに記述できたり、平行動作している非同期の処理をJoinできたりもします。機能ではなく記述であると言ってしまっても良いかもしれません。
これは標準でSwiftに言語として取り込んで欲しい気がします。BrightFuturesの開発者はSwiftに取り込んで欲しいという講演もしています。Youtube参照

PromiseKit

BrightFutures

Bolts-Swift

SwiftTask

ネットワーク通信

Alamofire

定番です。ただ高機能すぎるかもしれません。

APIKit

APIKitは日本の方が開発されたシンプルで綺麗なコードが書けるネットワークライブラリーです。

ネットワークの接続監視

Reachability.swift

Objective-CではApple製のReachabilityが標準ですが、言語をSwiftで統一したい場合はこちらを。

参考例をこちらの記事で書いています。
iOSアプリの基本設計を考える:疎結合の概念から構造化、MVVM、RxSwiftまで

デコーダ

ObjectMapper

定番です。

Himotoki

Himotokiは、軽量、タイプセーフなJSONデコーダです。日本の方が開発されており、同じく日本初のAPIKitと組み合わせて利用すされるケースも散見されます。自分も結構この組み合わせは好きです。

Codable

CodableはSwift標準機能であり、シンプルに記述できてとても良いです。このCodableの構造体を出力するmac用のアプリケーションがありますのでこちらをご覧ください。
(※デコーダ=>正確に言うとHTTPレスポンスのデコーダですね)

リソースの定義

Rswift

ソースコードの文字列を始めとするリソースの定義をstructを使って自動的にリストアップしてくれます。

例えば

Swift
let icon = UIImage(named: "settings-icon")
let font = UIFont(name: "San Francisco", size: 42)
let color = UIColor(named: "indictator highlight")
let viewController = CustomViewController(nibName: "CustomView", bundle: nil)
let string = String(format: NSLocalizedString("welcome.withName", comment: ""), locale: NSLocale.current, "Arthur Dent")

Swift
let icon = R.image.settingsIcon()
let font = R.font.sanFrancisco(size: 42)
let color = R.color.indicatorHighlight()
let viewController = CustomViewController(nib: R.nib.customView)
let string = R.string.localizable.welcomeWithName("Arthur Dent")

と書くことができるようになります。(https://github.com/mac-cain13/R.swiftより引用)

アニメーション

fluid-interfaces

WWDC 2018のセッション”Designing Fluid Interfaces”の述べられたジェスチャーベースのデザイン理論に基づいて?作成されたらしいです。
fluid-interfaces

lottie-ios

まだ使ったことが無いのですが、楽しそうです。
lottie-ios
https://github.com/airbnb/lottie-iosより引用

Hero

トランジション・アニメーション集
Hero
Hero2

LTMorphingLabel

UILabelのアニメーション
LTMorphingLabel

Side Menu

ちょっと真似たいメニュー
Side Menu

Gemini

写真を扱うときは使ってみたい
Gemini

NVActivityIndicatorView


NVActivityIndicatorViewは最近人気があるようです。
シンプルかつバリエーションがあっていい感じです。

NVActivityIndicatorView

インジケータ

PKHUD

ネットワークのレスポンス待ちなどで表示するプログレス・インジケータ。軽量。

PKHUD

GradientCircularProgress

これも綺麗で好きです。

スクリーンショット 2017-12-09 20.53.14.png

データベース

Realm Swift

データベースのコードを簡単に、簡潔に記述できる優れものです!
アプリ自身がデータベースを持っており、サーバ側のデータベースと同期できるために、オフライン状態でもアプリが動作することがっで来ます。
リレーションも使えます。

Swift
class Dog: Object {
  dynamic var name = ""
  dynamic var age = 0
}

// デフォルトRealmを取得します
let realm = try! Realm()

let myDog = Dog()
myDog.name = "Rex"
myDog.age = 1

// データを永続化するのはとても簡単です
try! realm.write {
  realm.add(myDog)
}

コードは一部こちらより拝借いたしました。

課金

SwiftyStoreKit
課金プログラミングは結構複雑な上に失敗できない(他もダメですけど)のでコレ

グラフ

Graphs

リクルート発のシンプル軽量なグラフ作成ライブラリー

Date

SwiftDate

Dateはミスしやすいので重宝します。

画像取得

Kingfisher

URLを指定してネットワーク上の画像を取得できます。

UserDefaults

DefaultsKit

Codableプロトコルを利用し構造体もUserDefaultsを使ってそのまま読み書きできます。
若干記述が長い気もしますが、UserDefaultsを直接使うよりははるかにマシです。


『 Swift 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。