WWDC Quick Look 💓 By SwiftGGTeam
Platforms State of the Union

Platforms State of the Union

元の動画を見る

ハイライト

Apple は 2023 年に Swift マクロ、SwiftData、インタラクティブ ウィジェット、および新しいvisionOS プラットフォームを発表し、Xcode 15 でリンク速度を最大 5 倍に向上させます。

主要内容

毎年、WWDC のプラットフォーム一般教書は、開発者がテクノロジー トレンドの方向性を判断するための基準となります。 2023年のスピーチはダリン・アドラー氏が司会を務め、6人のエンジニアリングリーダーが順番に登壇し、言語、フレームワーク、ツール、ハードウェア、新プラットフォームの5つのレベルをカバーした。

(04:03) Holly Borla が最初に Swift 5.9 のマクロ システムを紹介しました。マクロは、コード構造に基づいて新しいコードを生成するコンパイル時の注釈です。 1つ#URLマクロは、コンパイル中に URL 文字列が正当かどうかをチェックできます。スペースが含まれている場合は、エラーが直接報告され、修復の提案が表示されます。添付されたマクロはより強力です - 追加@AddAsyncを使用すると、2 番目の関数を手動で記述しなくても、async/await バージョンを自動的に生成できます。マクロは Xcode で完全に拡張可能、デバッグ可能、ブレークポイント可能であり、ブラック ボックスはありません。

(09:30) Josh Shaffer がバトンを引き継ぎ、SwiftUI について話します。今年の焦点はアニメーションです。ジェスチャーの速度をアニメーションに自動的に転送できます。デフォルトのアニメーションがスプリングベースの物理的な動きに変更されます。期間とバウンスのパラメータを設定するだけです。 SF Symbols はアニメーション効果もサポートしています。新しい機能を使用すると、より複雑なマルチステージ アニメーションを作成できます。AnimationPhaseAPIの実装。データの流れに関して言えば、@Observableマクロの置換ObservableObject + @Published組み合わせて、すべてのパブリック プロパティが自動的に公開され、SwiftUI はフィールド粒度でアクセスを追跡し、未使用のフィールド変更によってビューの再描画がトリガーされることはありません。

(15:53) SwiftData は、今年の大きな新しいフレームワークです。これは Core Data の永続化レイヤーに基づいていますが、API は Swift 用に完全に再設計されています。クラスに追加@Modelマクロでは、永続化、iCloud 同期、元に戻す、やり直し、その他の機能が自動的に取得されます。プロパティには、一意性制約のための追加の注釈を付けることができます。 SwiftData は Codable の struct と enum をネイティブにサポートしており、複雑な構造化データも効率的にクエリできます。 SwiftUI との統合では、ルート ビューに修飾子を追加してコンテナを設定するだけで済みます。@Queryデータを読むだけです。ウィジェットは、同じコンテナ内のデータに直接アクセスすることもできます。

(19:22) Jonathan Thomassian が、WidgetKit、App Intents、TipKit、AirDrop の新機能を紹介します。 iOS 17 ウィジェットはインタラクションをサポートしています - ボタンとトグルは、App Intent によってトリガーされて、ウィジェット内で直接応答できます。ウィジェットはスタンバイ モード、iPad のロック画面、macOS デスクトップで表示でき、同じ SwiftUI コードをプラットフォーム間で再利用できます。 TipKit は、ユーザーが繰り返し煩わされることを避けるために、状況に応じてインテリジェントに表示できるシステムレベルの機能ガイダンス テンプレートを提供します。

(27:26) Brandon Corey がゲームとカメラのアップデートを提供します。 macOS Sonoma には、ゲームの CPU および GPU リソースを優先するゲーム モードが追加されています。 Game Porting Toolkit は 3 段階のソリューションを提供します。まずシミュレーション環境を使用して Mac 上での Windows ゲームの潜在的なパフォーマンスを評価し、次に Metal Shader Converter を使用して HLSL を Metal に自動的に変換し、最後にグラフィックス コードを最適化します。カメラ側では、ゼロシャッターラグ、オーバーラップキャプチャと遅延処理により、連写速度が3倍になります。 HDR 写真は ISO 国際規格を取得しており、iOS/iPadOS/macOS はいずれも HDR 対応写真を表示するための API を提供しています。

(34:40) Lori Hylan-Cho が watchOS 10 の革新的な設計を披露します。 SwiftUI はこのシステム レベルの再設計の中核です。Vertical TabView は可変ページ サイズをサポートし、containerBackground モディファイアはグラデーション塗りつぶしを使用して読みやすさを向上させ、NavigationSplitView はクロスプラットフォーム コードを直接再利用します。コーナー位置にある ToolbarItem を使用すると、時間を自動的に中央に配置できます。すべての主要な UI コンポーネントには、ハードウェア サイズに自動的に適応するようにマテリアル ハンドリングが更新されました。

(39:41) Chris がアクセシビリティとプライバシーの新たな展開について説明します。アニメーションやライトの点滅に敏感なユーザーのために、システムにはアニメーション画像の一時停止とライトの薄暗い点滅という 2 つの新しい API が追加されました。前者は GIF アニメーションを停止し、後者はビデオ内の点滅シーケンスを自動的に暗くします。このアルゴリズムはオープンソース化されています。 visionOS には、視線制御、音声制御、ヘッド ポインター、その他の代替入力方法を含む、多数のアクセシビリティ機能が初日から組み込まれています。

