LoginSignup
7
11

iOS アーキテクチャ 会社(サービス)ごとに調べてみた 2024年4月版

Posted at

背景

現プロジェクトでSwiftUI導入にあたり、リアーキテクチャの必要が出てきたため、他社導入事例を調査しました。

登場アーキテクチャ

  • MVVM
  • Redux系統(TCA, 独自)
  • Clean Architecture系統(VIPER)
  • その他

おことわり

  • 実際に会社の人に聞きに行ったわけではないので非公式です
  • インターネット上で取得できる情報に限るため正確性に欠ける恐れがあります
  • また参照した情報が古い場合もあります
  • より正確に知りたい場合は自分で調べていただけるとありがたいです
  • 情報の出所(採用ページ、技術ブログなど)
  • 大量の情報を扱っているため企業名など正確性に欠けます
  • 選出企業条件:iOSDCスポンサー企業で自社でサービスを持っているなど
  • 順不同

一覧

MVVM

企業名 サービス名 アーキテクチャ 参考URL
yappli MVVM URL
GMO INTERNET GROUP minne MVVM
変更前:MVC -> MVP
URL
ZOZO ZOZO MVVM + Coordinators URL
ZOZO ZOZOFIT View、Config、Manager(ほぼMVVM)
coconala MVVM + CleanArchitecture
変更前:アーキテクチャが混在
URL
URL
cluster MVVM(ViewController / ViewModel / Coordinator / storyboard) uikitがメイン? URL
URL
Wantedly People MVVM URL
DeNA マンガボックス MVVMもどき URL
Andpad MVVM
STORES MVVM + Layerd Architecture URL
JCB MVVM + CleanArchitecture URL

Redux系統(TCA, 独自)

企業名 サービス名 アーキテクチャ 参考URL
mercari メルペイ GU Appでは、それが一新され共通アーキテクチャが策定されました。SwiftUIをベースし、Reduxや TCA などからインスパイアされた単方向データフローの独自のアーキテクチャです。
変更前:色々
wealthnavi Statefulアーキテクチャ(ReduxやTCAに近い)
変更前:(MVP,MVVM,Clean Architecture etc..)
URL
Wantedly Visit Flux(ReactorKit) -> Flux(KMP Reactor) -> Flux(KMP Reactor) URL
RIZAP TCA URL
pixiv pixiv Sketch TCA URL
Cyber Agent TCA
freee freee請求書 TCA (swiftui)

Clean Architecture系統(VIPER)

企業名 サービス名 アーキテクチャ 参考URL
moneyfoward iOS版マネーフォワードME Clean Architecture
DMM DMMポイントクラブ VIPER
Combineを使ったVIPERアーキテクチャにFlowControllerパターンを加えた設計
voicy VIPER
medpeer DietPlus VIPER(uikit)

その他

企業名 サービス名 アーキテクチャ 参考URL
ZOZO ZOZOTOWN MVC
ZOZO WEAR MVC
DeNA Kencom MVC+Storeパターン URL
yahoo japan PayPayモールiOS MVP+Coordinator
Model層はUseCase+Repository+Entitiy
URL
URL
URL
medley MVP + Router
GO RIBs アーキテクチャ
変更前: MVVM と独自
URL
Chatwork 独自
『SVVS』はStore / View / ViewStateの頭文字を取ったものです。
LINE LINE漫画 MVCとMVVMが混在
RxSwiftとRealmとSnapKit
サイボウズ 明言がなく試行錯誤中?
変更前: MVVM + VIPER(Router)
URL

まとめ

  • iOSにおけるアーキテクチャのベストプラクティスは今のところ無さそうです。
  • MVVM, Redux系統, Clean Architecture系統で、ややMVVM,Redux系統が主流のような印象を受けました。
  • Androidだと公式にMVVMが推奨アーキテクチャとしているみたいなのでiOSもそうだと楽になりそうだなと思いました。
  • Redux系統でもTCAを使わずに独自で進めているアプリもあり、なるべくサードパーティに頼らないような動きを感じました。

あとがき

  • 自分の担当プロジェクトだけではなく、どのアプリも同じような問題(様々なアーキテクチャが混在していたり、自動テストが存在しない、リアーキテクチャの必要性)に遭遇しているということが分かりました。
7
11
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
7
11