ハイライト
WWDC21 は iOS 15、iPadOS 15、macOS Monterey、watchOS 8、tvOS 15 をリリースします。 Swift は async/await ネイティブ同時実行構文を導入し、Object Capture API により分単位の 3D モデリングが可能になり、Xcode Cloud はクラウド CI/CD サービスを提供します。
主要内容
オンラインカンファレンスは継続、開発者コミュニティは拡大
昨年の WWDC には 2,500 万人近くの視聴者が集まり、これまでで最も視聴されたイベントとなりました。今年も引き続き無料で、200 以上の詳細なセッションや 1 対 1 のラボを含め、すべての開発者に公開されます。 Apple は、起業家精神ブートキャンプ、開発者アカデミー (最新のデトロイト アカデミーを含む)、および Learn to Code コースを通じて、次世代の開発者、特にテクノロジーの世界で過小評価されている開発者を教育しています。
(03:11)
iOS 15: 接続、集中、スマート、探索
FaceTime の大幅なアップデート
空間オーディオを使用すると、通話中の各人の声が画面上の対応する位置から聞こえ、対面での会話の音場をシミュレートできます。音声強調表示では、機械学習を使用して周囲の騒音を除去し、人間の音声のみを保持します。周囲の音を余すことなく残すワイドスペクトラムなので、音楽シーンに最適です。ポートレートモードでは背景をぼかして人物に焦点を当てます。
最も重要なものは FaceTime リンクです。これにより、Android および Windows ユーザーがブラウザで直接通話に参加し、エンドツーエンドの暗号化を維持できるリンクが生成されます。
(05:17)
SharePlay の共有エクスペリエンス
SharePlay を使用すると、ユーザーは Apple Music を聴いたり、ビデオを一緒に視聴したり、FaceTime 通話中に画面を共有したりできます。全員の再生の進行状況が同期され、共有の再生コントロールを使用して誰でも曲を一時停止したりスキップしたりできます。 SharePlay は、Disney+、Hulu、HBO Max、TikTok、NBA、Twitch などがすでに接続している API を提供します。
(09:54)
通知とフォーカス
通知システムの再設計: 連絡先の写真と大きなアプリアイコン。通知の概要は、緊急でない通知をパッケージ化し、設定した時間に均一にプッシュし、優先度に従って並べ替えます。フォーカス モードを使用すると、ユーザーは仕事、私生活、その他のシナリオに応じてさまざまな状態を作成できます。各州は通知を許可するアプリやユーザーを指定でき、異なるホーム画面ページに切り替えることもできます。
(16:52)
ライブ テキスト ライブ テキスト
カメラをホワイトボードまたはメニューに向けてポインタをクリックすると、テキストを選択、コピー、翻訳できます。簡体字中国語と繁体字中国語を含む 7 つの言語をサポートします。同じ一連の視覚認識により、犬の種類、花の種類、ランドマークなどの物体や場面も識別できます。
(20:08)
ウォレットとID
Wallet アプリには、自宅の鍵、会社のアクセス カード、ホテルの鍵が追加されます。最も重要なことは身元証明です。米国の一部の州では、運転免許証と州 ID をスキャンしてウォレットに取り込むことがサポートされており、TSA は空港の保安検査でのデジタル ID 確認を許可します。
(26:25)
iPadOS 15: 生産性の飛躍的な向上
ウィジェットはホーム画面のどこにでも自由に配置でき、iPad の大きな画面に合わせて特別に設計された特大ウィジェットが追加されました。アプリ リソース ライブラリが iPad に導入され、すべてのアプリを自動的に分類して整理します。
マルチタスク操作が完全に刷新されました。各アプリの上部にマルチタスク メニュー ボタンが追加されます。クリックして全画面表示、分割ビュー、またはスライドオーバーを選択します。新しいシェルフ領域は、アプリの開いているすべてのウィンドウを管理します。
クイック ノートは、iPadOS 15 のハイライト機能です。画面の右下隅からスワイプすると、フローティング ノート ウィンドウが表示され、現在のアプリが自動的に検出され、対応するリンクが追加されます。
Swift Playgrounds で完全なアプリを開発できるようになりました。 SwiftUI を使用してコードを作成し、実行中のエフェクトをリアルタイムでプレビューし、コード補完と完全な UI コンポーネント ライブラリをサポートし、App Store に直接送信することもできます。
(37:44)
プライバシー: アプリからネットワークまで包括的な保護
Mail Privacy Protection は、電子メールの送信者が隠しピクセルを使用して電子メールの開封動作や IP アドレスを追跡することを防ぎます。 Safari のインテリジェント トラッキング防止機能では IP アドレスも隠蔽されるようになり、トラッカーがサイト間であなたのアクティビティを関連付けることができなくなりました。アプリのプライバシー レポートには、過去 7 日間に各アプリが機密のアクセス許可にアクセスした頻度と、それらが接続したサードパーティのドメインが表示されます。
Siri はデフォルトでデバイス上の音声認識を処理するようになり、アプリの起動、設定の変更、音楽の制御などにネットワーク接続を必要としません。
iCloud の有料サブスクリプションは、同じ価格で iCloud+ にアップグレードされます。プライベート リレーは、二重リレーを通じて Safari トラフィックを暗号化するため、Apple でさえ、あなたが誰であるか、同時にどの Web サイトにアクセスしたかを知ることができません。 Hide My Email を使用すると、ランダムで一意の電子メール アドレスを作成し、それを個人の電子メールに転送できます。
(49:48)
macOS Monterey: デバイス間のコラボレーション
Universal Control は、この基調講演の最も素晴らしいデモです。 iPad を MacBook の隣に置くと、Mac のマウス カーソルが自動的に iPad 画面に移動し、1 組のキーボードとマウスが 2 つのデバイスを制御します。最大 3 台のデバイスをサポートし、ファイルを直接ドラッグ アンド ドロップしてデバイス間で転送できます。セットアップは必要ありません。
ショートカット ショートカットがついに Mac に登場し、豊富なプリセット ショートカットが組み込まれており、エディタはドラッグ アンド ドロップの組み合わせ操作をサポートしています。 Automator は引き続きサポートされており、そのワークフローをショートカットにインポートできます。
Safari はタブ エクスペリエンスを再設計します。ツールバーは合理化され、タブはよりコンパクトになり、検索バーはアクティブなタブと統合されました。タブ グループを使用すると、すべてのデバイス間で自動的に同期するタブのセットを保存できます。 Safari Web Extensions が初めて iPhone と iPad に登場します。
(01:20:10)
開発者ツール: 3 つの主要なアップデート
Swift 同時実行性 — async/await は Swift 言語の第一級市民になります。アクターテクノロジーと組み合わせることで、コードは複雑なコールバック地獄から直線的な一連のステップに同時に変更されます。これは、Swift コミュニティから最もリクエストの多い機能です。
オブジェクト キャプチャ — 写真測量を使用して、わずか数分で一連の 2D 写真を写真のようにリアルな 3D モデルに変換する革新的な macOS API。 Maxon (Cinema 4D)、Unity、Wayfair はすでに接続されています。
Xcode Cloud — Apple のクラウド CI/CD サービス。コードを送信すると、コードはクラウドで自動的に構築され、テストが並行して実行され、TestFlight に自動的に配布されます。ビルドはクラウドで行われ、他の作業は Mac 上でローカルに続行できます。
(01:37:15)
詳細
SharePlay API 実装ガイド
SharePlay を使用すると、FaceTime 通話中にアプリのコンテンツを他の人と共有できます。に基づいた実装GroupActivitiesフレーム。
import GroupActivities
// 定义可共享的活动
struct MovieNightActivity: GroupActivity {
var metadata: GroupActivityMetadata {
var metadata = GroupActivityMetadata()
metadata.title = "Movie Night"
metadata.type = .watchingVideo
return metadata
}
// 添加你的活动状态
var currentMovie: String?
}
// 在 FaceTime 通话中启动
func startActivity() {
let activity = MovieNightActivity()
activity.prepareForSharing()
Task {
switch await activity.join() {
case .joined(let session):
// 成功加入,开始同步
handleJoinedSession(session)
case .failed:
// 处理失败
break
}
}
}
キーポイント:
GroupActivityプロトコルは共有できるコンテンツのタイプを定義しますmetadata参加者のデバイスに表示されるアクティビティについて説明します。join()メソッドは既存の FaceTime グループ通話に参加しようとします- 使用
GroupSessionMessenger参加者間でデータを同期する
(09:54)
async/await 構文の例
Swift 5.5 で導入されたネイティブ同時実行構文により、非同期コードが大幅に簡素化されます。
// 旧的回调方式
func fetchUserProfile(completion: @escaping (Result<User, Error>) -> Void) {
URLSession.shared.dataTask(with: url) { data, _, error in
if let error = error {
completion(.failure(error))
return
}
guard let data = data else { return }
// 解码数据...
completion(.success(user))
}.resume()
}
// 新的 async/await 方式
func fetchUserProfile() async throws -> User {
let (data, _) = try await URLSession.shared.data(from: url)
return try JSONDecoder().decode(User.self, from: data)
}
// 调用异步函数
Task {
do {
let user = try await fetchUserProfile()
updateUI(with: user)
} catch {
handleError(error)
}
}
キーポイント:
asyncキーワードタグ非同期機能awaitキーワードは非同期操作が完了するまで待機しますthrowsまだエラーを示す可能性がありますTask非同期実行コンテキストを作成する- コードがネストされたコールバックから線形シーケンスに変更されました
(01:37:15)
Object Capture API
import RealityKit
import ObjectCapture
func create3DModel(from images: [URL]) async throws -> URL {
// 创建摄影测量会话
let session = PhotogrammetrySession()
// 添加图像
for image in images {
try await session.addImage(at: image)
}
// 生成模型
let outputURL = FileManager.default.temporaryDirectory
.appendingPathComponent("model.usdz")
try await session.process(outputURL: outputURL, detail: .full)
return outputURL
}
キーポイント:
PhotogrammetrySession写真測量プロセスを管理するaddImage(at:)モデリング用の写真を追加するprocess(outputURL:detail:)モデリングの実行detailパラメータはモデルの精度を制御します- さまざまな角度からの写真を 30 ~ 200 枚提供することをお勧めします。
(01:35:07)
重要ポイント
1. SharePlay をビデオ アプリに接続
- 内容: ユーザーが FaceTime 通話中にビデオ コンテンツを一緒に視聴できるようにします
- 実行する価値がある理由: SharePlay はソーシャル消費の自然な延長であり、ユーザーの滞在時間を増やし、共有意欲を高めることができます。
- 開始方法: 実装
GroupActivityプロトコル、使用AVPlayerのGroupWatchingActivity再生の進行状況が確実に同期されるようにするため
2.コアの非同期コードを async/await に移行する
- 内容: プロジェクト内のコールバックベースの非同期操作を async/await 構文に書き換えます。
- 実行する価値がある理由: コードは読みやすく、保守しやすく、コンパイラーはデータの競合を自動的にチェックし、同時実行性のバグを減らすことができます。
- 開始方法: ネットワークリクエスト層から書き換えを開始し、使用します
TaskそしてTaskGroup構造化された同時実行性の管理
3.オブジェクト キャプチャを使用して e コマース 3D 表示を生成します
- 内容: ユーザーが AR でプレビューできる製品の 3D モデルを提供します。
- 実行する価値がある理由: 3D ディスプレイにより、購入決定の信頼性が向上し、返品率が低下します。オブジェクト キャプチャにより、モデリング コストが数週間から数分に削減されます
- 開始方法: iPhone を使用して製品の写真を複数の角度から撮影し、
PhotogrammetrySessionUSDZを生成してARクイックルックで表示する
4.フォーカス モードの通知戦略を最適化
- 対処方法: 通知のタイミングと内容を確認し、時間に敏感な通知と時間に敏感でない通知を区別します。
- 実行する価値がある理由: iOS 15 のフォーカス モードは緊急でない通知をブロックする可能性があり、合理的な分類により重要な情報を確実に配信できます。
- 開始方法: 適切な通知を設定します
interruptionLevel(時間制限があるため、フォーカスの沈黙を通過する可能性があります)
5. Xcode Cloud でワークフローをセットアップする
- やるべきこと: CI/CD を Apple の公式クラウド サービスに移行する
- 実行する価値がある理由: すべての Apple プラットフォームに対するゼロ構成のサポート、Xcode との緊密な統合、ローカル マシンのリソースの解放
- 開始方法: Xcode の製品メニューで Xcode Cloud を有効にし、ワークフローを作成し、トリガー条件を構成します
関連セッション
- Swift の async/await について — Swift 5.5 で導入された async/await 構文と構造化同時実行モデル
- SwiftUI の新機能 — iOS 15 の SwiftUI アップデート
- UIKit の新機能 — UIKit フレームワークと iPad への適応に対する最新の改善点
- Apple のプライバシーの柱に注目 — Apple の 4 つのプライバシーの柱の技術的実装
- RealityKit でのオブジェクト キャプチャ — オブジェクト キャプチャ API の詳細な使用ガイド
コメント
GitHub Issues · utterances