WWDC Quick Look 💓 By SwiftGGTeam
What's new in Xcode

What's new in Xcode

元の動画を見る

ハイライト

Xcode 14 のサイズは 30% 削減され、ビルド速度は最大 25% 向上し、リンカー速度は最大 2 倍向上しました。 SwiftUI プレビューはデフォルトでインタラクティブであり、複数のバリアントを並べて比較できます。コード補完はよりスマートです。オーガナイザーは TestFlight フィードバックとハング レポートを追加します。単一ターゲットのマルチプラットフォーム アプリケーション開発をサポートします。

主要内容

インストールと起動の高速化

Xcode 14 のダウンロード サイズは 30% 小さくなり、インストール時間は大幅に短縮されました。追加のプラットフォームとエミュレータはオンデマンドでダウンロードできます。必要なコンポーネントをすぐに入手することも、最初の使用時に自動的にダウンロードされるまで待つこともできます。

SwiftUI プレビューの機能強化

00:58

SwiftUI プレビュー キャンバスはデフォルトでインタラクティブになりました。コードを変更すると、プレビューはリアルタイムで更新されるため、手動で更新する必要はありません。

より実用的なのは、新しい Preview Variant 機能です。キャンバス上のバリアント ボタンをクリックして、コードを記述せずに複数のプレビュー バリアントを作成し、さまざまなシナリオで UI パフォーマンスを並べて比較します。

  • ダーク/ライトモード
  • 異なるダイナミックタイプフォントサイズ
  • 横向き/縦向き

01:24

フード トラックの例では、開発者は、異なるダイナミック タイプ サイズの 3 つのカード ビューを並べて表示しましたが、大きなフォントの最初のアイコンの幅が広すぎて、テキストが不自然に折り返されていることをすぐに発見しました。この視覚的なフィードバックは、Xcode 13 では手動で切り替え設定を表示する必要がありましたが、現在は明確です。

よりスマートなコード補完

02:53

Xcode 14 のコード補完にはいくつかの重要な改良点があります。

イニシャライザの自動補完: イニシャライザの入力を開始すると、Xcode はすべてのパラメータとデフォルト値を含む完全なイニシャライザ テンプレートを提供します。

コーディング可能なメソッドの補完:init(from:)そしてencode(to:)メソッドもオートコンプリートできるようになりました。

デフォルト値パラメータの注釈: デフォルト値を持つパラメータは、補完リストに斜体で表示されます。補完を直接受け入れる場合、これらのパラメータは省略され、デフォルト値が使用されます。それらをオーバーライドしたい場合は、パラメータ名を手動で入力できます。

SF シンボルの統合: コンポーネント ライブラリにはすべての SF シンボルが含まれるようになり、対応する SwiftUI コードを直接検索して挿入できるようになりました。

フレームなどの複雑な修飾子のインテリジェントな補完:frame()このモディファイアには多数のオプションのパラメータがあります。モディファイアを完了すると、入力した内容に基づいて最も関連性の高いパラメータが動的に推奨されます。

ナビゲーションとエラー表示の改善

06:01

定義の再設計にジャンプ: メソッドがプロトコルから取得され、複数の実装がある場合、定義リストでは各結果の違いが強調表示され、正しい実装を素早く選択できるように特定の型情報が表示されます。

呼び出し元リスト: Command キーを押しながらメソッド名をクリックして呼び出し元を選択します。すべての呼び出し場所とコンテキストのプレビューを確認し、特定の呼び出しコードに直接ジャンプできます。

エラーグレー表示メカニズム: コードを変更すると、Xcode は最初に古いエラー情報をグレー表示して、再評価中であることを示します。長いビルド プロセス中に、最新のビルドの問題と以前のビルドから残った問題も明確に区別できます。

中断された定義ブレッドクラム: エディターの上部には、現在表示されているコードが配置されている定義レベルが表示されます。定義を越えてスクロールした場合でもコンテキストを確認できます。テストメソッドの横にあるひし形のボタンを使用すると、個別のテストを直接実行できます。

Swift 5.7 正規表現リテラル

06:36

Swift 5.7 では正規表現リテラルが導入され、Xcode ではコンパイル時のチェックが提供されます。

// 正则表达式字面量支持编译期验证
let regex = /\d+ records/

キーポイント:

  • 正規表現構文が強調表示されます
  • タイプミスは実行時ではなくコンパイル時に報告されます
  • 式を変更した後、エラーは最初灰色になり、修復を確認すると消えます。

ビルドのパフォーマンスの向上

10:05

Xcode 14 は、次の 3 つの最適化レベルによってビルド速度を向上させます。

Swift モジュールは事前に生成されます: 従来のビルド プロセスでは、フレームワークのソース コードをコンパイル → モジュールを生成 → アプリケーションのソース コードをコンパイル → アプリケーションをリンクします。 Xcode 14 は、できるだけ早く Swift モジュールを生成し、後続のタスクの依存関係のブロックを解除し、より多くのタスクを並行して実行できるようにします。

リンカーの並列化: 最大 2 倍高速なリンカー。

全体的な効果: プロジェクトの構築速度が最大 25% 向上し、コア数が多いマシンでは改善がより顕著になります。

ビルド タイムライン: 新しい視覚的なタイムラインがビルド ログに追加され、所要時間と各タスクの依存関係を直感的に確認できるようになりました。この例では、スクリプト フェーズによりビルドがシングルコア動作に制限されており、問題は一目瞭然です。

テストと配布の高速化

12:10

  • 並列テストにより、ターゲット クラスとテスト クラス間のスケジューリングの依存関係が排除され、テストの実行時間が最大 30% 改善されます。
  • macOS アプリケーションの公証速度が 4 倍に向上
  • Interface Builder ドキュメントの読み込み速度が 50% 向上し、デバイス バーの切り替え速度が 30% 向上しました。

単一ターゲットのマルチプラットフォーム アプリケーション

13:41

Xcode 14 は、単一のターゲットを使用したマルチプラットフォーム アプリの定義をサポートします。 Target でサポートされているプラ​​ットフォームをリストすると、Xcode がプラットフォームの違いを自動的に処理するため、各プラットフォームに固有の部分を記述するだけで済みます。これにより、複数のターゲット間で設定やファイルを同期する手間が省けます。

オーガナイザーの新しいレポート

17:04

TestFlight フィードバック: 新しい [フィードバック] タブがオーガナイザー ウィンドウに追加され、コメントやスクリーンショットを含むすべての TestFlight フィードバックが直接表示されます。インスペクター パネルにはテスター情報とデバイス構成が表示され、Xcode から直接電子メールでテスターに​​連絡できます。

ハング レポート: App Store ユーザーが遭遇した最も深刻なラグの問題を表示する新しいハング タブを追加しました。各ラグは影響によって並べ替えられ、重み付けされたスタック トレースが付属します。 [インスペクター] パネルには、特定の iOS バージョンまたはデバイス上の問題の分布が表示され、プロジェクト内の対応するコードに直接ジャンプできます。

メモリデバッガの機能強化

14:13

メモリ デバッガーは、オブジェクトへのすべての参照パス (最短パスだけではなく) を表示できるようになり、オブジェクトがリークしている理由をより完全に理解できるようになりました。同時に、メモリに対するオブジェクトの全体的な影響を評価するために、新しいオブジェクトの総重量インジケーターが追加されます。

Swift パッケージプラグイン

14:47

Swift パッケージがプラグインをサポートするようになりました。

  • コード処理プラグイン: リンター、フォーマッタなど、プロジェクト ナビゲーターから直接呼び出すことができます。
  • ビルドツールプラグイン: コードを生成し、リソースを処理します (画像の圧縮、RPC インターフェイス コードの生成など)。
  • パッケージリソースのローカリゼーションサポート

アプリケーションアイコンシングルサイズモード

19:28

ピクセルの配置を必要としない単純なアイコンの場合、Xcode 14 には新しいシングル サイズ モードが追加されています。画像を指定するだけで、Xcode が必要なサイズをすべて自動的に生成します。アセットカタログでアイコンを選択し、インスペクターで「すべてのサイズ」を「単一サイズ」に切り替えます。

詳細

プレビュー バリエーションを使用して UI を検証する

