dely Tech Blog

クラシル・TRILLを運営するdely株式会社の開発ブログです

Xcode OrganizerのScroll Hitch Rateについて

TRILL開発部の石田です。

2020年9月にXcode12がリリースされ、Scroll Hitch Rateという機能が追加されました。 今回はこの機能について紹介します。

Xcode Organizerとは

f:id:trill_tech:20201208130019j:plain

Xcode Organizerについて、Appleのドキュメントでは以下のように説明されています。

Appのクラッシュログ、エネルギーレポート、パフォーマンスに関する指標(お客様が使用した際のバッテリー消費量や起動時間など)を簡単に確認できます。

ユーザの端末からバッテリーライフやパフォーマンスデータ等の情報がAppleのサーバに送られ、それがXcodeのOrganizerに表示されます。 ただし情報を送信するのはプライバシー設定の「Appデベロッパと共有」をOnにしている端末に限られるようです。

ちなみに、Organizerでユーザの統計情報を確認するために追加の実装は不要です。

Scroll Hitch Rateとは

f:id:trill_tech:20201208130043p:plain

Scroll Hitch RateはXcode12からOrganizerに追加された機能で、アプリ内のスクロールのスムーズさを表現しています。

Scroll Hitchとはレンダリングされたフレームがスクロール中に画面に表示されないことで、これによってフレーム落ちし、スクロールが不安定な挙動となります。

iPhoneはフレッシュレートが60Hzなので、1フレームは16.67msであり、それ以上の時間がかかるとフレーム落ちし、ユーザ体験が下がります。

表示される指標

f:id:trill_tech:20201208130102p:plain

  • Hitch time: フレームが画面に表示されるのに必要な追加の時間の合計
  • Scroll duration: スクロール時間
  • Hitch rate = Hitch time / Scroll duration

Hitch rateが高ければ高いほどHitchが多く、ユーザにとって体験の悪いスクロールとなります。 逆にHitch rateが低いほどユーザ体験の良いスクロールとなります。

目指すべき数値

f:id:trill_tech:20201208130117p:plain

  • 5ms/s以下: 良いユーザ体験
  • 5ms〜10ms/s: ユーザがHitchに気づき始めるので調査すべき
  • 10ms〜: かなり使いづらいので早急に解決すべき

基本的に5ms/sを下回っていれば問題ないようです。 Xcode Organizerはアプリバージョン毎の結果が表示されるので、アプリをアップデートした際に改善しているか・悪化していないかチェックするのが良さそうです。

まとめ

Xcode12からScroll Hitch Rateという機能が追加され、スクロールのスムーズさ(ユーザの手元で起こっているもの)が定量的に判断できるようになりました。 TRILLでも定期的な確認と改善をしていき、ユーザ体験をより良いものにしたいと思います。

delyでは全方面でエンジニアを積極採用中です。 興味のある方は是非お声がけください。

join-us.dely.jp

参考

https://developer.apple.com/videos/play/wwdc2020/10076/

https://developer.apple.com/videos/play/wwdc2020/10077/