性能向上というより体感の改善

Android版Chrome、スクロールのカクつきを48%削減。Googleが改善策を解説

多根清史

Image:FotoField/Shutterstock.com

Googleは、2023年から2026年にかけてAndroid版Chromeにおけるスクロール時のカクつき(scroll jank)を48%削減したと発表し、その方法を詳しく説明している。

ここでいうカクつきとは、ページのスクロール中に突然引っかかったり、飛んだりする現象を指す。これは「更新されたスクロール位置を含むフレームを、デバイスが期限内に表示できなかった場合」に発生するという。Googleはこれを「優れたモバイルWeb体験を損なう最大の要因の一つ」と位置付け、2023年から改善に取り組んできた。

Android版Chromeは、入力処理、レンダリング、GPU処理が複数のプロセスをまたぐ構造となっている。これにより、一般的なAndroidアプリよりも安定性やセキュリティ、パフォーマンスは向上している一方で、わずかな遅延がそのままカクつきとして表れやすい。

さらに事態を複雑にしているのが、Chromeは入力をバッファリングせず、ハードウェアから直接受け取る仕組みである。このため、入力イベントは不規則なタイミングでChromeに届き、1回の画面リフレッシュ周期内に複数回到着することも珍しくない。

こうしたパイプラインを踏まえ、Googleは「自動化されたヒューリスティック、重点的な最適化、そして大規模なアーキテクチャ変更」を通じて、スクロール時のカクつきを減らす複数のプロジェクトを進めたという。主な取り組みは以下のとおりである。

  • 入力予測(Input prediction):OSからの入力が遅れて届くことがあるため、Chromeは待ちきれない場合、自らスクロール位置を予測して描画する。これにより、入力待ちによるカクつきを抑えている。
  • VizにおけるブラウザーUI制御(Browser controls in Viz):スクロール時のブラウザーUIの動きを、毎回メインスレッドで処理する方式を見直した。GPU側で直接反映できるようにしたことで、表示の乱れが起きにくくなった。なお、VizとはChromeの描画処理を一元的に担う仕組みである。
  • Android入力スレッドの優先度改善(Priority of Android input threads):入力イベントがChromeへ届く前に、他の優先度の低い処理に割り込まれることがあった。そこで関連スレッドの優先度を引き上げ、入力がより速く、安定して届くよう改善した。

これらのアップデートは、単なる性能向上というよりも、ユーザーが感じる「体感品質」の改善を目指したものと言える。Androidアプリは日常的に触れる機会が多いだけに、入力処理の経路設計がユーザー体験を大きく左右することを示す好例と言えそうだ。

関連キーワード: