WWDC Quick Look 💓 By SwiftGGTeam
iPad and iPhone apps on Apple silicon Macs

iPad and iPhone apps on Apple silicon Macs

元の動画を見る

ハイライト

macOS Big Sur は、Apple Silicon Mac 上で Mac Catalyst インフラストラクチャを再利用するため、iOS App Store にすでにある iPad および iPhone アプリを同じバイナリで Mac App Store に提供できるようになり、開発者はそれらを App Store Connect の棚に置くかどうかを制御できます。

主要内容

以前は、iPad アプリを Mac に導入したい開発者は通常、Mac Catalyst を選択する必要がありました。この選択は、UIKit を Mac 上の最上級の UI フレームワークにし、開発者に Mac 固有の最適化の余地を多く残しているため、価値があります。ただし、これは依然として macOS SDK を使用してビルドし、Xcode の機能を有効にし、特に Mac バージョンの動作と配布を考慮することを意味します。

Apple Silicon Mac はアクセスを変更します。 macOS Big Sur は、既存の iPad および iPhone アプリをそのまま実行できます。講演では、ここでの「現状のまま」が文字通りであること、つまりユーザーが Mac App Store から購入またはダウンロードするものは、開発者がすでに iOS App Store に置いているものと同じバイナリであることが強調されました。開発者は最初に再コンパイルする必要はなく、ユーザーは別の Mac バージョンを待つ必要もありません。

この能力の代償として、境界がより明確になります。アプリは多くの Mac 動作を自動的に取得できますが、まだ iOS アプリの実行モデルにあるため、Mac アプリの完全な機能にアクセスすることはできません。講演では、適応リスクをハードウェアの違い、UIの違い、システムソフトウェアの違いという3つのカテゴリーに分類した。タッチ、センサー、カメラ、サイズ変更可能なウィンドウ、ファイル パス、デバイスのプロパティはすべて、古いコード内の iPhone または iPad の想定を暴露する可能性があります。

このセッションの実際の成果物は移行チェックリストです。まずアプリが Mac 上でそのまま実行できるかどうかを判断し、次に Xcode で実行してテストし、最後に配布戦略を決定します。アプリが直接出品に適している場合は、Mac App Store に入力します。完全な Mac エクスペリエンスが必要な場合は、Mac Catalyst に変更してください。デスクトップに適さない Mac アプリまたは製品をすでに使用している場合は、App Store Connect で Mac ディストリビューションを終了してください。

詳細

同じバイナリがどのようにして Mac に導入されたのか

(00:19) macOS Big Sur は Apple Silicon Mac 上で iOS アプリを実行し、その基礎となる再利用は Mac Catalyst インフラストラクチャです。講演では、同じ統合フレームワークと iOS フレームワークのセットが Mac にもたらされて統合され、iPad と iPhone アプリが自動的に Mac の動作の多くを取得できるようになると言及されました。

そのまま実行される経路
1. 開発者が iPad または iPhone app を iOS App Store に提出する。
2. 互換性のある app は自動的に Mac App Store に入る。
3. Apple Silicon Mac が同じ app binary をダウンロードする。
4. app は Mac Catalyst 基盤と iOS frameworks をもとに macOS Big Sur 上で実行される。
5. より完全な Mac 機能が必要な場合、開発者は別途 Mac Catalyst 版を作成する。

キーポイント:

  • このスピーチでは、Mac ユーザーはまったく同じバイナリをダウンロードすると明確に述べられています。
  • 現状のまま実行できるのは Apple Silicon Mac のみです。 Mac Catalyst バージョンはすべての Mac に配布できます。
  • Mac Catalyst は、動作をさらに最適化し、Mac の機能を拡張するための手段であり続けます。
  • 互換性はリリース後のアドオンではなく、システム、ハードウェア、UI の前提条件が事前にテストされます。

互換性チェックはハードウェアの前提条件から始まります

(03:18) Apple は、オペレーティング環境の違いをハードウェア、UI、システム ソフトウェアの 3 つのグループに分けています。最初のグループは最も見落とされています。iOS は直接マルチタッチを中心に設計されており、macOS は間接的なカーソルベースの対話モデルを中心に設計されています。多くのマルチタッチ ジェスチャがマッピングされていますが、カスタム タッチ処理は Mac で検証する必要があります。

// このセッションで明示されたハードウェアとフレームワークの確認項目
// - custom touch handling: Mac 上でマウスとトラックパッドの動作を検証する
// - keyboard entry: カスタムタッチ操作の代替経路として用意する
// - sensors: accelerometer、gyroscope、magnetometer、depth camera、GPS の有無を動的に確認する
// - Core Location: Mac は位置情報を提供できるが、GPS より精度が低い場合がある
// - AVCaptureDeviceDiscoverySession: discovery session で適切なカメラを選ぶ

キーポイント:

  • iOS アプリを実行しているすべてのデバイスに iPhone または iPad のセンサー セットが搭載されていると想定しないでください。
  • カスタム タッチ ロジックでは、代替パスとしてキーボード入力を使用するのが最適です。
  • Mac には GPS 受信機がありませんが、Core Location は精度が異なるだけで位置情報を返す場合があります。
  • Mac には内蔵カメラ、外部モニター カメラ、またはプレゼンテーションに推奨される USB カメラが搭載されている場合があります。AVCaptureDeviceDiscoverySession

UI とシステム ソフトウェアの違いにより、ハードコードされた仮定が増幅される

(05:28) iOS アプリは多くの macOS システム動作を自動的に取得しますが、プレゼンテーションの位置と対話形式は変わります。アラート、ポップアップ、[開く] パネル、および [保存] パネルは、Mac 上の別のウィンドウまたは場所に表示される場合があります。コードでシステム UI の場所がハードコーディングされている場合、Mac で実行するとエラーが発生しやすくなります。

Mac 実行チェックリスト
- iPad app が multitasking をサポートする場合: macOS 上でウィンドウを完全に resize できる。
- iPhone app、または multitasking をサポートしない iPad app: 固定サイズのウィンドウで実行される。
- Auto Layout: より多くのウィンドウサイズをカバーするために使う。
- Foundation file-system APIs: システム API でファイルとコンテナのパスを探す。
- device properties: iPhone、iPod touch、iPad という固定値だけを受け入れない。

キーポイント:

  • iPad のマルチタスクをサポートするアプリのウィンドウ サイズは、iPad よりも macOS で大きくなります。
  • ライブ サイズ変更は継続的にレイアウトの更新をトリガーし、レイアウトのパフォーマンスは Mac ウィンドウのドラッグ エクスペリエンスに直接影響します。
  • macOS ユーザーはアプリを移動できますが、データ コンテナーの場所も異なり、ファイル パスを Foundation API に渡す必要があります。
  • サーバーとクライアントの両方が不明なデバイス値を処理できる必要があり、実行中のデバイスを単に iPhone または iPad として列挙することはできません。

Xcode を使用した Apple Silicon Mac での実際のテスト

(08:02) レクチャーのテスト パスは、Xcode で新しい実行先を選択することです。My Mac, Designed for iPad。このビルドは引き続き iOS SDK に基づいており、アプリは Apple Silicon Mac 上でネイティブに実行され、iPhone や iPad アプリと同じようにデバッグできます。

Xcode でのテスト経路
1. run destination で My Mac, Designed for iPad を選ぶ。
2. build and run し、app が引き続き iOS SDK を使っていることを確認する。
3. debug gauges で CPU、memory、network、disk I/O を観察する。
4. breakpoint を設定し、変数を確認して evaluate expressions を行う。
5. Memory debugger、View debugger、Instruments を使う。
6. XCTest unit tests を実行し、テストも Apple Silicon Mac 上でネイティブに走ることを確認する。

キーポイント:

  • このプロセスは、起動できるかどうかを確認するだけでなく、実行時の動作や UI の不具合を検出するために使用されます。
  • ブレークポイント、変数チェック、式評価はすべて、このタイプの iOS アプリで直接使用できます。
  • メモリ デバッガー、ビュー デバッガー、インストゥルメントは、Mac 上の UI とパフォーマンスの問題を特定するために重要です。
  • この講演では、XCTest 単体テストが Apple Silicon Mac 上でネイティブに実行できることが明確に述べられています。

