WWDC Quick Look 💓 By SwiftGGTeam
Platforms State of the Union

Platforms State of the Union

元の動画を見る

ハイライト

Apple は、Mac が Intel プロセッサから自社開発の Apple Silicon に切り替わることを発表し、同時に macOS Big Sur、iOS 14 (ウィジェット + App Clip)、iPadOS 14 (Sidebar + Scribble)、watchOS 7 (SwiftUI ウォッチフェイス コンポーネント)、および Xcode 12 をリリースしました。 統合アーキテクチャにより、未変更の iPhone/iPad アプリを初めて Mac 上で直接実行できるようになりました。


主要内容

この一般教書演説は単一のフレームの発表ではありません。これは、2020 年の開発者にとって最も現実的な質問に答えます。Mac はプロセッサを変更する必要があり、iOS のホーム画面をサードパーティの情報に開放する必要があり、iPad は大型の iPhone から独立したプラットフォームに成長し続ける必要があり、watchOS はダイヤルをアプリケーションの入り口に変える必要があります。開発者は API だけを見ることはできません。アプリケーションがどの入り口でユーザーに発見されるか、どのハードウェアで実行されるか、どのシステム UI で再レンダリングされるかを決定する必要があります。

以前は、Apple のプラットフォームの境界は明確でした。 Mac アプリには独自のバイナリとウィンドウ モデルがあり、iPhone/iPad アプリはタッチ デバイスで停止し、Watch face コンポーネントは ClockKit に依存し、iOS アプリは通常、軽量エクスペリエンスのために Web ページまたはフル インストールに依存します。 2020 年の変更により、これらの境界は中間に向かって押し上げられます。ユニバーサル アプリには Apple Silicon と Intel コードの両方が含まれ、iPhone/iPad アプリは Apple Silicon Mac 上で実行でき、WidgetKit はホーム画面に SwiftUI ビューをもたらし、App Clip はタスクを 10 MB 未満のインスタント エクスペリエンスに分割します。

これは、SwiftUI がプレゼンテーション全体で繰り返し表示される理由も説明します。 macOS の通知センターは SwiftUI で構築されています。 WidgetKit は SwiftUI ビューのアーカイブに依存しています。 WatchOS 7 のコンプリケーションでは SwiftUI ビューを再利用できます。 SwiftUI 自体も Lazy スタック、グリッド、@mainそしてDocumentGroup。 Apple が示したルートは明確です。システムの入り口はさらに多く、プラットフォームの違いはまだ存在しますが、構築方法は可能な限り共有されるべきです。


詳細

Apple Silicon: Mac への移行はユニバーサル アプリから始まります

(01:35) Apple は、オープニングシーンで自社開発の Mac 用 Apple Silicon に切り替えます。変更の範囲は CPU 命令セット自体を超えており、SoC 機能のフルセットが Mac に搭載されます。これには、GPU がデータにアクセスする際のレイテンシーを削減するユニファイド メモリ アーキテクチャ、機械学習推論を高速化するニューラル エンジン、ユーザー キーを保護し続ける Secure Enclave、およびグラフィックスとゲームのシナリオに最適化された Metal および Apple GPU が含まれます。

(17:09) 開発者にとっての最初のステップは、ユニバーサル アプリを作成することです。ユニバーサル アプリには、Apple Silicon と Intel プロセッサの両方のコードが含まれています。 2 つのバイナリ スライスは同じ実行可能ファイルに配置されます。システムは、現在の Mac ハードウェア アーキテクチャに基づいて、実行するバージョンを選択します。リソース ファイル、画像、機械学習モデルを 2 つのアーキテクチャ間で分割する必要はありません。

Mac 移行ワークフロー
1. Xcode 12 で既存の Mac プロジェクトを開く。
2. 新しい "Any Mac" ビルドターゲットを選択する。
3. Standard Architectures を使って Universal app を生成する。
4. Apple Silicon Mac と Intel Mac でそれぞれ実行、デバッグ、テストする。
5. まだネイティブ移行できない部分は、移行期間の手段として Rosetta 2 に頼る。

キーポイント:

  • Any Macこれは、Xcode 12 によって提供されるユニバーサル ビルド エントリです。
  • 標準アーキテクチャには、Apple Silicon アーキテクチャと Intel アーキテクチャの両方が含まれます。
  • AppKit、SwiftUI、および Mac Catalyst プロジェクトはすべて、Universal への迅速な変換を目的として名前が付けられています。
  • Apple は、A12Z、macOS Big Sur プレビュー バージョン、デュアル アーキテクチャ ビルドをサポートする Xcode が組み込まれた Developer Transition Kit (DTK) も提供しています。

(23:35) Rosetta 2 は、移行期間中の互換性レイヤーです。 Intel の実行可能ファイルを ARM 命令に変換します。 Mac App Store からインストールされたアプリケーションまたはパッケージは、バックグラウンドで事前に翻訳されます。動的にロードされたコードまたは JIT コードは実行時に変換されます。メタル グラフィックスの呼び出しは Apple SoC 上の GPU へのネイティブ コールに変換され、システム コールはカーネルへのネイティブ コールに変換されます。 Apple は、開発者がネイティブ サポートを完了するまでの時間を与えるための過渡的なテクノロジとして位置付けています。

(32:00) Apple Silicon では、未修正の iPhone/iPad アプリも Mac に導入されます。その理由は、Mac Catalyst の背後にある iOS フレームワークが Apple Silicon Mac 上でバイナリ互換性を持っているためです。講演ではMonument ValleyとDocuments by Readdleが紹介されました。iOSアプリはDockに表示され、自動生成されたメニューバー、環境設定ペイン、ウィンドウの最小化、サイズ変更可能なウィンドウ、macOSのスクロールバー、システム開始ペイン、共有サービスを利用できます。開発者は、iOS/iPadOS アプリを Mac App Store で利用できるようにするかどうかを引き続き選択できます。

macOS Big Sur: 設計の更新はコード構造にも影響します

(38:08) Big Sur の新しいインターフェイスは、macOS と iPadOS に強いファミリー感を与えながら、視覚的な煩雑さを軽減することを目的としています。ドック、アイコン、メニュー バー、シート、ツールバー、サイドバー、コントロール センター、および通知センターはすべて再設計されました。通知センターは完全に SwiftUI で構築されており、通知とウィジェットが同時に表示され、アプリケーションは通知 API を使用してカスタム コンテンツ拡張機能を提供できます。

(40:54) ツールバーは単にスキンが変更されただけではありません。スペースが足りない場合は、検索バーをグリフに折りたたむことができます。 3 列のレイアウトでは、ツールバーをさまざまなペインに対応する領域に分割できます。 AppKit と Mac Catalyst の両方に、この分離を表現するツールバー API が追加されました。 SwiftUIツールバーが付属していますNavigationViewペインは自動的に区切り文字を取得します。 Apple は使用しないことを明示的に推奨していますNSToolbarMac アプリもそれを採用し始めています。

Big Sur UI 対応チェックリスト
1. toolbar、full-size content view、sidebar スタイルの split-view controller を使う。
2. 検索フィールドを新しい search toolbar item に入れ、折りたたみと展開をシステムに任せる。
3. toolbar と sidebar のアイコンソースとして SF Symbols を使う。
4. Info.plist でアプリのアクセントカラーを指定し、選択状態、sidebar アイコン、標準コントロールの見た目をそろえる。
5. Mac Catalyst アプリでは Mac idiom を評価し、Mac ネイティブの解像度に切り替える。

キーポイント:

  • Big Sur は、コンプライアンス ウィンドウに新しい構造を自動的に採用し、各ピクセルを手動で再描画する必要がなくなります。
  • SF シンボルは、サイドバーやツールバーに適したテキストのサイズと太さを Mac で設定できます。
  • plist からアクセント カラーを適用します。これは、自分で描画したテーマではなく、システム コントロールに影響します。
  • Mac Catalyst は、iPad ズーム インターフェイスの使用を避けるための Mac イディオムを追加します。
  • macOS のバージョン番号が 10.x から macOS 11 に変わりました。Apple はこの変更を利用して、Big Sur がシステムレベルのアップデートであることを強調しました。

iPadOS 14: サイドバー、入力コントロール、LiDAR、およびスクリブル

(47:21) iPadOS 14 の主な目的は、大画面アプリの操作を容易にすることです。新しいサイドバーは、すべての iPad サイズで 2 列から 3 列に拡張され、縦向きでも使用できます。写真は、元の下部タブバーにあったライブラリとアルバムをサイドバーに移動し、お気に入りや場所などの深い入り口を前方に移動しました。アウトラインは階層と折りたたみをサポートしており、関連する機能は SwiftUI と UIKit の既存のコンポーネントに基づいて構築されています。

