WWDC Apple が新たに発表した SwiftUI は、宣言型の構文を使用してユーザー インターフェイスを作成し、同社の Mac および iOS アプリケーション開発ツールである Xcode で強力な新しいビジュアル デザイン ツールを有効にします。
SwiftUIは、現在シリコンバレーのサンノゼで開催中のAppleの世界開発者会議(WWDC)で発表されました。ソフトウェアエンジニアリング担当シニアバイスプレジデントのクレイグ・フェデリギ氏は、SwiftUIを「Swiftが提供するあらゆる機能を活用するためにゼロから構築された新しいフレームワーク」と表現しました。
Swift言語自体は誕生からわずか5年で、2014年のWWDCで発表されました。開発者にとって、1980年代から続く由緒あるObjective-Cに代わる選択肢となるためです。Swiftは習得しやすく、より安全に使用できます。フェデリギ氏によると、現在App Storeには45万本以上のSwiftアプリが掲載されています。
しかし、SwiftUIは大きな違いがあります。AppleのUIKitフレームワークを使ってコードでユーザーインターフェースを構築するのではなく、宣言的なステートメントで記述し、修飾子を追加することでレンダリング方法をカスタマイズします。これにはアニメーションやその他の視覚効果も含まれます。
宣言型フレームワークは、コーディングが速いだけでなく、ビジュアルビルダーと自然に連携します。最新リリースのXCode 11には、ドラッグ&ドロップでSwiftUIユーザーインターフェースを構築し、インスペクターを使ってプロパティを設定するためのデザインツールが含まれています。プレビューではアプリケーションの外観を確認でき、iPhoneなどのデバイスにプレビューを即座にプッシュしてテストすることもできます。
Xcode 11とSwiftUIでユーザーインターフェースを作成する
これらの新しいXCodeツールは双方向のデザインをサポートしています。つまり、ビジュアルデザインでUIを操作するとコードが更新され、その逆も同様です。
SwiftUI を使用して構築すると、アクセシビリティ、ローカリゼーション、右から左に記述する言語、新しいダーク モードなど、多数の重要な機能のサポートが組み込まれます。
UIKitとの統合も可能で、SwiftUIのビュー内にUIKitのビューやビューコントローラーを配置したり、その逆を行ったりできます。
SwiftUIは、iOS、macOS、tvOS、watchOSなど、Appleのすべてのプラットフォーム向けのアプリケーションを構築します。これらのOSの最新バージョン(例えばiOS 13.0以降)が必要です。これらのOSは現在ベータ版として提供されており、一般公開は2019年秋を予定しています。
Xcodeは、これらすべてのプラットフォームを単一のプロジェクトでサポートしながら、それぞれのフォームファクタに合わせてレイアウトを最適化できます。また、SwiftUIコードを追加することで、既存のiPadアプリをMacに移植することも可能です。
#if ディレクティブによる条件付きコンパイルがサポートされているため、デバッグやその他のシナリオ用の特別なコードを追加できます。
SwiftとSwiftUIの組み合わせにより、Appleはネイティブパフォーマンスを犠牲にすることなく、迅速なアプリケーション開発(RAD)を提供するファーストパーティ開発プラットフォームを手に入れる。元MicrosoftのWindows担当責任者であるスティーブン・シノフスキー氏をはじめとする関係者は、すぐにこの組み合わせに熱意を示した。
SwiftUI は、企業、コンサルタント、教育機関が使用できる (そして使用すべき)「迅速なアプリケーション開発」ツールです。
— スティーブン・シノフスキー(@stevesi)2019年6月3日
Appleが長年他のプラットフォームで提供されてきたものに追いついているにもかかわらず、これは現実です。「Appleの新しいSwiftUIは、@ApacheGroovyの15年前のSwing Builderに非常によく似ています」と、Google Cloudのデベロッパーアドボケートであり、ApacheGroovyの共同創設者でもあるGuillaume Laforge氏は述べています。
Microsoft は、Windows Presentation Foundation の宣言型 UI フレームワークに XAML 言語を使用しており、クロスプラットフォーム Xamarin ツールは、Xamarin Forms に異なる種類の XAML を使用しています。
Google のクロスプラットフォーム Flutter プロジェクトも、Flutter の言語は Dart ですが、表面的には SwiftUI に似ています。
SwiftUI が一見した通り優れていると仮定すると、ネイティブ ツールは同等の生産性があり、クロスプラットフォームの妥協に悩まされることがないため、Apple プラットフォーム向けのアプリケーションを構築するためのこれらの代替アプローチは廃れてしまう可能性があります。®