SwiftUI所感

最近、新しいアプリの開発のため業務で SwiftUI を使っています。SwiftUI は iOS13 からサポートされており、すでにリリースアプリではほぼほぼ SwiftUI メインで開発しました。SwiftUI1.0 から使っています。9 月上旬に iOS14 リリースによって、Swift2.0 になり、より便利になりました。今まで開発で培ってきた SwiftUI の所感などを書いていこうと思います。

SwiftUI のメリット

SwiftUI のメリットは一番は、UI 開発のしやすさなのではないでしょうか。特にスタートアップなどのスピーディーな開発を求められる現場では重宝すると思います。公式のチュートリアルも基本的なことを押えているので、今から始める人は一度さらってみるのが良いと思います。今までは Interface Builder や Story Board などを使って UI 開発をしてきたかと持っていますが。チームで開発しているとどうしても、コンフリクトなどが起こった時に対処に困ります。一方で、SwiftUI はコードでかけるのでコンフリクトした際も簡単に解決できるのも、その点もメリットの一つではないかと思います。また、SwiftUI2.0 になったことにより、様々な機能が追加されより便利なりました。今から新規で開発する場合は SwiftUI 一択なのではないでしょうか。

SwiftUI のデメリット

SwiftUI は UI を開発する上で素晴らしいと思いますが、一方でデメリットも結構あると思います。SwiftUI のコンポーネントの網羅されていない。痒いところに手が届かない感じです。例えば、Swift1.0 では複数行対応のテキストビューがサポートされていないところです。一般的なアプリではよく使う機能かと思いますが、この場合わざわざ UIKit を使ってラップして SwiftUI で使わなければいけません。SwiftUI2.0 にバージョンアップしてもまだまだ足りない機能はあると思います。その場合は潔く UIKit を使いましょう涙。

不可解な挙動も度々目にしました。シンプルなアプリだとおそらく少ないと思いますが。複雑な UI を SwiftUI で構成すると不可解な挙動に遭遇しました。例えばタップエリアがなぜかズレてボタンを押しても反応しないなど。これは、SwiftUI のバグなのか、こちら側のバグなのか正直判断つかないこともあります。

iOS13, iOS14 でのバージョン互換、iOS14 にアップデートすると今まで iOS13 で動いていたものがクラッシュするなどの現象に遭遇しました。EnvironmentObject の挙動が変わったことにより、iOS14 では EnvironmentObject が参照できずクラッシュが発生。これは、アップルのフォーラムで同じことを言ってる人がいました。恐らくこれだけではなく、まだ他にもあると予想されます。

まだ出てきてまもないことから、恐らく日本語のリソースが少ない点も一つのデメリットです。これから増えるとこに期待です。

まとめ

メリット、デメリットを書いてきましたが、SwiftUI はまだまだ発展途上な感があります。それでも、開発のしやすさ、学習コストの低さなどをあげると、これからは SwiftUI がメインになってくるのかなと思います。使ったことない方も、これから予定がない方も一度触れてみて、今後の開発の選択肢に入れてみるのもありかと思います。これからも進化し続ける SwiftUI を追っていきたいと思います。

Happy Coding :)

comments powered by Disqus