概要

初めてiOSのアプリを開発してみたのですが、アプリを作成する際のUIの部分で新しいSwiftUIを使うか従来のUIKitを使った開発をするかで悩みました。

最終的には、SwiftUIを選択してアプリ開発をしたのですが、初めてアプリを開発する私がなぜSwiftUIを選択したのかということと、実際にSwiftUIを使ってみて分かったメリット・デメリットについて、ここに書きます。

環境

  • Xcode 12.4

SwiftUIとUIKit

この記事は2021年の2月に書いているもののため、この状況におけるiOSアプリ開発について説明していきます。

現在の、iOSアプリの開発においては、UIKitと呼ばれる従来の方法よりUIを作りこんでいく方法と、SwiftUIという2019年に発表された新しい方法を利用する方法の2種類が、UIを作る方法としてあります。ちなみに、iOSアプリだけでなく、iPadOSやmacOSのアプリ開発などにも使用できますが、ここでは私が主に対象としたiOSアプリに絞って話をしていきます。

SwiftUIは、宣言的にUIを作りこんでいくことができるフレームワークで、現在はSwiftUI2という2019年に発表されたものを改良し、バージョンが2となったものが最新となっています。宣言的にUIを作るというのは、昨今の流行りで、従来の命令的なものと比べて良いとされています。

そこで、なるべく最新のものを使った方が今後を考えた際にいいと思えるということで、UIKitではなくSwiftUIを使って開発をしようと考えるわけですが、この考えには落とし穴があります。

まず、SwiftUIは比較的新しいものであるため、情報があまり多くありません。これは、Appleの公式サイトで公開されているサンプルプログラムもSwiftUIを使っているものが少ないということでもあります。

このような情報が少ないというのは、SwiftUIがまだ発展途上のフレームワークであるということに大きくかかわってきます。どういうことかというと、SwiftUIはUIKitを完全に置き換えることができず、一部の処理については、内部的にUIKitを使用する必要があります。このようなことをする際には、やはり情報が必要になるのですが、そのような情報はあまり多くありません。
ただ、このようなUIKitを使うという状況はSwiftUIのアップデートによって、徐々に改善されては来ています。

さらに、SwiftUIが2019年に発表されたということで、iOS13以降の比較的最近のiOSにしか対応していません。つまり、iOS12以下のバージョンを対象にする場合は、SwiftUIを使えないもしくは、条件分岐等でiOS12以下でも動くコードを用意する必要があるということです。

しかし、今後はSwiftUIが広く使われるようになるのは、最近のSwiftUIのアップデート状況や、実際に使っている人たちの口コミから、ほぼ確定的だといえます。また、すべてUIKitを使用すればいいだろうと考えていたとしても、iOS14で追加されたウィジェットでは、SwiftUIの使用が必須となっているため、今後SwiftUIしか使えないというアプリ開発を行わなければならないことも十分に考えられます。

そこで、このようなメリット・デメリットを考えた結果、私は初めてのiOSアプリ開発でSwiftUIを使うこととしました。この選択の大きな理由として、主に考えられる問題が時間とともに解決できるという問題であったからです。特に対応するiOSのバージョンの問題や情報の多さの問題は、時間が解決してくれるだろうと考えられます。

実際にSwiftUIを使ってみた感想

上記のようなことから、SwiftUIを使ってアプリ開発をやってみました。

アプリの内容としては、比較的単純な画面遷移やボタンの配置、それに伴う表示の変更、さらにはカメラやセンサ情報を取得してそれを表示するというような基本的なアプリの開発です。

最初に抱いた感想としては、SwiftUIを使ってUIを作れるのであれば、かなり簡単にボタンや表示の変更ができるということです。これはSwiftUIのフレームワーク自体にMVVMモデルのような状態が変化することによって、自動で表示を変える機能が組み込まれているというのが大きいです。特にほとんどコードを書かなくても変数の値を変えるだけでUIが変化するということで、かなり楽に開発ができました。

しかし、欠点としてUIKitを使わなければ実現できないようなことをする、つまりUIKitにしかないUIを使用したい場合には、情報がなく、かなり苦労しました。また、この部分の開発については、SwiftUIの知識というよりもUIKitのライフサイクルの知識が求められたため、SwiftUIを知っていればUIKitを知らなくてもよいとはならないということでもありました。

さらに、SwiftUIを使うことで、簡単にそれっぽいUIを作ることができるのですが、細かい位置などの指定は難しいように思えます。具体的には、ピクセル値などで細かく場所を指定するのは苦手でした。しかし、私の場合はそのような細かい指定をすることはないため、困ることはありませんでした。

最後に結論として、SwiftUIを覚えておくメリットはあるのですが、その際にはUIKitについてもかじっておいた方がよいでしょう。つまりUIKitも覚えてもよいという覚悟がある人だけSwiftUIを選択しましょう。

まとめ

正直SwiftUI自体は、UIを簡潔に使えるのでお勧めだなとは思ったのですが、情報が少ないのは難点です。特に調べてもUIKitの情報が多いため、その情報をSwiftUIに置き換えられるだけの知識がさらに必要でした。