01:03

SwiftUI ビューのプレビュー キャンバスで、[バリアント] ボタンをクリックしてプレビュー バリアントを追加します。

struct CardStack_Previews: PreviewProvider {
    static var previews: some View {
        CardStack()
    }
}

キーポイント:

  • バリエーション ボタンはキャンバス ツールバーにあり、これをクリックして、変更する属性 (カラー スキーム、ダイナミック タイプ サイズ、方向) を選択します。
  • コードを変更することなく、システムが自動的に並列プレビューを生成します。
  • さまざまなアクセシビリティ設定での UI のパフォーマンスを迅速に検証するのに適しています
  • レイアウトの問題が発見されると、コード内ですぐに修正でき、プレビューはリアルタイムで更新されます。

スマート コード補完の使用

02:53

与えるCardView例としてデフォルト値を持つイニシャライザを追加します。

struct CardView: View {
    let image: Image
    let headerIcon: Image  // 新しいプロパティ
    let title: String
    let content: String
    
    // Xcode 14 がイニシャライザ全体を自動補完します
    init(image: Image, headerIcon: Image? = nil, title: String, content: String) {
        self.image = image
        self.headerIcon = headerIcon ?? image  // デフォルトでは同じ画像を使用します
        self.title = title
        self.content = content
    }
}

キーポイント:

  • 入力を開始しますinitXcode は、次の場合に完全な初期化子テンプレートを提供します。
  • デフォルト値を受け入れた後、これに基づいて変更できます
  • 呼び出し時のデフォルト値を持つパラメータは斜体で表示されます。 Enterを直接押すとパラメータは省略されます。
  • デフォルト値をオーバーライドする必要がある場合は、パラメータ名の一部を入力してオプトインします

ビルド タイムラインを使用してボトルネックを分析する

11:31

ビルドが完了したら、レポート ナビゲーターでビルド ログを開き、[ビルド タイムライン] タブをクリックします。

  • タイムラインには、各ビルド タスクの開始時間、期間、依存関係が表示されます。
  • 長いバータスクは時間のかかる操作を表しており、最適化の対象となる可能性があります。
  • シリアル実行の領域 (1 つのタスクのみが実行されている領域) は、通常、依存関係のボトルネックを示しています。
  • この例では、スクリプト フェーズがタイムラインを占有することが判明し、並列ビルドがブロックされていることを示しています。

重要ポイント

  • UI 回帰テストにプレビュー バリアントを使用: 新しいビューを開発するときは、ダーク モード、大きなフォント、水平画面の 3 つのバリアント プレビューを追加します。コードをコミットする前にコードをざっと見て、レイアウトの問題がないことを確認してください。入口:キャンバスツールバーのバリエーションボタン。

  • ビルド タイムラインで CI/CD を最適化: ビルド タイムラインを CI プロセスに追加し、ビルドのボトルネックを定期的に分析します。多くの場合、並列化の最大の障害となるスクリプト フェーズとカスタム ビルド ルールに焦点を当てます。入り口: [レポート ナビゲーター] → [ビルド ログ] → [ビルド タイムライン] タブ。

  • Swift Package プラグインを使用してコード仕様を自動化: SwiftLint または SwiftFormat をパッケージ プラグインとしてチームに導入すると、開発者は追加のツールをインストールせずにプロジェクト ナビゲーターから直接実行できます。エントリ: Package.swift に追加.plugin target。

  • オーガナイザーのハング レポートを使用してパフォーマンスの最適化をガイドします: オーガナイザーのハング レポートを毎週確認し、影響の度合いで並べ替え、ユーザーに最も影響を与えるラグを優先的に修正します。エントリ: [ウィンドウ] → [オーガナイザー] → [ハング] タブ。

  • クロスプラットフォーム コード ベースの単一ターゲット管理: 新しいプロジェクトは単一のターゲットを直接使用して iOS と macOS をサポートし、条件付きコンパイルとプラットフォーム固有のファイルを使用して相違点を処理します。複数のターゲットを維持するための同期コストを削減します。入り口: ターゲット設定 → 一般 → サポートされる宛先。

関連セッション

コメント

GitHub Issues · utterances