infoMore than 3 years have passed since last update.
iOSでの新規開発について考えてみた ~ 2021年初頭版
Last updated at Posted at 2020-12-03
はじめに
- iOS開発状況は年々変わってきています。SwiftUI、CombineなどApple純正のフレームワークも進化しています。まず現状の分析を踏まえて、今後の展望についても考えてみました。個人的な思いも入ると思うのでご了承ください
前提
Xcode 12.2
Swift 5.3.1
deployment target iOS13
ライブラリ管理
- Swift Packager Manager
- Cocoa pods
- Carthage
- ライブラリ管理では上記の3つが選択肢にあがります。今後の展望を考えるとApple純正の
Swift Packager Manager
を優先的に使いたいです。
-
Carthage
に関して、Xcode12Workaround、Apple Siliconの対応がうまくいっていないのが現状です。
-
Swift Packager Manager
> Cocoa pods > Carthageの優先度で使って、将来的にはSwift Packager Manager
を寄せていきたいです
Architecture
- MVC
- MVVM
- Redux or Flux or TCA
- SwiftUIの実装が増えていくと思いますのでCombineとの組み合わせを考えると
MVVM
がメインのアーキテクチャになると思います。複雑な画面と状態管理が必要なのであれば、Reduxなどのアーキテクチャを採用するのもありだと思います。個人的には仕様に合わせて、画面ごとにアーキテクチャを変えて、メンテしやすくする方針にすることが多いです。
Network
- Alamofire
- URLSession
- 個人的にはAlamofireはオーバスペック感を感じて実装中にほとんどの機能を使わずにいることがほとんどです。さらに大きいライブラリなのでメンテコストが高くなります。個人的にはURLSessionを必要な部分だけ拡張する方が運用しやすいと思っています。
UI
- UIKit
-
SwiftUI
- メインでは
SwiftUI
を使うことになりますがまだ対応できないUIは無理をせずにUIKit
を使うことになると思います。
-
SwiftUI
とUIKit
の共存環境は2年ぐらい続くことを考えて、実装することを頭に入れておくといいと思います。
DataBinding
- Combine
-
RxSwift
- 今後はApple純正のCombineが主流になっていくと思うのでCombineで実装していくことをお勧めします
Image Cache
- kingfisher
-
Nuke
- 画像取得とキャッシュのライブラリとして、パフォーマンスとSwiftらしい設計で書かれたNukeを積極的に使いたいです。
Tracking
Resource
- R.swift
-
SwiftGen
- ImageやStringの呼び出しをType Safeに扱える様にするライブラリです
- カスタマイズ性を考えると
SwiftGen
をおすすめします
Lint
まとめ
- iOS開発状況は年々変わってきています。
- 状況に合わせて、柔軟に対応できる環境、アーキテクチャを選ぶことを個人的にお勧めします。
List of users who liked
15Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme
What you can do with signing up