RSS Use Your Loaf - iOS 開発ニュース... ノート

ノートのスレッド

WWDC 2026 は、Liquid Glass と Apple Intelligence に焦点を当て、Platforms State of the Union を出発点とします。100 を超えるセッションが自分のペースで利用できるため、すぐにすべてを学ぶ必要はありません。セッションの視聴には Apple Developer アプリまたは YouTube が推奨されており、通常は簡潔で要点を押さえています。Swift 6.4 は、品質向上と FilePathSwift-C の相互運用性のような新機能をもたらします。SwiftUI は、必須の Liquid Glass 変更、最小限のメニューアイコン、目立つタブロール、新しいドキュメント API、並べ替え可能なコンテナを特徴とします。UIKit アプリの近代化には、リサイズ可能な環境と必須の UIScene ライフサイクルへの適応が含まれ、AppKit アプリはコントロールイベントとキーボードナビゲーションを採用すべきです。Xcode 27 は、カスタマイズ可能なツールバー、ローカライゼーションやプロトタイピングなどのタスクのためのコーディングエージェント、改善されたデバイスハブを提供します。Instruments は、Swift エグゼキューターインストゥルメントやエージェンティックアプリのデバッグのための Foundation Models インストゥルメントを含む、プロファイリングのための新しいモードを提供します。MetricKit は、アプリのパフォーマンスメトリクスを収集するための Swift ファースト API で再構築されました。開発者は Swift Testing に移行でき、Xcode のコーディングアシスタントがそのプロセスを支援します。Xcode Cloud は、ビルド、配信、自動化ワークフローを合理化します。SwiftData は、セクション化されたフェッチリクエストや Codable 型を保存する機能などのアップデートを受け取ります。デザイン原則は、目的、シンプルさ、明確な命名を強調し、直感的な検索エクスペリエンスの作成に関するガイダンスを提供します。アクセシビリティの強化には、アプリの読み上げのための VoiceOver ナビゲーションの改善と AI 生成字幕が含まれます。Apple Intelligence は Foundation Models フレームワークを拡張し、オープンソース化し、オンデバイスおよび Private Cloud Compute オプションを提供します。
Swift 6.2 では、Swift パッケージ内でのコンパイラ警告に対する、よりきめ細やかな制御が可能になります。以前は、Xcode ではカスタムフラグを通じて、すべての警告をエラーとして扱うか、すべての警告を抑制するかのどちらかしかできませんでした。しかし、Swift 6.1 では、「-Werror DeprecatedDeclaration」のような特定の診断グループを警告またはエラーとして扱うオプションが導入されました。重要なのは、これらのきめ細やかな制御は、Swift 6.2 になるまで Swift パッケージではサポートされていなかったという点です。これらの新機能を利用するには、開発者は Package.swift ファイルで Swift ツールバージョンを 6.2 に更新する必要があります。Swift 6.2 は、「treatAllWarnings(as:)」や「treatWarning("group", as:)」のような新しい swiftSettings を提供します。これらの設定により、例えば「DeprecatedDeclaration」のような特定のグループを除いて、すべての警告をエラーとして扱うといった、正確な設定が可能になります。これらの警告制御設定は、パッケージが直接ビルドされる場合にのみ適用され、リモート依存関係として使用される場合は無視されることに注意してください。開発者は、パッケージ内のすべてのターゲットに対してこれらの制御を適用するために、ターゲットを反復処理し、目的の設定を swiftSettings に追加できます。この強化により、ビルド時の警告やエラーの管理において、より大きな柔軟性が得られます。
CdXz5zHNQW_5ZPzFJEMHm.png
Swift 6.2 では、Observable 型からの状態変更をストリームするための新しい Observations 型が導入されました。これは、シーンの検索クエリやナビゲーションパスのようなアプリケーションの状態を永続化するのに役立ちます。著者は以前、この状態を Codable クラスである SceneModel で管理していました。このクラスは、永続化のために JSON にエンコードすることができました。この SceneModel は、ルートビューの @SceneStorage を使用して保存および復元されていました。しかし、状態の保存は scenePhase を監視することに依存していましたが、シーンがバックグラウンドに入る前に終了する可能性があるため、これは信頼性が低いものでした。Swift 6.2 より前は、@Published プロパティを持つ ObservableObject により、Combine の buffervalues を使用して AsyncSequence を作成し、状態変更を保存することができました。iOS 26 と Swift 6.2 では、Observations 型が Observable 型に対して同様の AsyncSequence を提供します。これにより、SceneModel の JSON 表現のような計算プロパティを監視できます。Observations 型は、監視する値を返すクロージャを受け取ります。変更はトランザクショナルであり、観測可能なプロパティに対する複数の同期更新は、単一のシーケンス値にバッチ処理されます。更新の追跡は、観測可能なプロパティの willSet から開始され、次のサスペンションポイントで終了します。これにより、scenePhase に依存することなく、シーンモデルの状態が変更されるたびに自動的に保存できるようになります。Observations からの AsyncSequence は、サブスクライブ時に観測されたプロパティの初期値を発行します。
Xcode 26 は Swift 6.2 で「Approachable Concurrency」を導入し、Swift Concurrency を簡素化します。このアプローチは、まずコードをメインスレッドで実行することを優先し、必要になった場合にのみバックグラウンドに処理を移動させます。これを採用するには、既存のプロジェクトは Xcode 内でビルド設定を調整する必要があります。新しいプロジェクトでは、デフォルトのアクター分離を含め、この機能が自動的に有効になります。「Approachable Concurrency」を有効にすると、InferIsolatedConformances や NonisolatedNonsendingByDefault といった今後の機能が利用可能になります。Swift Package も、swift-tools-version を更新し、ターゲット設定を構成することで、これらの機能を使用できます。Package.swift 内の新しい swiftSettings オプションでデフォルトのアクター分離を設定できます。すべての機能を有効にするには、「enableUpcomingFeature」フラグを swift settings に追加する必要があります。これらの設定を Swift Package のすべてのターゲットに適用するには、Package.swift ファイルに特定の構成を追加する必要があります。早期採用すると、CodingKey のようなプロトコルに関連するコンパイラ警告が発生する可能性があります。これらの分離に関連する問題は、将来的に解決される予定であり、回避策も用意されています。
CdXz5zHNQW_BQHW5Oy3tB.png
Xcode 26 において、新しいツールである Icon Composer が Liquid Glass デザインシステムのアイコンを構築することを支援します。Icon Composer を使用するには、好みのデザインツールでアイコンの前景レイヤーをデザインし、完全に不透明な SVG レイヤーとしてエクスポートし、Icon Composer にインポートします。Icon Composer では、背景を追加し、レイヤーのサイズと位置を調整し、不透明度、色、グラデーション、シャドウ、ガラス効果を設定します。Xcode は、単一の .icon ファイルを使用して、サポートされているプラットフォームのすべてのアイコンバリアントを生成します。Xcode プロジェクトにアイコンを追加するには、.icon ファイルをプロジェクトナビゲーターサイドバーにドラッグします。追加後、Xcode から直接 Icon Composer でアイコンファイルを開き編集することができます。ターゲット設定の App アイコンセット名が、.icon 拡張子を除く Icon Composer アイコンファイル名と一致していることを確認してください。不幸にも、Icon Composer は代替アプリアイコンをサポートしていませんため、画像ファイルをアセットカタログに手動で追加する必要があります。これにより、Icon Composer の代替アプリアイコンに対する有用性が低下します。Apple は、Icon Composer とアプリアイコンデザインについて学ぶためのリソース、包括 Human Interface Guidelines と WWDC ビデオを提供しています。
CdXz5zHNQW_9KktMjMyKW.png
iOS 17でAppleは、コンテキストに応じたヒントをユーザーに表示するTipKitを導入しました。これは、ヒント表示頻度と制御イベントを追跡します。iOS 18では、CloudKitを使用してTipKitの状態を同期することで、各デバイスで同じヒントを繰り返し表示することを回避できます。CloudKit同期を有効にするには、Xcodeでアプリターゲットを選択し、iCloud機能を追加してCloudKitを選択します。次に、.tipsで終わるコンテナ識別子を追加し、「バックグラウンドモード」機能で「リモート通知」を有効にします。TipKitはデフォルトではCloudKitと同期しないため、ヒントデータストアの設定時にCloudKitコンテナを有効にする必要があります。.automaticオプションを使用するか、特定の識別子を指定してCloudKitコンテナを設定できます。Core Data/SwiftDataデータベースをCloudKitと同期する際には注意が必要です。間違ったコンテナ識別子を使用する可能性があるためです。Appleは、ヒントの同期には別のコンテナを使用することを推奨しており、権利ファイルで最初にCore Data/SwiftData識別子をリストするか、永続ストアを読み込む前に明示的に設定できます。TipKitとCloudKitの同期はWWDC24で導入されました。さらに、「モダンオートレイアウト」に関する書籍がWWDC25セール期間中に割引価格で提供されています。
CdXz5zHNQW_StQr2PuKiZ.png
CdXz5zHNQW_ESIkQvIFTI.png
この記事では、カスタムSwiftUIのButtonとLabelスタイルの作成について説明しています。これには、コンパクトな水平サイズクラスでは垂直レイアウトに切り替わる適応型ラベルスタイルと、塗りつぶされた黄色のカプセルと等幅フォントデザインのカスタムカプセルボタンスタイルが含まれます。これらのスタイルは、.labelStyleおよび.buttonStyle修飾子を使用してビューに適用できます。しかし、LabelStyleButtonStyleに便利な拡張機能を作成することはあまり一般的ではありません。これは、修飾子のよりコンパクトな形式を可能にします。これを達成するために、この記事では、Appleが組み込みスタイルを定義する方法と同様に、ButtonStyleLabelStyleを拡張することを提案しています。これには、カスタムスタイルのインスタンスを返す静的プロパティまたは関数を拡張に追加することが含まれます。たとえば、カプセルボタンスタイルは、CapsuleButtonStyleインスタンスを返す静的プロパティcapsuleで拡張できます。これにより、コンパクトな形式.buttonStyle(.capsule)を使用してスタイルを適用できます。カスタムスタイルに、設定可能な色などのパラメータがある場合、パラメータを受け取り、カスタムスタイルのインスタンスを返す関数を含めるように拡張機能を変更できます。これにより、.buttonStyle(.capsule(.orange))のようにパラメータを使用してスタイルを適用できます。この記事では、便利なカスタムスタイルを作成するためにButtonStyleLabelStyleを拡張する方法の例を示しています。
SwiftUIの.keyboardShortcutモディファイア(iOS 14で導入)を使うと、コントロールにキーボードショートカットを割り当てることができます。これらのショートカットは、コントロールの主要なアクションをトリガーします。このモディファイアは、デフォルトのコマンドキー以外の修飾キーもカスタマイズ可能です。具体的な例として、ボタンにショートカットを適用してビュー間を移動させる方法が挙げられます。驚くべきことに、ショートカットは、関連するコントロールが画面外にある場合でも有効なままです。この挙動は、SwiftUIがビュー階層を深さ優先でトラバースしてショートカットのターゲットを見つけることに起因します。システムは、可視性に関係なく、最初に一致するコントロールを見つけることを優先します。これにより、画面外のコントロールが依然としてショートカットに応答するという予期せぬ動作が発生する可能性があります。この問題の回避策として、ビューの状態に基づいて.disabledモディファイアを使用してコントロールを無効にすることが挙げられます。これにより、関連するコントロールが表示されている場合にのみショートカットが有効になります。Curt Clifton氏のコメントが、さらなる背景情報を提供しています。
CdXz5zHNQW_hbjMzJI3Vw.png
SwiftUIで言語学習アプリを作成する際、テキストがデバイスのロケールとは異なる言語の場合、VoiceOverがテキストを正しく発音しないことがあります。これを修正するには、VoiceOverで使用されるアクセシビリティ言語を変更する必要があります。UIKitでは、テキストラベルのaccessibilityLanguageプロパティを設定できますが、これはSwiftUIでは利用できません。提案された解決策の一つは、accessibilitySpeechLanguage属性を持つAttributedStringを使用することですが、これは機能しません。別の解決策は、environmentモディファイアを使用して、各ビューのロケール環境を変更することです。ただし、これはTextビューのverbatimイニシャライザを使用する場合にのみ機能します。デフォルトではテキストをローカライズされた文字列キーとして扱うためです。この解決策はTextビューには有効ですが、Labelなどのビューにはより長い形式が必要です。ロケールをラベルまたは子テキストビューに適用できますが、アイコン付きのLabelを使用する場合、ロケールはButtonに適用された場合にのみ有効になります。つまり、VoiceOverは「button」を修正されたロケールで発音しますが、メインテキストは正しく発音されます。全体として、SwiftUIでVoiceOverで使用されるアクセシビリティ言語を変更するには、各ビューのロケール環境を変更することが解決策となります。
SwiftUIにおけるスクロールビュー内のコンテンツの垂直方向の整列を、ダイナミックタイプサイズに適応する方法について論じる記事である。最初に、画面の高さを超える可能性のあるコンテンツを収めるために、シンプルなスクロールビューが使用される。しかし、これにより、コンテンツがスクロールビューよりも小さい場合に、コンテンツが上部に整列してしまうことがあり、これは望ましくない。iOS 17では、defaultScrollAnchorモディファイアが導入されたが、スクロールビュー内に収まるコンテンツのみを中央に整列させるというニュアンスが欠けていた。iOS 18では、新しいdefaultScrollAnchorモディファイアが導入され、roleパラメータが追加された。このパラメータにより、開発者はさまざまな状況、特に.alignmentを使用してコンテナよりも小さいコンテンツを整列させるためのアンカー点をカスタマイズできるようになった。.alignmentロールのアンカーを.centerに設定することで、コンテンツは収まる場合に中央に整列し、コンテナの高さを超える場合は上部に整列する。2つのビューモディファイアのバリアントは、デフォルトを変更し、特定のロールのアンカーをオーバーライドするために一緒に使用できる。新しいモディファイアは、コンテナ相対のサイズに基づいてスクロールビューのコンテンツの整列を管理するための、より洗練されたアプローチを提供する。これにより、コンテンツの垂直方向の位置を動的に調整することで、より良いユーザーエクスペリエンスが実現される。
CdXz5zHNQW_YDEZMZMpGv.png
ローカルユーザーノチフィケーションの送信を許可するには、明示的なユーザーの承認が必要であり、これはdesired optionsとともにrequestAuthorizationメソッドを呼び出すことで実現できます。ただし、これによりユーザーにパーミッションプロンプトが表示されることがあり、理想的ではありません。iOS 12で導入された暫定的承認は、ユーザーに中断せずに静かに通知を配信することを許可する代替手段を提供します。暫定的承認を要求するには、承認リクエストに.provisionalオプションを追加します。当暫定的承認を使用する場合、通知センターにボタン付きで通知が配信され、ユーザーは通知を即時、静かに、あるいはスケジュールされたサマリーの一部として配信することを選択できます。暫定的承認では、アラートを表示したりアプリのアイコンにバッジを付けるための完全なパーミッションは付与されません。これには、ユーザーが通知設定を変更する必要があります。承認状態をチェックする際には、暫定的ステータスも考慮することをお勧めします。暫定的承認は、多くのアプリケーションにとって妥協の方法かもしれませんが、最終的には特定のユースケースに依存します。通知を送信する前に承認状態をチェックすることは、通知が正しく配信されることを保証するために不可欠です。
CdXz5zHNQW_jArWhqLPsY.png
SwiftUIのボタンがユーザーがボタンを押している間に表示する画像を変更するには、タイトルとデフォルト状態と押された状態の2つの画像を受け入れるカスタムボタンのスタイルを作成することができます。このカスタムスタイルは、ButtonStyleプロトコルに準拠する構造体を作成することで実現できます。ButtonStyleConfigurationは、ボタンのラベル、isPressed状態、およびボタンのロールにアクセスすることができ、これらの情報を使用して表示する画像を決定することができます。makeBodyメソッドでは、ボタンの構成をチェックし、isPressed状態に基づいて正しい画像を持つラベルを返すことができます。次に、このカスタムスタイルを使用して、押されたときに異なる画像を表示するInfoButtonのような特定のタイプのボタンを構築することができます。InfoButtonは、アプリケーションでボタンが押されたときに実行するアクションを指定して呼び出すことができます。また、symbolEffectモディファイアーを使用して、押されたときに画像をスケールアップするアニメーションをカスタムスタイルに追加することもできます。これにより、UIKitのボタンの状態構成と同様の効果をSwiftUIで実現することができます。カスタムボタンのスタイルは、アプリケーションの他のボタンでも再利用することができますので、便利なソリューションです。全体的には、SwiftUIボタンの外観をカスタマイズするには、カスタムボタンのスタイルを作成するのが良い方法です、特にビルトインスタイルがニーズに満たない場合。
アップルのHuman Interface Guideでは、ユーザーインターフェイスに目的のない動きを追加することを避けるようアドバイスしています。動きはユーザーにとって邪魔で不快なものになる可能性があるからです。動きはオプションでなければならず、重要な情報を伝える唯一の方法であってはなりません。振動する動きや大きなアニメーションなどの特定の動きは、ユーザーにとって問題を引き起こす可能性があります。ユーザーはデバイスのアクセシビリティ設定で動きを減らすことを要求できますが、これは標準的なビューの遷移に影響を及ぼす可能性があります。しかし、カスタムアニメーションは、開発者が自ら動作を無効化または置き換える必要があります。動きを減らす設定は、SwiftUIビューで@Environmentプロパティを使用して検出できます。ドキュメントでは、動きを減らす設定が有効になっている場合に、3次元を模した大きなアニメーションを避けることを推奨しています。アニメーションを無効にするには、開発者は動きを減らす状態を考慮して計算プロパティを作成できます。これは、動きを減らす設定が有効になっている場合にアニメーションに対してnilを返すことで実現できます。開発者は、自分のアニメーションに対して動きを減らす設定にどのように対応するかを決定する必要があります。
CdXz5zHNQW_8fvTYjYZBQ.png
WWDC24でAppleはSwift Testingを導入し、@Testマクロのargumentsパラメーターを使用してテスト関数に引数を渡すことを可能にしました。この機能により、パラメータ化されたテストが可能になり、argumentsコレクション内の各値に対してテスト関数が1回呼び出されます。Test Navigatorは各テストの結果を表示します。2つの引数が渡された場合、Swift Testingは2つの引数の全ての組み合わせに対してテストケースを生成します。ただし、最多2つの引数までしかサポートされず、全ての組み合わせが必要ない場合は、引数をzipしてペアリングすることができます。この機能は、同じ結果を期待する入力引数のコレクションをテストする場合に特に便利です。CaseIterable enumを使用してテストを駆動する場合にも特に便利です。著者は、XCTestベースのユニットテストをSwift Testingに移行する際、特にCore Dataマネージドオブジェクトクラスの属性を検証する場合にこの機能が有効であったと発見しました。Swift Testingのアプローチは、forループを使用するよりも独立したテストケースが並列実行可能で、失敗の報告が明確になるなどの利点があります。全体的には、Swift Testingでのパラメータ化されたテストはテストを簡略化し、結合することができます。
スウィフト・テストは、AppleがWWDC24で導入し、Xcode 16に同梱されたオープンソースのテスト・フレームワークです。スウィフトのモダンな機能 seperti 並行処理やマクロを使用し、AppleのプラットフォームだけでなくWindowsやLinuxもサポートしています。XCTestから移行する緊急の理由はないが、スウィフト・テストはいくつかの利点を提供します。例えば、スウィフト・コンカレンシーを使用して物理デバイス上で並列テストを実行することができます。スウィフト・テストを始めるには、テスト・ターゲット内でXCTestとスウィフト・テストのユニット・テストを混在させることができますが、テスト・フレームワークを混在させることは避けるべきです。テスト・ファイルに「import Testing」を追加することで、スウィフト・テスト・フレームワークをインポートできます。Appleは、テストをグループ化するために、構造体やクラスにテストを追加し、init メソッドを使用してセットアップとティアダウンを行うことを推奨しています。スウィフト・テストのテストは、@Test マクロを追加することで通常のスウィフト・メソッドがユニット・テストになるものです。テスト・メソッドにはasyncやthrowsをマークすることができ、必要に応じてアクターに分離することもできます。@Test 属性は、マクロであり、実装を見ることができます。スウィフト・テストでは、#expect と #require マクロをアサーションに使用し、XCTestのXCTAssertよりも柔軟性と情報の多いエラーメッセージを提供します。#expect マクロは、失敗した期待をログに記録し、テストを継続します。一方、#require マクロは、エラーが発生するとテストの実行を停止するthrowing バージョンです。また、Issue.record を使用して、条件を評価せずにテストに失敗することもできます。これは、XCTestのXCTFailと似ています。全体的に、スウィフト・テストはXCTestよりも並行処理のサポートやアサーションの柔軟性が向上しています。
iOS 18では、UIKitが自動トレイト追跡を導入し、レイアウト更新メソッドでトレイト変更通知を手動で登録する必要がなくなりました。この機能は、UIViewのlayoutSubviews、updatesConstraints、drawなどのメソッド、およびUIViewControllerのviewWillLayoutSubviewsとupdateViewConstraintsなどのメソッドでサポートされています。UIKitがこれらのメソッドのいずれかを呼び出すと、どのトレイトにアクセスしたかを記録し、トレイトが変更されたときにビューを自動的に無効にします。これは、setNeedsLayout、setNeedsUpdateConstraints、setNeedsDisplay、またはsetNeedsUpdateConfigurationなどのメソッドを使用して行われます。たとえば、UIViewのサブクラスでdrawをオーバーライドし、preferredContentSizeCategoryトレイトにアクセスすると、トレイトが変更されたときに自動的にsetNeedsDisplayが呼び出されます。iOS 18以前は、開発者はトレイト変更を手動で登録し、setNeedsDisplayを呼び出してdrawを呼び出す必要がありました。しかし、自動トレイト追跡では、このプロセスはUIKitによって自動的に処理されます。この機能により、トレイト変更に応じるプロセスが簡素化され、必要なコード量が減ります。自動トレイト追跡は、iOS 18の重要な改善点であり、開発者が適応性の高いユーザーインターフェイスを作成することを容易にします。
iOS 18では、AppleはSwiftUIの様々なアクセシビリティ修飾子に、オプションのisEnabledパラメータを導入しました。このパラメータにより、開発者は特定の条件に基づいてアクセシビリティ修飾子を条件付きで適用できます。isEnabledパラメータは、.accessibilityLabel.accessibilityInputLabels.accessibilityValue.accessibilityHintなどの修飾子で使用できます。この機能は、開発者がデフォルトのアクセシビリティ動作を条件付きでオーバーライドする必要がある場合に役立ちます。たとえば、お気に入り状態を切り替えるボタンが付いたアイテムのリストでは、ボタンアクションのデフォルトのアクセシビリティラベルをお気に入り状態に基づいて変更できます。条件付きのアクセシビリティラベルを提供する代わりに、開発者は修飾子のisEnabledバリアントを使用して、特定の条件が満たされた場合にのみカスタムラベルを適用できます。このアプローチは、デフォルトラベルの繰り返しとローカリゼーションを回避します。提供された例では、.accessibilityLabel修飾子はisEnabledパラメータと共に使用され、アイテムがお気に入り状態の場合にのみカスタムラベル「お気に入り解除」を適用します。これは、コードを簡素化し、ローカリゼーションの労力を削減する小さな改善です。iOS 18でのisEnabledパラメータの導入により、SwiftUIにおけるアクセシビリティ修飾子の柔軟性が向上しました。
アップルは、iPhone 16 シリーズを発表しました。iPhone 15 Pro モデルは廃止され、ベースモデルの iPhone 16 シリーズが強化された機能で拡張されました。Pro モデルは画面サイズが拡大し、iPhone 16 Pro は 6.3 インチディスプレイ、iPhone 16 Pro Max は 6.9 インチディスプレイを搭載しています。画面サイズが大きくなったにもかかわらず、Pro モデルはベゼルを縮小することでコンパクトなフォームファクターを維持しています。すべてのモデルに、アクションボタンとカメラコントロールボタン、A18 チップが搭載されています。ベースモデルの iPhone 16 モデルは、画面サイズはそのままですが、ProMotion と常時表示機能は搭載されていません。ボディはアルミニウム製です。iPhone 16 Plus は、iPhone 16 と同じ仕様ですが、画面サイズが大きく、バッテリー寿命が向上しています。Pro モデルは、USB-3 対応、ProMotion ディスプレイ、常時表示機能、チタン製ボディなどの専用機能を引き続き提供しています。画面サイズが大きくなったにもかかわらず、Pro モデルは先代モデルと比べてわずかに寸法が大きくなっています。App Store Connect は、iPhone 用のスクリーンショットを 6.9 インチまたは 6.5 インチのいずれか 1 セットのみ必要とすることで、プロセスを簡素化しました。全体として、iPhone 16 シリーズは、画面サイズの大型化、機能強化、洗練されたデザインなど、段階的な改良を提供しています。
iOS 18 の Previewable マクロについて1. iOS 18 の Apple の Previewable マクロは、State バインディング付きの SwiftUI プレビュー用のボイラープレートラッパービューを生成します。 2. SwiftUI プレビューはビュー作成のエクスペリエンスを向上させることができますが、多くの場合、State バインディングを持つコンテナビューが必要です。 3. Previewable マクロは、プレビューで直接 @State プロパティを宣言することで、手動でラッパービューを作成する必要性を排除します。 4. このマクロは、必要な状態プロパティを持つラッパービューを作成します。 5. Previewable マクロを使用するには、プレビューのルートにある @State プロパティに @Previewable マクロを付けます。 6. このマクロは、状態プロパティとプレビュービューを含むラッパービューに変換されます。 7. Previewable マクロによって生成されるラッパービューは、手動で作成されたラッパービューに似ています。 8. Previewable マクロは、State バインディングを持つインタラクティブな SwiftUI プレビューの作成を簡素化します。 9. ラッパービューに必要なボイラープレートコードを減らし、開発プロセスを効率化します。 10. WWDC24 の「SwiftUI の新機能」で、Previewable マクロとその他の SwiftUI の進歩の詳細を参照してください。
Xcode 16 のアセットカタログにおける「アセットシンボル」プロパティXcode 16 は、アセットカタログに「アセットシンボル」プロパティを導入し、シンボル生成を制御することを可能にしました。このプロパティにより、Swiftパッケージはシンボル生成をオプトアウトできるようになりました。以前はこれは不可能でした。デフォルトの設定は「継承」で、プロジェクト/ターゲット設定から継承されます。「拡張機能オン」はシンボル生成を有効にし、「拡張機能オフ」はSwiftパッケージ内の個々のアセットカタログに対してシンボル生成を無効にします。シンボル生成は、アセットカタログ内のカラーと画像に対してSwiftおよびObjective-Cシンボルを作成します。デフォルトでは、新しいプロジェクトではシンボル生成が有効になっていますが、プロジェクト設定でカスタマイズできます。生成されたカラーシンボルは、ColorResourceの静的プロパティであり、画像シンボルはImageResourceの静的プロパティです。SwiftUI、UIKit、およびAppKitタイプのフレームワーク拡張も生成されますが、フレームワークサポートは制限できます。生成されるシンボルの最初の文字は、アセットカタログ名が大文字で始まっていても、小文字になります。このオプトアウト機能により、Swiftパッケージはシンボル生成の競合を回避し、アセットシンボルの使用をより細かく制御できます。
WWDC 2024 セッションをナビゲートするには、まず Platforms State of the Union を見て、今年のアップデートの概要を把握しましょう。Swift 6 は言語機能の強化と新しい Static Linux SDK を導入します。SwiftUI は、フローティングタブバーやカスタムコントロールなど、アップデートを受けます。UIKit も、ドキュメントの起動エクスペリエンスや新しいアニメーションなど、強化が加えられています。iPadOS は、タブとサイドバーのエクスペリエンスを向上させることに焦点を当てています。AppKit は、Writing Tools API やウィンドウのタイル化など、新しい機能を獲得します。watchOS は Live Activities を導入し、tvOS は TVML アプリを SwiftUI に移行することを推奨しています。クロスプラットフォームセッションでは、UI アニメーションと新しいドキュメント起動エクスペリエンスを取り上げます。Xcode 16 は、デバイス上のモデルによるコード補完とプレビュー可能なマクロを実現します。開発者は、Swift テストフレームワークと Xcode Cloud ワークフローも活用できます。ローカリゼーションとアクセシビリティのアップデートには、多言語キーボードのサポートと動的フォントサイズのスケールアップの改善が含まれています。StoreKit とアプリ内購入では、トランザクション履歴の強化と AdAttributionKit による新しいプライバシー保護型広告属性が導入されます。
アップル、4つの新型iPadを発表:13インチと11インチのiPad Pro(M4)、および13インチと11インチのiPad Air(M2)アップルは、4つの新型iPadを発表しました。13インチと11インチのiPad Pro(M4)、そして13インチと11インチのiPad Air(M2)です。iPad Proは、M4チップ、新しいUltra Retina XDR OLEDディスプレイ、横向きに配置されたFace IDカメラを搭載しています。iPad Airは、M2チップを搭載していますが、IPS Liquid RetinaディスプレイとTouch IDはそのままです。13インチモデルは、新しい命名規則にもかかわらず、以前の12.9インチと10.9インチモデルと同じディスプレイサイズです。ProモデルはAirモデルよりも薄く、13インチは5.1mm、11インチは5.3mmです。4つのモデル全てがApple Pencil ProとApple Pencil(USB-C)に対応しています。第一世代と第二世代のApple Pencilは、これらの新型モデルでは使用できません。Proモデルでは、ストレージ容量が1TB以上の場合は、4つのパフォーマンスコアを持つ10コアCPUと16GBのRAMが搭載されます。エントリーモデルのiPad(第10世代)とiPad mini(第6世代)は、変更されていません。開発者は、13インチのiPad Proと12.9インチのiPad Pro(第2世代)の両方にApp Storeのスクリーンショットをアップロードする必要があります。13インチのスクリーンショットは、同じディスプレイサイズを持つProモデルとAirモデルのどちらにも対応できます。