(48:46) 入力コントロールもより体系的になりました。日付ピッカーはインライン カレンダーとコンパクト スタイルをサポートし、絵文字ピッカーは macOS と同じショートカット キーで呼び出すことができ、カラー ピッカー API はよく使用される色を保存したり画面の色の選択を行う機能を提供します。 Apple が示した設計の方向性は非常に具体的です。モーダル状態を減らし、深い機能の発見しやすさを向上させます。

(51:36) iPad Pro の LiDAR スキャナーは、ARKit 経由で機能を公開します。シーン ジオメトリはシーン 3D メッシュを提供し、Depth API は LiDAR によってキャプチャされた正確な距離情報を提供します。講演では、より現実的な AR 配置、モーション キャプチャ、ピープル オクルージョン、Shapr3D などのプロフェッショナル アプリケーションの部屋のスキャンにこれを使用しています。

(53:51) スクリブルが標準にUITextFieldApple Pencilによるテキストへの手書きを自動的にサポートします。 PencilKit には、Canvas API、Stroke API、Drawing Policy API が追加されています。Stroke API は、ユーザーが書くときに角度、圧力、インクの種類、正確な位置を提供します。描画ポリシーは、指スクロール領域、自由描画領域、テキスト入力領域を区別するために使用されます。

iPad アプリのアップグレード手順
1. 下部 tab や深いリストにある主要な入口を sidebar に移す。
2. 階層を持つデータには outline と折りたたみ可能な項目を使う。
3. カスタム入力パネルを、システムの date picker、color picker、emoji picker に置き換える。
4. Apple Pencil のシーンでは、まず標準テキストフィールドで Scribble を満たせるか確認する。
5. リアルタイムの筆跡分析が必要な場合に、PencilKit Stroke API を組み込む。

キーポイント:

  • サイドバーは単なる視覚的なコンポーネントではなく、ナビゲーション構造の調整です。
  • ピッカーの更新により、データ入力の効率と一貫性が向上します。
  • LiDAR 機能は ARKit を通じて公開され、開発者はシーン メッシュと深度情報を取得します。
  • スクリブルは標準のテキスト ボックスに対して自動的に機能し、既存の PencilKit アプリケーションは多くの新機能を継承できます。

iOS 14: WidgetKit と App Clip の変更検出ポータル

(58:43) WidgetKit の中核モデルはタイムライン エントリです。各エントリには、SwiftUI ビューのアーカイブ、日時、および関連性スコアが含まれています。システムは、アプリケーション プロセスを実行することなく、タイムリーかつ表示されるときにオンデマンドでウィジェットをレンダリングします。スマート スタックは、デバイス側のインテリジェンスと関連性スコアを使用して、現在より関連性の高いウィジェットをスタックの先頭に移動します。

(01:01:34) 開発者がウィジェットを定義するときは、ウィジェット プロトコルに準拠し、ウィジェット構成を返す必要があります。この構成は、ウィジェットの種類とタイムライン プロバイダーで構成されます。タイムライン プロバイダーは、スナップショットと時間に伴う一連のタイムライン エントリを担当します。構成可能なウィジェットは Intents フレームワークを使用し、システムは受信パラメーターに基づいて構成 UI を生成します。

WidgetKit コンテンツモデル
1. Widget extension で widget を定義する。
2. Widget configuration が timeline provider を指す。
3. Snapshot は単一の entry を返し、システムがプレビューまたは一時状態を表示するために使う。
4. Timeline は一連の entry を返し、各コンテンツをいつ表示するか宣言する。
5. Relevance score は、どの entry を先に表示する価値が高いかを Smart Stack に伝える。

キーポイント:

  • ウィジェットはアプリケーションの永続的な実行に依存できないため、コンテンツを事前にタイムラインに編成する必要があります。
  • SwiftUI ビューは軽量アーカイブにシリアル化され、システムによって非同期的にレンダリングされます。
  • ウィジェット ギャラリーに表示されるプレビューも、開発者によって作成されたエントリからのものです。
  • 構成可能な UI は Intents フレームワークによって生成され、ユーザーがロール、場所、アカウントなどのパラメーターを選択するのに適しています。

