SwiftUIとは
SwiftはApple社がObjective-Cをベースにして、iOSアプリ作成用に開発したプログラミング言語です。そのSwiftのUI周りの使い勝手をよくするフレームワークが「SwiftUI」です。この記事では初級エンジニアの方を対象に「SwiftUIとはなにか」というテーマで解説していきます。
Swiftとは
まずSwiftUIの説明に入る前に、Swift言語について改めて確認をしておきましょう。
Swiftは、iPhoneやiPadなどのiOSアプリの開発を効率的に行えるよう、Apple社が開発したオーブンソースの新しいプログラミング言語です。 SwiftはパソコンのMacがあれば、初心者でも比較的簡単に扱えるプログラム言語です。
SwiftUIはSwiftのフレームワーク
「SwiftUI」とは、iOSアプリ開発用にSwiftで作られたUIフレームワークのことです。2019年6月にApple社が発表したばかりの新しいUIですが、関係者から期待が集っています。
SwiftUIを利用する主なメリットはSwiftベースのシンプルな記述や操作でiOSアプリのUI作成を容易に行える点です。ただし、SwiftUIが対応するのはiOS13以降、開発ツールではXcode11以降を必須としていることから、現在の開発環境が使えるかどうかをあらかじめ確認しておく必要があります。
SwiftUIとStoryboardのどっちを選択?
iPhoneアプリの開発で利用されるStoryboardは、2011年のXcode 4.2から登場しました。Storyboardはボタンやアイコンなどをドラッグ&ドロップで配置しながら直感的に作ることができ、アプリ開発を快適にしてくれる点が特徴です。今ではiOSアプリの画面設計や画面の遷移を作る上で欠かせないものとなっています。 一方、StoryboardはCode上では見やすいですが、ソースはXML形式のため、XMLが読めないエンジニアはソースを解読できないという点が弱点です。
現在、Storyboardと新しく登場したSwiftUIとの違いが見えず、どっちを学ぶべきか、迷う人が増えています。
仕事で既存のアプリのリリースをメインに行う人は、Storyboardを選択するのが良いでしょう。逆に、これから学ぼうとする人はSwiftUIからで構いません。いずれはSwiftUIに一元化されていくでしょうが、余裕がある方は両方を学んでおくと何かと有利でしょう。
SwiftUIを使うメリット
SwiftUIは登場してまだ日が浅いSwiftのフレームワークですが、これまで実際に使ってみるとさまざまなメリットを感じることでしょう。
コードがシンプル
SwiftUIはSwiftコードで開発されており、とにかくコードがシンプルです。その結果SwiftUIではコーディング作業、特にUIの開発が簡単になる点がメリットと言えます。
コーディング中にプレビューを見れる
SwiftUIは、コーディング作業の途中でもViewごとに画面の確認ができます。従来の仕組みでもレイアウトの確認は可能でしたが、実際の動きを見るには、データを入れてアプリをビルドした後にシミュレーターや実機で確認しなければなりませんでした。 このように、コーディングをしながら実際のプログラムの動きをリアルタイムに確認できる点はSwiftUIならではのメリットです。 さらにアプリは画面単位に起動することができ、開発をしながら画面遷移を確認する、あるいはアニメーションの動きを見ることができるため、開発作業の効率化が期待できます。
レイアウトファイルもSwift
SwiftUIはレイアウトファイル(Viewクラス)もSwiftで書かれているため、誰にも分かりやすいことから共同開発にも適しています。Storyboardも便利なUIフレームワークですが、 XMLで書かれていることから、XMLを扱えるエンジニアしかソースの解読ができない点が難点でした。 SwiftUIはSwift言語で書かれていることで、Swiftを扱えるエンジニアであれば誰でもUIのメンテナンスができるため、iOSアプリなどの共同開発の面においては前進しました。
SwiftUIを使うデメリット
ここまでSwiftUIのメリットについて述べましたが、実はSwiftUIは新しいが故の機能不足やバグが残っており、デメリットもあります。これからSwiftUIのデメリットについて一緒に見ていきましょう。
UIKitユーザーにとっては物足りない面も
初心者にはやさしいSwiftUIの登場によって、iOSアプリ開発のハードルは下がり、一般ユーザーのiOSアプリ開発が活発になるかもしれません。しかし、従来のUIKitなどに馴染んでいる人にSwiftUIは物足りない点があり、厳しい評価をする人もいます。
SwiftUIは完成を待たずに世に送りだされており、機能不足は否めませんでしたが、SwiftUI2.0が登場し、さらに後継のSwiftUI3.0ベータ版も公開されています。SwiftUI3ベータ版はiOS 15とXcode 13の環境で利用できるようになります。 これまでのSwiftUIでは実現できなかった「Pull To Refresh」も対応されており、UIKitと比較しても機能面で劣る点はほぼ解消されています。これからは次第にUIKit愛好者にも評価されていくことでしょう。
古いiOSには対応しない
SwiftUIは新しいUIフレームワークのため、対応する環境がiOS13以降という制約があります。致し方ない点ではありますが、iPhone5やiPhone6には対応できないことから、一部のユーザーには不満が残るでしょう。
SwiftUIができること、できないこと
続いてSwiftUIによってできること、できないことは何かについて見ていきましょう。
SwiftUIだけでiOSアプリを作ることはできる?
SwiftUIだけでiOSアプリを作ることは現時点では難しいでしょう。SwiftUIはUIの作成に適していますが、あくまでフレームワークであり、開発用の言語ではありません。Swiftとは違って、SwiftUIはネットワークやデータベースのハンドリングはできませんのでアプリプログラムを作るのには適していません。
ただし、「SwiftUI2.0」から、単純なデータのファイル保存程度はできるようになっています。将来的には、簡単なアプリ程度であればSwiftUI単独で作れるようになるかもしれません。
iOSアプリの画面程度ならSwiftを知らなくとも作れる?
Swiftを知らなくてもiOSアプリの画面程度なら作れます。PowerPointを操作できるレベルの人であれば、簡単な画面程度は作成可能です。表示する文字のサイズ・フォント・配置なども簡単にできるため、SwiftUIを使い慣れていない初心者でも、センスのあるエンジニアであれば画面作成を分担させることも可能です。
SwiftUIではできないこと
Storyboardではできるのに、SwiftUIではできないことの1つに「Pull To Refresh」があります。
「Pull To Refresh」とは、スマホの画面を下に引っ張ると画面が更新される機能です。 タッチパネル形式のデバイスはよく使われる機能ですが、SwiftUI自体にはこの機能がサポートされていないため、別途UIKitの助けが必要です。
こうした点を捉えてSwiftUIを「使えない」とけなす人もいますが、リリース予定のSwiftUI3.0ではこうした点も解消し、必要な機能が追加されています。このように、機能不足やバグなどはバージョンアップによって次第に解消していくでしょう。
SwiftUIを学ぶ方法
SwiftUIを独学で習得する方法として、チュートリアルを利用する、入門書を読みながら進める、の2つの方法があります。もちろん両方同時並行でも構いませんので、その選択は皆さんにお任せします。
SwiftUI チュートリアル(tutorial)
SwiftUIの基本的な使い方を独学で学ぶには、Apple公式SwiftUIチュートリアルがおすすめです。チュートリアルは英文ですが、ブラウザの翻訳機能を用いて日本語に変換すれば、さほど違和感なく利用できます。
SwiftもXcodeも初めてという方には少し難しいかもしれません。チュートリアルはXcodeを触った経験があり、Swiftも多少かじっているMACユーザーの方におすすめです。 チュートリアルを始める前に、MacOS・Xcodeを最新のバージョンにしておきましょう。
おすすめのテキスト
SwiftUI対応 たった2日でマスターできるiPhoneアプリ開発集中講座 Xcode 12/iOS 14対応は、SwiftとSwiftUIでiPhoneアプリを作ろうとしている初心者のためのガイドです。 サンプルアプリの制作を通じて、iOSアプリ開発の手順や仕組みを一通り学ぶことができます。このテキストは、最新のXcode 12とiOS 14にも対応しています。
SwiftUIを活用できるエンジニアを目指そう
Swift言語はシンプルさと優れた開発効率性が評価され、Swiftを採用する企業が増えています。また、AndroidアプリとiOSアプリの同時開発を行う企業も出現するなど、両者の隔たりが無くなりつつあります。 SwiftUIがAndroidアプリの開発に活用される可能性も否定できません。こんな時こそSwiftとSwiftUIの両方を習得しておくと、仕事の幅が一気に広がることが予想されます。
Swiftエンジニアの仕事はどう変わる?
これからはSwiftUIを活用することで、アプリ開発の生産性が大きく向上するでしょう。また、Androidアプリの開発案件も舞い込んでくるかもしれません。 また、iOSアプリの開発を行っている企業では、SwiftUIの利用が一般化してくると、UIKitとSwiftUIの両方に精通したエンジニアは厚遇されるようになるでしょう。
SwiftUI3.0の登場によって、SwiftUIへの移行が一斉に行われる可能性があり、Swiftエンジニアにとってはさらなる活躍のチャンスが訪れるかもしれません。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから