WWDC2021 のメモ
Keynoteで気になったもの
- async/await/actor: Swift で並行処理のコードをシンプル・安全に書ける
- In-App Events (App内イベント): アプリの動的なコンテンツをApp Storeに表示できる
- Xcode Cloud: ビルド、テスト、配布 (Xcode と統合されたCIサービス)
Platforms State of the Union - WWDC 2021 - Videos - Apple Developer
Xcode Cloud
- ベータ登録あり
- Xcode からワークフローの設定や実行ができる
- Slack への通知も可能
async/await
- Structured Concurrency (構造化された並行性)
- 同時に行うタスクを整理し推論しやすくする方法
- 並行の小タスクを簡単に作成できる
- 「ダンサーのウォームアップが終えるのを待つ」タスクが完了してから「舞台装置を持ってくる」タスクを行っていたコードを書き変える例。これらを並行に処理できるようにする
- 共有状態へのアクセスが並行タスク間で確実かつ安全に調整される
- Actor が中核
- 同時に行うタスクを整理し推論しやすくする方法
- Actor は業界で実証済みのモデル
- 相互排他的なアクセスのみを提供することで自身の状態を守るオブジェクト
- 並行のアクセスとそれに伴うローレベルのデータ競合を完全に排除する
- DispatchQueue をいくつも書くパターンではミスが起きがちだった
- Swift では
actor
キーワードで宣言できる- async/await で相互排他性を保証する
- 手動で同期させる必要がない
- メインキューにdispatch していた関数を
@MainActor
を使って書ける - 言語仕様に組み込んだので、 パフォーマンス改善も可能になる
- コンパイラが賢くなるにつれて並行コードの速さも向上する
SwiftUI
- List への機能追加 (1行で書ける)
- スワイプアクション
.swipeActions
- pull-to-refresh
.refreshable
- 検索フィールド
.searchable
- スワイプアクション
- 自動で見栄えを調整するUI が1行のコードで実現可能
Swift Playgrounds 4
- iPad でSwift やSwiftUI のコードが書ける
- アプリをApp Store Connect へアップロードできる
AR
- Object Capture で3Dモデルを簡単に作れる
Metal
- M1 リリース
- Apple のCPU, GPU, Metal でUnified Metal Graphics Platform (統合型グラフィックスプラットフォーム) を実現
- 10億台以上のデバイス
- あるゲームはMac 版とiPad 版をリリースできた
- ゲームや開発ツールのようなアプリで高性能のグラフィック処理が可能
他
- 通知への新しいアプローチ
- Interruption Level API
- 緊急性を指定して通知を扱うことが出来る
- 新しいUser Notification API
- Focus Status API
- Screen Time API
SharePlay
- GroupActivities フレームワーク
- 複数のデバイスで動画再生を同期
- コンテンツのデータは送受信しない (各端末がサーバーからデータをダウンロードするため高品質)
- E2E 暗号化でプライバシーが保たれる
- ホワイトボードに描くペンの動きを同期する例
- 画面共有ではないので全員の端末から書き込める
App Store
What’s New - App Store - Apple Developer
- In-app events
- 製品ページのA/Bテスト
- カスタム製品ページ
- StoreKit 2
- App Store server APIs
App Store Review Guideline
App Store Review Guideline updates now available - News - Apple Developer
-
5.1.1(v): Apps supporting account creation must also offer account deletion.
App Store Review Guidelines - Apple Developer
(v) Account Sign-In: If your app doesn’t include significant account-based features, let people use it without a login. If your app supports account creation, you must also offer account deletion within the app. Apps may not require users to enter personal information to function, except when directly relevant to the core functionality of the app or required by law. If your core app functionality is not related to a specific social network (e.g. Facebook, WeChat, Weibo, Twitter, etc.), you must provide access without a login or via another mechanism. Pulling basic profile information, sharing to the social network, or inviting friends to use the app are not considered core app functionality. The app must also include a mechanism to revoke social network credentials and disable data access between the app and social network from within the app. An app may not store credentials or tokens to social networks off of the device and may only use such credentials or tokens to directly connect to the social network from the app itself while the app is in use.
- Xcode 13
- Xcode Cloud
- ML
- AR
- SharePlay
- ShazamKit
- App Store
- SF Symbols 3
気になってるもの
- Swift async/await
- SwiftUI modifier 追加 (.swipeActions, .refreshable, .searchable)
- Xcode Cloud
- SF Symbols 3
- StoreKit 2
- アプリ内イベント
- 製品ページ A/Bテスト
- カスタム製品ページ