(01:03:53) App Clip は、別の入力問題を解決します。ユーザーは現在のタスクを完了することだけを望んでおり、最初に完全なアプリをダウンロードしたくないのです。 App Clip カードは、App Store メタデータに基づいて Apple によって自動的に生成され、ユーザーがカードを見たときに App Clip がバックグラウンドでダウンロードされます。 Apple Pay で支払うことができ、「Apple でサインイン」でサインインでき、ホーム画面を長時間占有することがなく、最近の使用履歴は App ライブラリから確認できます。

App Clip 注文フロー
1. Xcode で App Clip target を作成する。
2. 注文に必要なクラスと asset catalog だけを target membership に追加する。
3. サイズを制御し、現在のタスクに不要なライブラリを取り除き、10MB 制限内に保つ。
4. 8 時間の通知権限を使って、注文完了や駐車期限切れのような短期リマインダーを処理する。
5. タスク完了時に StoreKit overlay を表示し、完全な app のインストールへ誘導する。

キーポイント:

  • App Clip は、依然として SDK 機能を使用する完全なアプリの一部です。
  • Apple Pay と Apple でのサインインにより、当面のタスクにおける入力コストが削減されます。
  • 8 時間の通知許可は短期間のシナリオにのみ適しており、スピーチでは駐車期限切れと注文完了の指示が使用されます。
  • 予期された場所で呼び出されたことを確認するための App Clip 固有の API。
  • フルアプリにアップグレードする場合、App Clip でユーザーが行った選択は引き継がれます。

watchOS 7、Xcode 12、および SwiftUI: システム エントリを文字列化する

(01:08:53) watchOS 7 では、開発者が SwiftUI ビューを使用してコンプリケーションを構築でき、ファミリーごとに複数のコンプリケーションを作成できます。スピーチ内のホエール ウォッチの例では、さまざまな観測ステーションの複雑さの記述子が作成されます。各記述子は、サイト名を一意の識別子として使用します。クリックすると、対応する詳細ページにジャンプします。別の記述子は目撃情報を迅速に記録するために使用されます。複雑な Season Data コンプリケーションは、大きな長方形のスペースのみをサポートします。

(01:11:05) SwiftUI コンプリケーションでは、ゲージ、プログレス ビューを使用したり、アプリ内の既存の SwiftUI ビューをラップしたりできます。 Xcode 12 コンプリケーション プレビューを使用すると、開発者はさまざまなウォッチフェイス サイズ、フルカラーまたはティント モードでエフェクトをプレビューできます。ウォッチフェイスの共有では、ウォッチフェイスの設定を共有します。受信者にアプリケーションがない場合は、共有プロセス中に App Store にアクセスしてアプリケーションを取得します。

(01:16:51) Xcode 12 のツール変更は、実際の開発プロセスに重点を置いています。StoreKitTest では、最初に App Store にデプロイする必要がなく、アプリ内購入とサブスクリプション構成をプロジェクトに直接配置できます。 StoreKit Transaction Manager は、デバッグ中に購入、確認、返金を行うことができ、リアルタイムのアプリ更新を監視できます。 SwiftUI プレビューではツールバーが追加され、コード補完が最大 12 倍高速化され、Swift パッケージはアセット カタログ、リソース、ローカライズされたコンテンツをサポートします。

(01:21:30) SwiftUI の新機能は追加的なものであり、既存のコードは引き続きコンパイルおよび実行されます。パフォーマンスの観点から、講演では 20,000 枚の写真を例に挙げて説明しました。通常のスタックを Lazy スタックに置き換えた後、起動が速くなり、メモリが 500MB レベルから削減されました。複雑なレイアウトは遅延グリッドで使用できます。アプリケーション構造に関しては、SwiftUI に基づいて新機能が追加されました。@mainアプリエントリーとDocumentGroupを使用すると、わずか数行の宣言で、マルチドキュメント アプリケーション、状態の保存、および元に戻すのサポートを取得できます。 macOS では設定シーンを追加することもできます。

SwiftUI 2020 採用順序
1. 大規模リストでは、まず Lazy stacks と lazy grids を評価する。
2. 新規プロジェクトで `@main`、App、Scene、DocumentGroup を試す。
3. SwiftUI ビューを widget、watch complication、macOS Notification Center などの入口で再利用する。
4. Xcode previews と Library のサポートを使い、プロジェクト内コンポーネントを再利用可能なコントロールとして整える。