(52:42) Ken Orr が Xcode 15 の改善点を要約しています。コード補完はコンテキストを活用して、最も関連性の高い提案を優先します。リソース ディレクトリはシンボルを自動的に生成し、タイプ セーフティを提供します。 SwiftUI プレビューはすべての UI フレームワーク (SwiftUI、UIKit、AppKit) をサポートしており、キャンバス内でプラットフォームとデバイスを直接切り替えることができます。 Git ステージング機能はエディターに統合されています。テスト レポートは完全に再設計され、トップ インサイト、ヒート マップ、タイムライン、ビデオ録画が含まれています。リンク速度は最大 5 倍に向上し、デバッグ バイナリ サイズは 30% 削減されます。 Xcode App Store は 50% 小さくなり、シミュレーターはオンデマンドでダウンロード可能です。

(01:00:56) Mike Rockwell がフィナーレでvisionOSを紹介しました。アプリはデフォルトで共有スペースに起動され、他のアプリと一緒に存在します。ウィンドウ (フラット ウィンドウ)、ボリューム (3D コンテナ)、およびフル スペース (完全な没入空間) の 3 つの要素を使用できます。 SwiftUI は深度サポートを拡張し、ZStack は Z オフセットを使用して 3 次元空間に階層化できます。 RealityKit は周囲の照明に自動的に適応し、影を落とし、動的な中心窩レンダリングを使用してエッジ レンダリングのオーバーヘッドを削減します。 ARKit は、平面推定、シーン再構築、画像アンカリング、およびワールド トラッキングを提供します。ペルソナと空間ペルソナを使用すると、FaceTime 通話中のユーザーが 3 次元で表示され、SharePlay で物理的な動きを同期できます。

詳細

Swift マクロの実際の形式

マクロには 2 つの形式があります。独立したマクロの場合(自立型)#プレフィックス:

let url = #URL("https://developer.apple.com")

アタッチされたマクロに使用されます (Attached)@プレフィックスを付けて、既存のステートメントを直接変換します。

@AddAsync
func fetchContent(completion: @escaping (Result<String, Error>) -> Void) {
    // 既存の実装
}

// マクロが async 版を自動生成するため、そのまま呼び出せます:
let content = try await fetchContent()

キーポイント:

  • #URL文字列形式はコンパイル中に検証され、不正な URL は直接コンパイルされてエラーが報告されます。 -@AddAsync2 番目の関数を手書きする必要はなく、生成されたコードは Xcode で展開して表示できます。
  • デバッグ時、マクロ展開後のコードにステップインでき、動作は完全に透過的です

SwiftData の最小使用パス

import SwiftData

@Model
class Backyard {
    var name: String
    var birds: [Bird]
    var foodLevel: Int
}

// 根视图设置容器
.windowStyle(.automatic)
.modelContainer(for: Backyard.self)

// 视图读取数据
@Query var backyards: [Backyard]

キーポイント:

  • @Model代わりの@Observable、持続性と観察能力を同時に獲得します。 -modelContainerアプリレベルで一度設定します -@Query永続ストレージからデータを自動的にロードし、ウィジェットもアクセスできる
  • 元に戻す/やり直しをサポートし、追加のコードは必要ありません

VisionOS アプリケーションの 3 層空間モデル

要素目的SwiftUI シーン タイプ
ウィンドウ従来の 2D インターフェイス、3D コンテンツを含めることが可能WindowGroup
ボリュームあらゆる角度から見える3Dオブジェクトを表示WindowGroup + defaultSize
フルスペース他のアプリケーションを非表示にして、完全に没入型のエクスペリエンスを実現ImmersiveSpace

(01:03:22) SwiftUI は、visionOS 上の RealityKit を介してレンダリングされるため、SwiftUI と RealityKit API を直接混合できます。オーナメントはウィンドウの端に取り付けられ、ホバー効果は視線に自動的に反応し、マテリアルは周囲の照明に基づいて動的に調整されます。

重要ポイント

  • マクロを使用してチーム内の重複テンプレートを排除: チームに同様のボイラープレート コード (ネットワーク リクエストのカプセル化、ロギング、ステート マシン変換など) が大量にある場合は、内部マクロ パッケージを作成し、Swift パッケージを通じて共有できます。これはコード ジェネレーターよりも軽量であり、コンパイラーと統合されています。

  • 新しいプロジェクトのデフォルトの永続化ソリューションとして SwiftData を使用します: iOS 16 以前のバージョンと互換性がある必要のない新しいプロジェクトは、SwiftData を直接使用して Core Data を置き換えることができます。モデル クラスは純粋な Swift で記述されており、.xcdatamodeld ファイルを必要としないため、チーム メンバーが理解しやすくなっています。

  • 高頻度の軽量操作をウィジェットに追加: アプリ内で最もよく使用されるシングルステップ操作 (完了のマーク付け、お気に入りの切り替え、開始タイミングなど) を整理し、ウィジェット内のボタンまたはトグルにします。ユーザーはアプリを開く必要がなく、使用頻度が大幅に向上します。

  • visionOS の「ここでしか起こり得ない」瞬間を見つけてください: アプリ全体を宇宙プラットフォームに移動しようとしないでください。パノラマ写真閲覧、3Dモデル表示、多人数コラボレーションホワイトボードなど、既存の機能の中から「広い空間で見たほうが衝撃的だろう」シーンを見つけて、その瞬間だけを最適化する。

関連セッション

コメント

GitHub Issues · utterances