# iOSアプリのスクロールとアニメーションにおけるヒッチを理解する
2024-02-10 18:43
スクロールやアニメーションが引っかかる現象(ヒッチ)は、どこで遅れたのかが見えにくい。 Appleの解説では、ヒッチを発生段階でコミットヒッチとレンダーヒッチに分け、ヒッチ時間比で測定する。
# ヒッチはフレームが予定より遅れて表示される現象
ヒッチは、予想よりも遅れてフレームが表示されることを指す。 スクロールやアニメーション中に発生すると、ユーザー体験を損なう。
# レンダーループはイベント・コミット・レンダーの3段階で進む
レンダーループは、タッチイベントを受け取ってから最終的なフレームを完成させるまでの処理である。 途中でUIの変更を処理する。 処理はイベント、コミット、レンダーの3つのステージに分かれ、ステージごとに異なる作業が行われる。
# 遅れた段階によってコミットヒッチとレンダーヒッチに分かれる
| 種類 | 発生する場所 | 原因 |
|---|---|---|
| コミットヒッチ | アプリ内 | イベント処理やコミットの遅延 |
| レンダーヒッチ | レンダーサーバー | UIをタイムリーに描画できない |
# ヒッチ時間比で期間やアプリをまたいで比較する
ヒッチ時間比は、ある期間内の総ヒッチ時間を、その期間の長さで割った値である。 単位は秒あたりのミリ秒数(ms/s)で表す。 期間の長さで正規化するため、異なる期間やアプリ間で比較できる。
内容はAppleの次の解説を参考にした。