16
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More 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を使うことになると思います。
    • SwiftUIUIKitの共存環境は2年ぐらい続くことを考えて、実装することを頭に入れておくといいと思います。

DataBinding

  • Combine
  • RxSwift
    • 今後はApple純正のCombineが主流になっていくと思うのでCombineで実装していくことをお勧めします

Image Cache

  • kingfisher
  • Nuke
    • 画像取得とキャッシュのライブラリとして、パフォーマンスとSwiftらしい設計で書かれたNukeを積極的に使いたいです。

Tracking

  • Firebase
    • 様々な機能と連携を考えるとFirebase一択になります。

Resource

  • R.swift
  • SwiftGen
    • ImageやStringの呼び出しをType Safeに扱える様にするライブラリです
    • カスタマイズ性を考えるとSwiftGenをおすすめします

Lint

まとめ

  • iOS開発状況は年々変わってきています。
  • 状況に合わせて、柔軟に対応できる環境、アーキテクチャを選ぶことを個人的にお勧めします。
16
13
2

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
16
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?