LoginSignup
3
4

More than 3 years have passed since last update.

SwiftUI & Combine オススメライブラリ3選!

Last updated at Posted at 2021-04-26

はじめに

想定読者: SwiftUI / Combine を メイン にしたネイティブアプリ開発を行っている(予定な)方
執筆環境:Xcode 12.4 / macOS Big Sur 11.2.3

この記事は 寄付を身近にする dim. の開発を行う中での学びを共有する目的で執筆しております。
TechCrunch さんにも取り上げていただきましたので御覧ください。

前提

  • SwiftUI がメインで UIKit は極力使わない
  • デザイナーさんのデザインが実現できていること
  • Combine を利用し、 RxSwift などは利用しない

1. FirebaseSDK を Combine で制御

rever-ai/CombineFirebase が非常に参考になります。
主観にはなりますが、 非常にシンプルなライブラリ になっておりますので、ライブラリとして導入するのではなく必要な部分を参考に 独自実装 する方法でも良いかと思います。

Combine とは直接的な関係のないものになりますが、追加でご紹介するのが alickbass/CodableFirebase です。
レスポンスを Codable で扱いたい場合に便利です。

2. UIKit の要素にアクセスしたいと思ったら

SwiftUI はこの記事執筆段階でまだ未熟です。
例えば「UIKit.UITableView.separatorStyle を .none にするみたいなことが SwiftUI.List でもしたいなぁ」などと1度は思って検索したことがあるはずです。そんな希望を叶えてくれるのが SwiftUI-Introspect/SwiftUI-Introspect です。

先程の例であれば以下のように実装可能になります。

List {
    Text("Item 1")
    Text("Item 2")
}
.introspectTableView { tableView in
    tableView.separatorStyle = .none
}

SwiftUI から利用できる UIKit 風 UI ライブラリなどを都度導入するよりも汎用的な SwiftUI-Introspect を利用するほうが 依存が1つで済む ので 外部依存の最小化 の点でもオススメできるのではと考えています。
また、処理が分散しにくいので、将来的に SwiftUI が成長したとき にも対応スピードが高まるのではないかと考えています。

3. Alamofire を Combine で制御(近い未来)

Alamofire に依存する形で作成された Moya をご存知でしょうか。
このライブラリが遂に Combine に対応しようとしています。 Combine 発表後、 issue で多くの議論がされていましたが、 Alpha 段階まで来ているようです。正式リリースが楽しみですね!

さいごに

最後までご覧いただきありがとうございます。
外部ライブラリとの依存は最小限にするためにも 慎重な判断 が必要です。参考にしていただけますと幸いです。

SwiftUI で FirebaseSDK を利用する場合、まだ未対応な機能も多く存在します。
こちらも参考にどうぞ
SwiftUI ベースのプロジェクトでの FCM 実装注意点

3
4
0

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
3
4