見出し画像

カウシェのiOS開発近況について、3つ共有します

(本記事は、2021年9月にiOSDC Japan 2021で発表した「SwiftUIで使ったアプリを1年運用してみてわかったこと」の文字起こしnoteの続編的立ち位置です。まずは前述のnoteをご一読いただければ幸いです)

こんにちは!カウシェの@akifumiです。

2020年9月にiOS版カウシェのサービス提供を開始し、カウシェはサービス開始から1年半以上が経過しました。
そこで今日は、現在のiOS開発の近況を共有したいと思います。

深谷 哲史 / @akifumi
1991年生まれ。慶應義塾大学環境情報学部卒。2014年にDeNAに新卒入社。マンガボックスの収益化に貢献。2018年6月にメルカリに入社、iOSテックリードとしてメルペイの立ち上げを行う。2020年7月よりカウシェに参画。これまでのPM経験やテックリードとしての知見を活かし、技術戦略を担当。

1. SwiftUI + MVVM の活用状況

サービス提供から1年半以上が経過した今、Pull to Refresh の実現などでUIKitを使わざる負えない状況は引き続きあります。
しかし、大半のケースでSwiftUIを活用した継続的な機能開発は、特段大きな問題が発生することなく開発を進めることができています。
2020年当時に SwiftUI をプロダクションアプリで使用するというチャレンジングな技術選定を行いました。カウシェのValueのひとつである Try First を象徴する代表的な事例となり、iOS開発に留まらずプロダクト開発全体に良い影響を与えています。

アーキテクチャも、リリース当初から大きな変更はなく、引き続きMVVMアーキテクチャを活用しています。
MVVMにすることでinput/outputを明確にし、ユニットテストを記述することによって、品質を向上させています。

変更点として、MVVM側でViewの State を enum で管理するようにしました。State を enum で一元管理することによって、各プロパティの整合性が合い、Viewの状態や品質を向上することにつながっています。

2. iOS 13 サポート終了

カウシェは、2021年末に iOS 13 のサポートを終了しました。
そして、iOS 14 以上で使えるAPIの利用を開始しています。
@ObservedObject -> @StateObject への移行、VStack -> LazyVStack への移行などを進めています。async/awaitなど、まだ使えていないAPIもあるため、今後さらに改善していきたいと考えています。

3. KaucheMockKit 作成

モックデータを定義するために、KaucheMockKit というFrameworkを作成しました。モックデータを一つのフレームワームで定義することで、ユニットテストやXcode Previewsで同じモックデータを使い回すことができるようになりました。またProductionアプリから依存として外すことで予期せぬデータ混入を防ぎ、安全性を向上させることもできています。

今回は現在のiOS開発の状況を簡単に共有しましたが、カウシェでは今後も技術発信を行っていきますので、ぜひ「Engineering Blog」というマガジンをフォローしていただけると嬉しいです。

カウシェは「世界一楽しいショッピング体験をつくる」をビジョンに、カウシェの開発・運用をしています。
少しでも気になった方は、ぜひ下記よりエントリーください。

この記事が気に入ったらサポートをしてみませんか?