# iOSアプリのスクロールとアニメーションにおけるヒッチを理解する

2024-02-10 18:43

スクロールやアニメーションが引っかかる現象(ヒッチ)は、どこで遅れたのかが見えにくい。 Appleの解説では、ヒッチを発生段階でコミットヒッチとレンダーヒッチに分け、ヒッチ時間比で測定する。

# ヒッチはフレームが予定より遅れて表示される現象

ヒッチは、予想よりも遅れてフレームが表示されることを指す。 スクロールやアニメーション中に発生すると、ユーザー体験を損なう。

# レンダーループはイベント・コミット・レンダーの3段階で進む

レンダーループは、タッチイベントを受け取ってから最終的なフレームを完成させるまでの処理である。 途中でUIの変更を処理する。 処理はイベント、コミット、レンダーの3つのステージに分かれ、ステージごとに異なる作業が行われる。

# 遅れた段階によってコミットヒッチとレンダーヒッチに分かれる

種類 発生する場所 原因
コミットヒッチ アプリ内 イベント処理やコミットの遅延
レンダーヒッチ レンダーサーバー UIをタイムリーに描画できない

# ヒッチ時間比で期間やアプリをまたいで比較する

ヒッチ時間比は、ある期間内の総ヒッチ時間を、その期間の長さで割った値である。 単位は秒あたりのミリ秒数(ms/s)で表す。 期間の長さで正規化するため、異なる期間やアプリ間で比較できる。

内容はAppleの次の解説を参考にした。