はじめに
先日のWWDC19にてUIフレームワークであるSwiftUIが発表されましたね。
この発表は本当に驚きました...さすがApple、完全内製だけあってサポートが本当に充実していらっしゃる...。
SwiftUIとは、UIを構築するためのフレームワークです。
何と言っても驚きなのは、UIをSwift構文を利用して実装でき、コードとデザインを完全に同期させることができるというところです。
...こんなの使ってみないわないわけにはいかないですよね!
皆さん、もう使ってみました!?(リリースされていませんが)
...とは言え、中にはADP/ADEP(Apple Developer Program/Apple Developer Enterprise Program)にメンバー登録していないからSwiftUIを試すことができないと思っている方もいると思います。(年間で約1万円払えばADPのメンバーに登録できます)
実は、XcodeだけであればBeta版をインストールでき、SwiftUIを先行で体験することが可能です!
まぁ、あと数ヶ月待てば使えるのでそれまで待てよという話かもしれませんが、そうは言っても使いたくなるのがエンジニアの性というものでしょう。
(この記事もあと数ヶ月の命になるわけですが...)
本稿でできること/できないこと
XcodeのBeta版をインストールできればSwiftUIの全てを試せるかと言えばそうではありません。
と言うのもSwiftUIのチュートリアルサイトでGUIを使ってコンテンツを追加したり、コードをリアルタイムでGUIに反映させていましたよね?
あれ、実は次期masOSであるCatalinaで利用可能なSwiftUI canvasと言う機能を使っているので、Mojaveでは使えません。そして、このCatalinaのBeta版をインストールするにはADP/ADEPへのメンバー登録が不可欠です。
以下、macOS Mojaveでもできること/できないことを簡単にまとめてみました。(他あればコメントしてください)
できること
- SwiftUIのViewを使える
- (リアルタイムではないが)コードを画面に出力できる
できないこと
- GUIでパーツを追加していく
- コードからGUIにリアルタイム反映
やってみよう!
残念ながらGUIと連携しながらコーディングはできませんが、コードだけでも触れられるなら良いですよね?w
ちょっと前置きが長くなりましたが、実際にSwiftUIを試してみましょう。
必要なもの
- Apple ID(ADP/ADEPへのメンバー登録は不要です)
- Xcode 11.0 beta
- macOS Mojave 10.14.5
1. Xcodeのインストール
Xcode 11.0のBeta版をダウンロードサイトからダウンロードし、インストールしてください。ポチっとするだけです。
2. Playgroundの作成
今回はPlaygroundを使って試してみます。いつも通り作ってしまってOKです。
3. 実装
SwiftUIの恩恵を受けるため、SwiftUI
をインポートします。
import UIKit // 削除でも良い
import SwiftUI // 追加
var str = "Hello, Playground"
はい!SwiftUIを使う準備は整いました!(はやっ)
では、実際に画面を作っていきましょう。
まず、View
と言う構造体を実装していきます。
import SwiftUI
struct Content: View { // Viewを実装
}
var str = "Hello, Playground"
次に実装した構造体にコンテンツを実装していきましょう。今回は画面にテキスト(Hello World
)を出力させてみます。
SwiftUIではbody
を実装していくことによりコンテンツを画面へ出力させることができます。
import SwiftUI
struct Content: View {
var body: some View { // bodyを実装
Text("Hello World") // 他、Listなど様々な要素がある
}
}
var str = "Hello, Playground"
...はい、SwiftUIで画面を実装する流れはこれで完了です。(めちゃくちゃ簡単!)
これだけではエディタに画面を出力できませんので、仕上げに画面へ出力させる処理を書いていきます。
import SwiftUI
import PlaygroundSupport // Playgroundのアシスタントエディタにビューを表示するため、`PlaygroundSupport`をインポート
struct Content: View {
var body: some View {
Text("Hello World")
}
}
let content = Content() // インスタンスを作成
PlaygroundPage.current.liveView = UIHostingController(rootView: content) // Playgroundのビューに出力
4. ビルドの実行
あとはいつも通り、ビルドを実行してあげてください!

終わりに
最初の方でお伝えした通り、macOS Catalina Beta版をインストールしなければ現時点(2019/6/10)でSwiftUIをフルに体験することはできません。
が、公式リリースがされる前にコードだけでもSwiftUIの魅力を感じてみてはいかがでしょうか。
SwiftUIは皆さんのiOSアプリ開発をより楽にしてくれる機能であることに間違いはないと思います。
では、良きSwiftライフを。