コンテンツへスキップ

WWDC 2022に期待する3つのこと

Appleが今年のWWDC週間を6月6日〜10日と発表しました。新しいフレームワークやAPI、ツールについて、私が期待していることを具体例とともにご紹介します。

WWDC 2022に期待する3つのこと

✨ 2023年アップデート:続編の記事でさらに3つの願いを追加しました。

毎年、ある特定のグループの人たちが願い事をして、あれこれ期待を膨らませる特別な時期がやってきます。自分の願いを共有する人もいれば、叶わなかったときにがっかりしないよう、心の中にしまっておく人もいます。私はずっと後者のタイプでしたが、今回は願いを共有して、実現する確率を上げてみようと思います。今年でなくても、来年あたりに叶うかもしれません。サンタが聞いているかもしれませんしね。

ほぼすべてのiOSデベロッパーのリストの上位に挙がるような定番のトピック――Xcodeの安定性向上、Swiftのバグ減少、SwiftUIのさらなる充実、SwiftUI Previewsの信頼性向上など――はスキップします。それでは始めましょう!

#3:1枚の画像からすべてのサイズのアプリアイコンをインポート

問題

すべてのアプリにはアプリアイコンが必要です。しかしXcodeでは数十種類の異なるサイズでアプリアイコンを提供する必要があり、リサイズのサポートは一切ありません。サイズ変更を支援するアプリやツールは多数ありますが、Appleが時折新しいサイズを追加するため、最新のサイズセットに対応しているものはごくわずかです。これは始めたばかりのデベロッパーにとって不必要な障壁です。

Open Focus Timerアプリの仮のアイコンセット

しかし結局、SwiftコードではすべてOptional型として生成されます。これとNSManagedObjectContextのAPI設計全体が、かなり時代遅れで「Swifty」ではない(つまり「安全ではない」)と感じます。そろそろ新しいものが必要です!

ソリューション

AppleはSwiftUIのような新しいSwift専用フレームワークを導入できるはずです。例えばSwiftDataのような名前で、永続化可能なモデルを定義・管理するための高レベルAPIを提供するものです。モデルの定義は次のような感じになるかもしれません:

import SwiftData

actor Category: PersistableObject {
  @Persisted
  var colorHexCode: String

  @Persisted
  var iconSymbolName: String

  @Persisted
  var name: String

  @PersistedRelation(inverse: \CategoryGroup.categories)
  var group: CategoryGroup
}

iCloudに保存するモデルの場合は、actorの前にdistributedを付けます。通常、actorのプロパティにアクセスするにはawaitキーワードが必要ですが、特殊なプロパティラッパーを使えば次のように簡略化できるかもしれません:

import SwiftUI
import SwiftData

struct CategoryView: View {
  @PersistedObject
  var category: Category

  var body: some View {
    Label(
      self.category.name,
      systemImage: self.category.iconSymbolName
    )
    .foregroundColor(
      Color(hex: self.category.colorHexCode)
    )
  }
}

また、actorのプロパティへの外部からの書き込みは通常できませんが、@PersistedプロパティラッパーにBindingのようなマジックを持たせることで、次のように書けるかもしれません:

import SwiftUI
import SwiftData

struct CategoryView: View {
  @PersistedObject
  var category: Category

  var body: some View {
    TextField("Name", self.category.$name.bind())
  }
}

正直に言うと、Actorを実際に使ったことはまだないので、上記の例がおかしい部分があったらお許しください。ただ、Actorは安全なアクセスのためにSwiftDataフレームワークで重要な役割を果たせるのではないかと感じています。

さらに、Xcodeにはデータモデルのバージョン管理を簡単にするUIや、宣言的なSwift構文で記述できるグラフィカルなマイグレーションツールが搭載され、右側にUMLダイアグラムとしてプレビューできる(SwiftUI Previewsのように)ようになるかもしれません。でも、ちょっと夢を見すぎたかもしれませんね…

実現の可能性

多くの人がSwiftUIの論理的な次のステップとして、この2年間ずっと期待していました。しかし今年は、ActorsがSwift 5.5で出荷済みで、Distributed Actors(iCloudサポート用)もつい最近承認されたばかりなので、9月までに最初のバージョンを出荷できる技術的準備が整っているかもしれません。

まとめ

Appleが6月に発表できることはたくさんありますし、上記は私個人の願いに過ぎません。ただ、過去を振り返ると、2019年のSwiftUI、2020年のWidgetKit、2021年のDocCのように、毎年1つか2つのフレームワークには完全に驚かされてきました。今年は何でしょうか?楽しみでなりません!

この記事が参考になりましたか?BlueskyMastodonでフォローして、Swiftのヒントやインディー開発の最新情報をチェックしてください。