はじめに
- iOSのバージョンアップに伴いフレームワークも進化してきました。SwiftUI, Combineの登場によって、UIの構築方法の変化、アーキテクチャの変化が必要な時期になってきました。しかし、既存のプロダクトを全て書き換えるのはすぐにはできないです。今回は新しいフレームワークに徐々に移行していくための戦略に追加考えてみました。
CombineとSwiftUI
- 新しく登場したSwiftUIですがいきなり複雑なUIをSwiftUIで実装するにはハードルが高いと思います。なぜなら、SwiftUIが登場して、2年ほどしか立っておらず、フレームワークの進化の途中であり、iOSのバージョンで使えるAPIの差分が大きいと感じます。
- Combineに関して、すでにRxSwiftなどのReactive Programmingで実装する土壌がある程度整っていて、UIKitとSwiftUIどちらでも対応可能です。
さらにRxSwiftなどをすでに使っていれば、学習コストが低く、既存のものから置き換えやすいと考えられます。 - 以上の結果からCombineの導入で話を進めます。
Combine導入
Target versionをiOS13に変更する
⭕️
- サポートバージョンをiOS13にすれば問題なく使えることができます。
❌
- 運用中のサービスであると関係者の了解をとらないといけないです
OpenCombineを入れる
⭕️
- 導入が容易
- iOS13以下でも動作する
- Combineと実装は同じような実装はできる
❌
- ライブラリとして追加するのでバイナリサイズが余計に増え
- メンテナンスが継続的にされるかわからない
必要なところだけ自作してみる
⭕️
- 自作することで内部実装まで理解することが容易になります。
- OpenCombineを使うより、影響範囲を自分でコントロールできる
❌
- 自作するので実証者によっては学習コストがかかる
Combine導入後
- アーキテクチャや実装方針を決める
- 書き方をある決めておくとコードのメンテがしやすくなる
- githubに多くのサンプルがあるのでとても参考になります