SwiftUI On All Devices まとめ(概要のみ)

wwdc19のSwiftUI On All Devicesをまとめます。
SwiftUIはアップルプラットフォームならどれでも動作するように作られています。
各プラットフォーム向けにアプリを作る際にどんな考えをもっておけばいいのかが解説されています。
後半には同じアプリを4つのプラットフォームそれぞれに最適化するデモが話されていました。
このまとめでは割愛しましたが、参考になる解説です。

SwiftUI On All Devices

SwiftUIはあらゆるデバイス上で動くアプリを作るための近道。

Appleデバイスのアプリケーション開発には以下の4つのプラットフォームがある

  • AppKit(Mac)
  • UIKit(iPhone/iPad)
  • TVUIKit/UIKit(Apple TV)
  • WatchKit(Apple Watch)

従来ではデバイス間で同じコードを使うことはできなかった。
SwiftUIはすべてのデバイスで動作する。
なので開発者にとって強力なツールになる。

キーボードやマウス、SiriRemote、マルチタッチディスプレイ、Digital Crown、アクセシビリティ機能もSwiftUIで扱える。

それぞれのプラットフォームの特定のデバイス機能もSwiftUIで使用できる。たとえばMacBook ProのTouch BarやApple WatchのDigital CrownもSwiftUIで使える。


デバイス間で共通する要素の表示

Toggleコントロール

Toggleコントロールはすべてのプラットフォームにある。
On/Offの切り替えができ、その項目のラベルがあるもの。
デバイスによって表示方法は異なる。
iOSはツイッチボタン、macOSはチェックボックス、tvOSはトグルボタンになる。
でもSwiftUIでは一つのコードを書くだけでいい。

レイアウト

スタック、スペーサー、パディングはあらゆるデバイスで同様に使える。

1つのデバイスでアプリケーションのレイアウト方法を覚えれば、他のデバイスでもレイアウトができる。

Picker

macOSではポップアップメニュー、iOSとWatchOSではホイール状に表示される。

特定デバイスへの適応

一つのコードですべてのデバイスで完璧にうごくものが作れるわけではない。共通するものだけでつくってもより良いアプリにならない。それぞれのプラットフォームの強みを活かさなければいけない。SwiftUIは特定デバイスへ適応するAPIも提供している。それらを使って各プラットフォームに最適なアプリが作れる。
そして、スキルセットやツールの使い方など共通するところは共通させてよりよい開発をしていけばいい。

Write once, run anywhere
->Learn once, apply anywhere
「一度書いたらどこでも動く」のではなくて、
「一度習得したらすべてに応用できる」

JAVAをもじってる。

Landmarks

Landmarksというアプリを4つのプラットフォーム向けにそれぞれのプラットフォームごとに計4つつくった。どのように各プラットフォームへ適応するコードを書いたのかを解説する

割愛します。SwiftUIがtvOS, WatchOS,macOS向けにカスタマイズをどうできるかを解説してます。そのプラットフォームのアプリをつくることになったときこの動画をみると参考になりそう。

まとめ

  • SwiftUIでは各プラットフォームでコードを共通できる
  • 同じコードで各プラットフォーム向けの表現になる(トグルスイッチ)
  • それぞれ特定のプラットフォーム向けのAPIも用意されているのでそのプラットフォームの強みを生かしたアプリが開発できる
  • Learn once, apply anywhere