配布プロセスは iOS に準拠しますが、TestFlight と可用性制御は別個に処理されます。

(12:00) このセッションの残り半分は配布です。 Apple がアプリでサポートされるデバイス ファミリに Mac を追加すると、開発者が慣れ親しんだ iOS 配布プロセスが Mac にも拡張されることになります。互換性のあるアプリは、新しい開発者契約に署名した後、その年後半に Mac App Store に登場する予定です。

配布関連の機能
- App Store Connect: Mac App Store での提供状況のエクスポート、提出、制御に使う。
- Xcode Organizer: App Store Connect へエクスポートでき、ad hoc、enterprise、development 配布も行える。
- StoreKit: iPad と iPhone app は Mac 上でもアプリ内購入とサブスクリプションをサポートする。
- On-demand resources: Mac 上でも体験は一貫している。
- App thinning: Mac virtual thinning destination が追加される。
- OTA installation: Mac は manifest から適切な variant を選ぶ。
- Managed devices: iPad と iPhone app を enrolled Macs にプッシュできる。

キーポイント:

  • TestFlight は現時点では Mac をサポートしていないため、リリース前テストにはアドホックまたは開発ディストリビューションを使用する必要があります。
  • Xcode は、使用できないシンボルやハード依存関係のあるフレームワークの入力を求めますが、ユーザー エクスペリエンスは Apple Silicon Mac ハードウェアでテストする必要があります。
  • Mac App Store スイッチは、App Store Connect の「価格と入手可能性」ページで入手できます。
  • Mac の可用性をオフにした後、開発者が再度オンにするまで、Mac ユーザーは既存のバージョンを再ダウンロードできません。

重要ポイント

  • Mac そのまま動作承諾フォームを作成:My Mac, Designed for iPadバージョンごとに手動テストプロセスを追加します。実行する価値がある理由: このセッションのリスクは、実行環境の想定に集中しています。起動が成功しても、そのエクスペリエンスが正しいとは限りません。開始方法: ウィンドウのサイズ変更、カスタム タッチ、キーボード入力、デバッグ ゲージ、および XCTest について説明することから始めます。

  • カスタム タッチ操作用のデスクトップ エントリを追加: ドラッグ、描画、および複雑なジェスチャのためのキーボードまたはポインタの代替パスを提供します。実行する価値がある理由: macOS は間接的なカーソルベースの対話モデルであり、システムはマルチタッチ動作の一部しか自動的にマッピングできません。開始方法: すべてのカスタム タッチ処理をリストし、Mac 上のマウス、トラックパッド、キーボードのパスを 1 つずつ確認します。

  • センサーとカメラの依存関係を監査: 加速度計、ジャイロスコープ、磁力計、深度カメラ、GPS、およびカメラの使用ポイントを実行時チェックに変更します。価値がある理由: Mac のハードウェア構成は iPhone や iPad とは異なり、機能が欠けていると機能が無効になる可能性があります。開始方法: 位置情報機能の低精度の結果を準備し、カメラの選択に切り替えます。AVCaptureDeviceDiscoverySession

  • TestFlight for Mac プレリリース配布への代替パスを準備します: アドホック、開発、またはエンタープライズ配布をチーム テスト計画に書き込みます。実行する価値がある理由: この講演では、TestFlight が当時 Mac をサポートしていないことが明らかになりました。開始方法: Xcode Organizer を使用して Mac テスト ビルドをエクスポートし、チーム メンバーに Apple Silicon Mac で承認を実行してもらいます。

  • Mac App Store に参加するかどうかは製品の決定事項としてください: すべての iOS アプリがデスクトップ ストアに直接表示されるのに適しているわけではありません。実行する価値がある理由: すでに Mac アプリを持っている場合、Mac アプリを計画している場合、またはデスクトップに適さない製品を使用している場合は、自動リストを終了する必要がある場合があります。開始方法: App Store Connect の価格と提供状況ページで Mac の提供状況を確認し、終了後の再ダウンロードの影響に注意してください。

関連セッション

コメント

GitHub Issues · utterances