UIKitとSwiftUI、どちらから学習するべきか

 こんにちは、GMOグローバルサイン・ホールディングスCTO室の井上です。日頃iOSの開発に近いことに携わらさせていただいています。今回の記事では、iOSアプリ開発をこれから始めたいとなった時に必ずぶつかる問題である「UIKitとSwiftUI、どちらから学習するべきか」について考察してみたいと思います。

背景

現在、iOSフレームワークにはUIKitとSwiftUIの2つの選択肢があります。初心者がiOSアプリ開発を始める際にどちらにするか選択を迫られます。実際この問題に関してのブログ記事やTwitter投稿がたくさんあり議論されています。

UIKitとSwiftUIの比較

UIKitとSwiftUIとはどのようなもので、どんな特徴があるのでしょうか。以下がそれぞれの概要になります。

UIKit

  • UIの記述にStoryboard/XIB(xmlファイル)を利用
    コードのみの実装も可能だがコード量が増える
  • APIが豊富で使える機能が多い
  • 長い歴史があり、iOS12以前にも対応

SwiftUI

  • UIを宣言的に記述する
  • プレビュー機能がある
  • iOS13以降でしか使用できない

SwiftUIのメリット・デメリット

メリット

  • プレビュー機能があるので都度ビルドの必要がない
  • 宣言的UIなのでコード量が少ない
  • xmlファイル(Storyboard/XIB)の管理が必要ない

デメリット

  • iOS13以降でしか使用できない
  • UIKitにある機能で使用できないものがある
  • 2019年にリリースされたため、情報やサンプルコードが少ない

SwiftUIコード内でUIKitを使用する方法

前述の通り、UIKitでは実装できるのに、SwiftUIでは対応するAPIが提供されていない機能があります。対処方法として、UIKitのコードをSwiftUI内で使用するためのラッパーとしてUIViewRepresentableが提供されています。逆にSwiftUIのコードをUIKit内で使用したい場合はUIHostingControllerを使用します。

SwiftUIの利用状況

2019年にリリースされて2年経つSwiftUIですが、現在どれくらい利用されているのでしょうか。いくつかの視点から探ってみたいと思います。

実運用サービスから見るSwiftUIの利用状況

まずは実際に運用されているアプリでSwiftUIを使用している例を紹介します。

クックパッド

料理レシピ共有サービスのクックパッドはiOSアプリ内の買い物機能にSiwftUIを利用していることをブログで公開しています。 採用ページでもSwiftUIがわかるエンジニアを募集していることが分かります。

Appify

ノーコードアプリ開発プラットフォームのAppifyは全てのiOSアプリ開発をSwiftUIで行なっていることを明言しています。

国内の2例だけですが、著名なアプリでも実際にSwiftUIが使用されていることが分かります。

エンジニア求人数から見るSwiftUIの利用状況

次にエンジニアの求人件数を見てみましょう。求人サイトIndeed内で募集されている数字を調べます。UIKitとSwiftUIでそれぞれ検索をかけた結果が以下のとおりです。

Indeed アメリカ版
– UIKit 546件
– SwiftUI 415件

Indeed 日本版
– UIKit 183件
– SwiftUI 55件

アメリカ、日本共に、まだUIKitの求人数のほうが多いもののSwiftUIも着実に増えているのがわかります。SwiftUIを使用している企業は思ったよりも多いのかもしれません。

iOSビルトインアプリから見るSwiftUIの利用状況

iOSに元から付属しているビルトインアプリのバイナリの数量からSwiftUIの利用状況を推察しているブログがあります。こちらを参考しますと2021年9月にリリースされたiOS15では着実にSwiftUIが増加していることがわかります。Apple内でもSwiftUIへの移行が着実に進んでおり、この傾向は今後も加速することが予想されます。

まとめ

リリースから2年が経ち、SwiftUIの利用は着実に進んでいるものの、完全移行にはまだしばらくかかりそうです。
 「UIKitとSwiftUI、どちらから学習するべきか」との問いへの答えですが、前章までの考察と、紹介しきれていないブログ記事やTwitter等の議論をまとめると以下のことが言えそうです。

  • デモ用途等の簡単なアプリを早く作りたい場合はSwiftUIのみで実装できる
  • 複雑な機能を実装したい場合や、iOS12以前の多くのユーザーを獲得したい場合はUIKitを利用する必要がある
  • 大規模開発に携わる場合や本格的にiOSデベロッパーとしてキャリアを築きたい場合はUIKitを学ぶ必要がある
  • いずれのフレームワークも言語としてSwiftを使用しているのでSwiftの習得が必須。Swift初心者は簡単にアプリが作れるSwiftUIを選択してSwiftに慣れるのがおすすめ

今回の考察は以上になります。
最後まで読んでいただきありがとうございました。

参考資料

Answering the big question: should you learn SwiftUI, UIKit, or both? by Paul Hudson
Learning Apple’s SwiftUI or UIKit: Which One Is Right for You Right Now? by Juan Pablo Claude
Should I learn UIKit or SwiftUI by Sarun