💨

チーム開発にSwiftUIを導入してみて感じたメリットと困ったこと

2024/01/24に公開

株式会社ココナラアプリ開発グループ、iOSチームの上田です。
以前こちらの記事でどのような手順でSwiftUIを導入したかを紹介致しました。

今回はその後、SwiftUIを導入して感じたメリットや、逆に導入してみて困ったこと・苦戦したことなどのデメリットを紹介していこうと思います!

導入して感じたメリット

まず導入して感じたメリットからご紹介したいと思います。

開発速度向上

一番大きく感じたのが開発速度、開発体験の向上です。

ココナラiOSアプリではStoryboardが肥大化しており、一部のStoryboardでは、開いただけでXCodeが固まってしまい、レイアウトの変更に苦戦することがあります。

しかし、SwiftUI導入後はコードベースでレイアウトを実装するのでXCodeが固まることなく実装することが出来るようになりました。

また、UIKitと比べ圧倒的に実装量が少ないのでとてもスピード感のある実装が可能になりました。

コードレビューがしやすい

SwiftUIを導入したことによりメリットがあるのは実装者だけではありません。

SwiftUIは宣言型UIなのでコードでレイアウトを組むことにより、Storyboardのxmlで書かれたコードに比べとてもレビューがしやすくなりました。

また、コンテンツごとにViewを切り分けて実装することで、body内を見ればレイアウトの全体感を掴むことが出来るのでレビュアーの負担も軽くなりました。

採用への影響

他社の動向を見てもやはりSwiftUI化が進んでいます。
長期的な目で見れば以前の「Objective-C」から「Swift」への移行と同じように、Storyboardなどの「Interface Builder」から「SwiftUI」が主流となる時が必ず訪れるので、SwiftUI導入は採用にも繋がってくると思います。

導入して困ったこと

OSによって動作が安定しない

ココナラでは現在iOS14以上をサポートしています。
SwiftUIではOSによって表示の挙動が異なってしまうケースが発生しました。

具体例をあげると

- iOS14, 16, 17では期待通りに表示されているが、iOS15だけ期待通りの表示が行われない
- UIKitと組み合わせた時にiOS14のみNavigationのボタンをタップしても反応しない

などです。
上記は一例ですが、ぱらぱらとOSによって挙動が異なることがあるので、実装後はしっかりと各OSで挙動が問題ないかテストをすることが大切です。

対応策として、OSによる分岐でレイアウトの組み方を変える必要が出てきたり、OS分岐でも難しそうなものはデザイナーさんに確認し、一部OSのみデザイン通りの実装にならないが許容して頂きました。

チームへの展開

SwiftUIを導入する際にチームへの共有がしっかり出来ておらず、実際にSwiftUIで実装してもらう時に苦戦してしまったことがありました。

弊社ではチームメンバーにAppleのSwiftUIチュートリアルをやってもらいましたが、実際に新規画面をSwiftUIで実装して貰った時に@Stateや@PublishedなどのProperty wrapperの使い分けが難しいといった声がチーム内から上がってきました。

この問題を解決するために、まずは週1でSwiftUIの勉強会を開き、実際に実装したコードを解説しながらチームへ展開していきました。
また、勉強会では有識者がコード解説をする会とは別に、SwiftUI未経験者がSwiftUIで分からなかった箇所を質問する会も開き、双方向でのコミュニケーションでSwiftUIへの疑問を解消することが出来たと思います。

プレビュー機能が使えない

これは導入前の検討段階で発覚していたもので、アプリの規模にもよるものだとは思いますが、現状SwiftUIのプレビューを表示するのに1分以上かかってしまっていて、とても使える状態ではありません。

こちらに関しては現在マルチモジュール化を進めており、レイヤーごとに適切に分割することでビルド時間の短縮と同時にプレビュー機能も使えるようになると考えております。

マルチモジュール移行に関してはこちらの記事でご紹介しています。

まとめ

今回はSwiftUI導入のメリットと導入で困ったことをご紹介致しました。
SwiftUIを使ってiOSアプリを開発したい!と言う方、ぜひ以下フォームよりお気軽にご連絡ください!

ココナラに少しでも興味が湧いたという方も大歓迎です。
入力時間は1、2分です。
https://open.talentio.com/r/1/c/coconala/pages/70417

ココナラのエンジニアについてもっと知りたい!という方はこちらをご確認ください。

https://coconala.co.jp/recruit/engineer

Discussion