コンテンツへスキップ

Xcode 15がタイプセーフなAsset Catalogアクセスを実現

Xcode 15がアセットカタログの画像と色に対して型安全なSwiftアクセサを自動生成し、SwiftGenが不要に。

文字列ベースのアセット参照の終わり

Xcode 15における目立たないが影響の大きい変更の一つは、アセットカタログへの組み込みの型安全アクセスです。以前は、アセットカタログから画像や色を参照するには文字列リテラルが必要でした:

// Before Xcode 15
Image("custom-header-icon")
Color("primaryBrand")

これは脆弱でした。アセットの名前を変更してもコードは正常にコンパイルされますが、実行時にクラッシュするか何も表示されません。SwiftGenのようなツールは、アセットカタログから型安全な定数を生成することでまさにこの問題を解決するために存在していました。

何が変わったのか

Xcode 15では、アセットカタログ内のすべての画像と色に対してSwiftアクセサが自動的に生成されるようになりました。リソースイニシャライザを通じてアクセスします:

// Xcode 15+
Image(.customHeaderIcon)
Color(.primaryBrand)

Xcode showing autocomplete suggestions for asset catalog resources

コンパイラがアセットを認識しているため、完全なオートコンプリートが利用でき、アセットを削除または名前変更すると、実行時のサイレントエラーではなくコンパイル時エラーが発生します。

AppleがSwiftGenをSherlockした

これは事実上、SwiftGenが長年提供してきた機能をAppleが統合したものです。すでにSwiftGenを使用しているチームにとっては、まだ必要かどうかを評価する良い機会です。組み込みソリューションは、最も一般的な2つのユースケース(画像と色)をビルドフェーズスクリプトやコード生成ステップなしでカバーします。

フォントやローカライズ文字列、その他のリソースタイプにSwiftGenを使用している場合は、引き続き保持する理由があります。しかし、アセットカタログに関しては、ネイティブソリューションはほとんどのプロジェクトで十分であり、設定なしですぐに使用できます。

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