使える or 使ってみたいSwiftライブラリ 2020春期

iOS開発

iOSアプリエンジニアにとって欠かせないルーチンの一つに「使えるライブラリのリサーチ」があるのではないでしょうか。

ライブラリに依存しすぎるのも良くないですが、上手く使いこなすと実装コストを大幅に削減でき1人月で開発できる機能レベルを向上することもできます。

今回は、Github Trending Repositoriesからリサーチした使えそうなライブラリ&フレームワークをまとめてみました。

Networking系

Alamofire

AlamofireはHTTP通信を行うライブラリです。iOSには標準でNSURLSessionが用意されていますが, Alamofireを使うと簡潔にHTTPリクエストを記述することができます。サーバーサイドとRESTful APIで通信を行うといった場面で用いられStarbucksなど有名なアプリにも多数使われています。

カメラ系

WeScan

Swift製のドキュメントスキャナーです。自動的に紙のエッジを認識し、補正する画面も設けてあります。契約書のスキャンなど業務系アプリに活かせそうです。

UI系

Lottie iOS

Airbnbが開発するアニメーションを表示するライブラリです。Adobe After Affectで作成したアニメーションをjson形式で出力し、それを読み込みそのまま表示することができます。iOS (Swift)の他にもReact NativeやAndroid (Java/Kotlin)にも対応しており、同じアニメーションをクロスプラットフォームで動かすこともできます。

Example from Github

Aiolos

Floating Windowを実装するライブラリです。

Example from Github

Nantes

TTTAttributedLabelをSwift化したものになります。TTTAttributedLabelといえば、様々なiOSアプリケーションで使用を確認することができる有名なライブラリです.UILabelだけでは物足りないところをカバーしてくれます。

Screen Shot

MultiProgressView

プロジェクトのExampleにもありますが、カテゴリ別の容量などを表示するなどUIProgressViewでは少し複雑になるものを簡単に実装できます。

SPLarkController

SPLarkControllerは表示中のViewControllerを上にスライドさせるアニメーションを実現できます。メニューやオプションの表示などに使えそうです。

AloeStackView

AloeStackViewは、あのAirbnbが開発・メンテナンスしているライブラリです。リスト表示をdelegateなどを使わずに簡単に作ることができます。設定などのリスト表示は項目数も少なく、UITableViewは少々複雑ですが、AloeStackViewを使うとシンプルに書くことができます。

DarkModeKit

ダークモードはiOS13以上から使うことができます。しかし、iPhone SEなどiOS13がインストールできない端末も多くあります。このライブラリはiOS11〜でもダークモードに対応することができるライブラリです。

CardParts

CardPartsはその名の通り、カード状のUIを実現するためのライブラリです。カードデザインに必須な様々なViewが含まれており、ほとんどコードを書くことなくカードUIを実現できます。

Cosmos

自分で作ると地味に難しいが、よくある5星の評価。これを簡単に表示できるライブラリです。

BulletinBoard

BulletinBoardはiOSのWi-Fiの共有やAirPodsのペアリング時などに下から出てくるダイアログを実現するライブラリです。UIPresentationControllerを使った複雑なコーディングをしなくとも簡単に書くことができます。

Utility系

BetterCodable

Swift 5.1で使えるようになった@propertyWrapperの機能を利用して作られたライブラリです。Codableを継承するクラスや構造体に対して、いちいちinit(from decoder: Decoder) throwsというようなイニシャライザを実装するなどのボイラープレートを書く必要がありません。

Starscream

WebSocket通信を簡単に行うことのできるライブラリです。下はDelegateを継承したクラスに実装したdidReceiveメソッド内のexampleです。複雑なWebSocket通信をかなりわかりやすく且つ簡潔に実装できそうですね。

func didReceive(event: WebSocketEvent, client: WebSocket) {
	switch event {
	case .connected(let headers):
		isConnected = true
		print("websocket is connected: \(headers)")
	case .disconnected(let reason, let code):
		isConnected = false
		print("websocket is disconnected: \(reason) with code: \(code)")
	case .text(let string):
		print("Received text: \(string)")
	case .binary(let data):
		print("Received data: \(data.count)")
	case .ping(_):
		break
	case .pong(_):
		break
	case .viablityChanged(_):
		break
	case .reconnectSuggested(_):
		break
	case .cancelled:
		isConnected = false
	case .error(let error):
		isConnected = false
		handleError(error)
	}
}

コメント

タイトルとURLをコピーしました