Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SwiftUI でリスト要素のインプレッションを計測する

swiftty
December 19, 2023

SwiftUI でリスト要素のインプレッションを計測する

【ハイブリット開催】Mobile勉強会 Wantedly × チームラボ × Sansan #12
https://sansan.connpass.com/event/303229/

で発表した資料です

swiftty

December 19, 2023
Tweet

More Decks by swiftty

Other Decks in Technology

Transcript

  1. インプレッション計測 • Visit では募集一覧を推薦システムで最適化するため ど の募集が見られたかを計測している ◦ 画面内に各募集が n% 表示されたら

    インプレッションされた ◦ 同一セッション中は同じ募集は再度 インプレッションしない © 2023 Wantedly, Inc. 募集 募集 募集 募集
  2. インプレッション計測 • Visit では募集一覧を推薦システムで最適化するため ど の募集が見られたかを計測している ◦ 画面内に各募集が n% 表示されたら

    インプレッションされた ◦ 同一セッション中は同じ募集は再度 インプレッションしない • 募集一覧を SwiftUI でリニューアルしたので 引き継ぐ必要があった © 2023 Wantedly, Inc. 募集 募集 募集 募集
  3. anchorPreference • frame を知りたい対象に anchorPreference を利用 • ImpressionKey.Value に合わせて配列にして返す •

    インプレッションしたかどうかを ObservableObject で管理 ※ © 2023 Wantedly, Inc. ※パフォーマンスの章で補足
  4. パフォーマンス • 計測関連処理のコメントアウトで Instruments を比較 • → 大きな差は見られなかった ◦ @State,

    @Published で保持すると再レンダリング要求が行われてしまう ◦ 今回の計測ではインプレッションしたかの状態によるビューの変化がないため それに よる管理は不要 © 2023 Wantedly, Inc.
  5. まとめ • 🎉 SwiftUI でインプレッション計測を実現できた • 📦 anchorPreference でコンパクト?にもできた ◦

    → ViewModifier でコンポーネント化を視野 • 😻 パフォーマンスも問題なさそう © 2023 Wantedly, Inc.