✨ 2023年アップデート:続編の記事でさらに3つの願いを追加しました。
毎年、ある特定のグループの人たちが願い事をして、あれこれ期待を膨らませる特別な時期がやってきます。自分の願いを共有する人もいれば、叶わなかったときにがっかりしないよう、心の中にしまっておく人もいます。私はずっと後者のタイプでしたが、今回は願いを共有して、実現する確率を上げてみようと思います。今年でなくても、来年あたりに叶うかもしれません。サンタが聞いているかもしれませんしね。
ほぼすべてのiOSデベロッパーのリストの上位に挙がるような定番のトピック――Xcodeの安定性向上、Swiftのバグ減少、SwiftUIのさらなる充実、SwiftUI Previewsの信頼性向上など――はスキップします。それでは始めましょう!
#3:1枚の画像からすべてのサイズのアプリアイコンをインポート
問題
すべてのアプリにはアプリアイコンが必要です。しかしXcodeでは数十種類の異なるサイズでアプリアイコンを提供する必要があり、リサイズのサポートは一切ありません。サイズ変更を支援するアプリやツールは多数ありますが、Appleが時折新しいサイズを追加するため、最新のサイズセットに対応しているものはごくわずかです。これは始めたばかりのデベロッパーにとって不必要な障壁です。
![]()
しかし結局、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つのフレームワークには完全に驚かされてきました。今年は何でしょうか?楽しみでなりません!

