SwiftUI パフォーマンスの理解と改善
2022年にAirbnbはSwiftUIを採用し、エンジニアの生産性を向上させたが、新しいパフォーマンスの課題を引き起こした。こうした問題に対処するために、Airbnbはパフォーマンスクリティカルなコードパターンの識別と検証のための新しいツールを作成した。同社のフィーチャーアーキテクチャーでは宣言型UIパターンと単方向データフローシステムを使用しており、これによりSwiftUIの採用を簡素化した。ただし、SwiftUIを使用したフィーチャーでは予想以上にパフォーマンスが低下し、SwiftUIのパフォーマンス特性を理解することがパフォーマンスの高いフィーチャーの構築にとって非常に重要となった。SwiftUIのビューディフイングアルゴリズムは、ビューのボディが再評価される必要があるかどうかを決定するものだが、しばしば見過ごされ公式ドキュメントにも記載されていない。このアルゴリズムはビューの各ストアドプロパティを比較するが、一般的なコードパターンでは混同を引き起こし、不要なビュー ボディの評価を引き起こす。対処として、Airbnbはビューに対してEquatable準拠を生成するための新しい@Equatableマクロを作成し、エンジニアが選択的にプロパティの比較を決定できるようにした。これにより、ビューがdiffableであり、後から回帰が生じるのを防ぐことができる。また、Airbnbはビュー ボディが複雑すぎて、小さなdiffableなピースにリファクタリングする必要がある場合を識別するためのカスタムSwiftLintルールを実装した。ビューを小さなピースに分割することで、SwiftUIは実際に変更されたビューの部分のみを効率的に更新し、フィーチャーの複雑さが増すにつれてパフォーマンスを維持することができる。