SwiftUIとは?
SwiftUIは圧倒的に少ないSwiftコードで、すべてのAppleプラットフォーム向けに見栄えの良いアプリを構築できるフレームワークです。共通のツールとAPIを使用して、あらゆるAppleデバイスで優れた体験をユーザーに提供します。
宣言的な構文
SwiftUIの宣言型構文では、コードは「ユーザーインターフェイスが何をすべきか」を述べるだけです。これまでよりもシンプルで読みやすく、効率的なコーディングが可能です。
以下の例は、テキストと画像で構成されるアルバムリストを作成し、各項目を配置し、フォント形式を指定します。
import SwiftUI
struct AlbumDetail: View {
var album: Album
var body: some View {
List(album.songs) { song in
HStack {
Image(album.cover)
VStack(alignment: .leading) {
Text(song.title)
Text(song.artist.name)
.foregroundStyle(.secondary)
}
}
}
}
}
この宣言型スタイルは、アニメーションのような複雑な概念にも適用されます。わずか数行のコードで、ほぼすべてのコントロールUIにアニメーションを簡単に追加し、すぐに使用できる数々のエフェクトを選択できます。
実行時において、アニメーションの途中でユーザー操作や状態の変化に対処する場合でも、スムーズな動きを作成するために必要なすべてのステップをシステムが処理します。アニメーションが簡単にできるので、アプリを生き生きとさせる新しい方法を見つけることができます。
デザインツール
Xcodeに搭載されているデザインツールを使えば、SwiftUIでインターフェイスを構築するのはドラッグアンドドロップするのと同じくらい直感的で簡単です。デザインキャンバスで編集したすべての作業は、隣接するエディタのコードと完全に同期します。プレビューには入力したコードが即座に表示され、ダークモードなど複数のUI構成を表示することもできます。Xcodeは変更内容を即座に再コンパイルし、実行中のバージョンのアプリに反映します。しかも、表示中に編集可能です。
ドラッグ&ドロップ
ユーザーインターフェイスのコンポーネントは、キャンバス上にコントロールをドラッグするだけで配置できます。インスペクタをクリックすることによって、フォント、色、配置、その他のデザインオプションを選択できます。また、カーソルでコントロールを簡単に並べ替えることができます。これらのビジュアルエディタの多くはコードエディタ内でも利用できるので、インターフェイスの一部をコーディングしたい場合でも、インスペクタを使用して各コントロールの新しい修飾子を見つけることができます。ライブラリからコントロールをドラッグして、デザインキャンバスやコードにドロップすることもできます。
動的変換
SwiftコンパイラとランタイムはXcode全体に完全に埋め込まれているため、アプリは常にビルドされ、実行されます。デザインキャンバスはユーザーインターフェイスの擬似的な表示ではなく、実際のアプリです。また、Xcodeは動的置換を使用して、編集したコードをアプリに置き換えます。
プレビュー
SwiftUIビューのプレビューは取得したサンプルデータ、大きなフォント、ローカリゼーション、ダークモードなど、ユーザーが見る可能性のあるものはほとんどすべてを設定できるようになりました。プレビューは、どのデバイスや向きでもUIを表示できます。
SwiftUIの新機能
Navigation API
アプリのナビゲーション動作をプログラムで制御して、起動状態を設定したり、サイズクラス間のトランジションを管理したり、ディープリンクに応答したりします。
Swift Charts
すべてのAppleプラットフォームで見栄えの良く、高度にカスタマイズできるチャートでデータを視覚化します。Swift ChartsはSwiftUI構文を使用して、折れ線グラフや棒グラフおよびストリームグラフなどの高度なタイプまで、さまざまな可能性を秘めたビューを作成します。VoiceOverもサポートしています。
先進的なレイアウト制御
高度で再利用可能なレイアウトを構築して、アプリのデザインを強化します。VStack
とHStack
に加えて、SwiftUIはビューを水平方向と垂直方向の両方に同時に整列させるための新しいGrid API
を提供します。また、新しい低レベルのカスタムレイアウトAPIは、アプリが必要とするレイアウトを正確に構築するためのあらゆる制御を提供します。また、SwiftUIにはViewThatFits
が含まれるようになりました。これにより、特定のビューの複数のバリエーションを指定し、SwiftUIは利用可能なスペースに最も適したものを自動的に選択できます。
追加的なコンポーネントのサポート
画面により多くの情報を表示したいときにメインビュー上にスライドするハーフシートや、デバイスにインストールされているすべての共有拡張機能を利用できる共有シートなど、さらに多くの既存のUIコンポーネントをサポートします。また、Mac向けだった複数列テーブルAPIがiPadでも利用可能になりました。
ロック画面におけるウィジェット
美しいアイコン、ゲージ、その他の要素を使って、ユーザーが情報を一目で確認するためのロック画面ウィジェットを作成できます。