こんにちは、ランサーズでiOSアプリの開発をしている青沼です。
今回はiOSアプリのリアーキテクチャについて書きたいと思います。
iOSアプリのアーキテクチャはMVCにはじまり、MVVM、MVP、VIPERなど様々ありますが、ランサーズでは現在The Composable Architecture (以下 TCA)で実装が進められています。
TCAは最近のiOSアプリ開発でトレンドになりつつある比較的新しめのアーキテクチャです。
ランサーズでは数ヶ月前からTCAを導入し始めました。
アーキテクチャ変更に伴い感じたメリット、デメリットがあったのでまとめたいと思います。
https://github.com/pointfreeco/swift-composable-architecture
アーキテクチャ変更のメリット
ソースコードが整備される
新しいアーキテクチャを導入することで、実装方針が統一されるので、ソースコードが整備されることを感じました。
どのように実装されているかが明確になるので、今後の修正案件に対応しやすくなります。
また、ソースコードが整備されることによってテストコードも書きやすくなるなと感じています。
他にも、新しいメンバーが参入した場合も、実装方針が統一されているので、迷いが少なく開発に加わることが出来そうです。
エンジニアのモチベーション向上
多くのエンジニアとってレガシーな環境で開発するよりも、新しいものに触れて開発する方がモチベーションが高くなると思います。
毎日触れて開発するものであるからこそ、新しいアーキテクチャの方がより意欲が高まると感じました。
また、会社の技術ブランディングという意味でも、新しいアーキテクチャを導入している方が注目してもらえる機会が増え、エンジニアの採用などに良い影響を与えると思います。
アーキテクチャ変更のデメリット
学習コストがかかる
新しいアーキテクチャに沿って実装するにはキャッチアップするための学習コストがどうしても必要になります。
既存の実装方法であればあまり時間がかかることのない実装も、新しいアーキテクチャに沿って実装するには手探りで実装することがあり、開発に時間がかかってしまうことも多々あります。
チームにはTCAに精通したメンバーがいるので、コードレビューなどで知見が共有されますが、そういったメンバーがいない場合、さらに学習コストがかかることになりそうだなと感じました。
既存のソースコードとの共存が難しい
新規開発や既存のアプリを全てリプレイスするわけではないので、既存の実装を徐々に置き換えていくことになります。
そのため、既存の実装と新しいアーキテクチャが混在することになり、うまく実装出来なかったり、意図した通りに動かないなどの問題が発生します。
限られた時間の中で、どこまでアーキテクチャ変更をしつつ機能開発を進めるかの判断基準は難しいなと感じました。
まとめ
アーキテクチャ変更は短期的には学習コストがかかり、デメリットを感じることも多いですが、中長期的にはソースコードが整備され、修正が容易になり、メリットの方が大きくなっていくことを実感しています。
これからもランサーズのiOSアプリをより良いものにしていけたらと思っています。