SwiftUIはiOS16からかなり使いやすくなった!
私はここ数ヶ月、SwiftUIを使ってアプリを作っています。SwiftUIを学ぶのは楽しいですが、学習を進める中で難しさを感じるポイントもいくつかありました。
私がSwiftUIを本格的に学び始めたのは最近ですが、その中で色々と感じたことがあったのでこの記事を書きました。
iOS16からかなり使いやすくなっている
私の個人開発では、iOS16をミニマムターゲットにアプリを作っているのですが、SwiftUIはiOS16からかなり使いやすくなっていると感じました。実現したいことがシンプルな処理で書けて、ストレスなく開発出来ています。
例えば、下記のPhotosPickerはその1つです。iOS16から利用できるPhotosPickerを使えば、シンプルな実装でフォトライブラリから写真を取得する機能を実現出来ます。一方iOS15以下では、これを独自に実装する必要があります。
また以下の記事にある様に、iOS16からListの背景色はシンプルに設定できます。iOS15以下ではinitに処理を記述する必要がありましたが、iOS16からはモディファイアとして処理がまとめて綺麗にコードを書ける様になりました。
上記の例はほんの一部ですが、iOS16からは特にSwiftUIで出来ることの幅が広がり、使いやすさが増していると感じます。その結果、綺麗にコードを書けるのでますます開発が楽しくなります。
SwiftUIは1つのコンポーネントに関する処理を同じ箇所にまとめて書けたり、共通化の為にコンポーネントやモディファイアを切り出せたりと、シンプルかつ美しくコードを書ける点が私はとても好きです。
iOS16でも既に使いやすくなっていますが、iOS17や18が登場した時にSwiftUIがどの様な進化をするのか、今からとても楽しみです。
OSによって挙動が違う時がある
SwiftUIで開発していると、「iOS16では上手く動作してるけど、iOS14だと上手く設定が反映されない」等といった事象にぶつかる事が度々ありました。
その為、複数のOSをサポートしているアプリの場合には、OS毎に分岐して処理を入れる必要があったり、一部のOSの予期せぬ挙動に苦しむ事もありそうです。
例えば、NavigationViewの様にiOS16からは非推奨になってしまうものもあります。代わりとなるNavigationStackはiOS16からしか使えず、OSによる分岐が必要になります。
新しいコンポーネントやモディファイアが次々と登場して、以前のものが非推奨になっているのを見ると、まだまだ進化し続けているフレームワークだと感じますし、OSを幅広くサポートしているアプリほど、そのスピード感に着いていくのは大変そうです。
個人的な意見ですが、ある程度の規模のアプリであれば複数のOSをカバーする必要があるケースがほとんどだと思うので、安定的にSwiftUIが使える環境が整うのは数年先になるのかなと思っています。
SwiftUIは宣言的にUIを構築できて、シンプルなコードでレイアウトを組めますが、こういった側面もあり、既存のプロダクトへの本格的導入の難しさも感じました。
学習方法について
SwiftUIの学習に関しても上記の理由から、個人的には本を買うよりも公式ドキュメントや最近書かれたQiitaやZenn等の記事を見た方が良さそうだなと思いました。
また記事を見る場合にも、対象のOSやいつ書かれた記事なのか、しっかり見た方が良いと思います。
私は、QiitaやZennなどでSwiftUIのタグが付いた記事やトレンドを定期的にチェックしています。色んな視点で記事を投稿している方がいて、とても面白いです。
SwiftUIは注目度の高いフレームワークという事もあり、コードのサンプルや解説記事が沢山見つかるのもうれしいポイントです。
https://capibara1969.com/swiftui/capibara1969.com
さいごに
SwiftUIでレイアウトを構築するのはとても楽しいです。またシンプルなコードで書けるので、コードレビューする側も見やすくなったり、チームでの開発にも適していると個人的には思います。
一方で、UIKitベースのプロダクトへの本格的な導入には、それなりにハードルがあるとも感じています。そんな中でSwiftUIでアプリを開発しているエンジニアは本当にすごいなと思いますし、私も見習って自社のプロダクトに積極的に導入していきたいです。
SwiftUIもどんどん進化しているので、今後の新しい情報を楽しみにしつつ、私もキャッチアップを頑張りたいです。最後まで読んでくださり、ありがとうございます。