キーポイント:

  • SwiftUI の更新は追加的であり、移行のリスクは古いコードの無効化ではなく、新しいエントリを採用することから発生します。
  • 大量のデータにおける Lazy スタックの価値、20,000 枚の写真で説明された講義。 -DocumentGroupファイルの作成とオープンを管理し、システムはプラットフォーム ネイティブの動作を提供します。
  • SwiftUI は、2020 年にウィジェット、watchOS コンプリケーション、macOS システム UI、およびマルチプラットフォーム アプリ構造を同時に接続します。

重要ポイント

1.既存の Mac アプリケーションの Apple Silicon 移行監査を実行します

手順: 既存の AppKit、SwiftUI、または Mac Catalyst プロジェクトをユニバーサル アプリにビルドし、ネイティブ実行、Rosetta 実行、プラグイン、またはドライバーの依存関係間の違いを文書化します。

実行する価値がある理由: このセッションでは、ユニバーサル アプリが Mac 移行の主要なパスであることは明らかであり、Rosetta 2 は移行のための時間を与えるだけです。

開始方法: Xcode 12 を選択するAny Mac、プロジェクトが標準アーキテクチャを使用していることを確認し、動的読み込みコード、Audio Units、DriverKit 周辺機器ドライバー、およびアウトプロセス拡張を 1 つずつ確認します。

2. iPhone/iPad アプリを Mac 上でどのように表示するかを決定します

対処法: iOS/iPadOS アプリの Mac 可用性テーブルを作成し、「Apple Silicon Mac 上で直接」と「Mac Catalyst による高度な適応」を区別します。

価値がある理由: 変更されていない iPhone/iPad アプリは Apple Silicon Mac 上で実行されますが、Catalyst は Mac をカスタマイズする余地をさらに提供します。

開始方法: アプリケーションが iPad のマルチウィンドウ、ファイル アクセス、共有サービス、設定バンドルと拡張機能に依存しているかどうかを確認します。直接動作できるモジュールは最初に棚に置くことができ、エクスペリエンスが Mac らしくないモジュールは Catalyst に昇格します。

3.アプリ内の高頻度情報をウィジェット化

やるべきこと: ゲームキャラクターのステータス、スケジュールのリマインダー、天気予報、在庫の変更など、ユーザーがアプリを開かずに知りたい情報をウィジェットに配置します。

実行する価値がある理由: WidgetKit を使用すると、システムはタイムライン エントリと関連性スコアを通じてホーム画面またはスマート スタックにタイムリーなコンテンツを表示できます。

開始方法: まず、1 日以内に変更されるタイムラインを定義し、次に小、中、大のサイズに合わせて SwiftUI ビューを設計します。ユーザーがオブジェクトを選択する必要がある場合、Intents フレームワークを使用してオブジェクトをシステムに渡し、構成 UI を生成します。

4.オフラインまたはリアルタイムのタスクを App Clip に分割

やるべきこと: 注文、駐車料金の支払い、機器のレンタル、展示ホールでのチェックインなどの単一タスク用の App Clip を提供します。

価値がある理由: App Clip カード、Apple Pay、Apple でサインイン、8 時間の通知許可、StoreKit オーバーレイにより、アプリの検出、タスクの完了、完成したアプリの短いパスへの変換が可能になります。

開始方法: Xcode で新しい App Clip ターゲットを作成し、現在のタスクに必要なコードとリソースのみを追加します。 URL またはオンサイトのロゴを使用して呼び出します。タスクの最後に StoreKit オーバーレイを使用して、完全なアプリをインストールする理由を与えます。

5. iPad アプリ向けの完全な大画面と Pencil ワークフロー

対処方法: 深いナビゲーションをサイドバーに移動し、システム ピッカーを使用して入力を簡素化し、鉛筆シーンでの落書きまたはリアルタイムの手書き分析をサポートします。

実行する価値がある理由: iPadOS 14 のサイドバー、ピッカー、Scribble、Stroke API はすべて、iPad アプリを大画面と Apple Pencil 上の生産性ツールのようにするという同じ目標を達成します。

開始方法: まず、タブまたはモーダルからサイドバーにキーエントリを抽出します。標準のテキスト入力を次のように置き換えますUITextField; すでに描画キャンバスがある場合は、PencilKit Stroke API を使用して、圧力、角度、インクの種類、位置を取得します。


関連セッション

コメント

GitHub Issues · utterances