FluxMozilla関係の情報に特化したブログです。46のリリースチャンネルにおいて有効化される見通しとなった。blogを基に、APZの仕組みについて概観しておこう。APZの目標は、ユーザー入力に対する応答を最小の遅延で行うことにある。Compositing)の実装により、描画されたコンテンツを保存している複数のレイヤーを一つにまとめる処理は、メインスレッドから独立したcompositorスレッドで行われるようになっている(過去記事)。再描画などの処理は依然としてメインスレッドで行われるため、ユーザー入力に対する処理(これもメインスレッドで行われる)がブロックされてしまって応答できないという事態が発生することもあった。次の図は、長い時間がかかる可能性のある処理を赤色で表示している。APZが導入されると、メインスレッドが親プロセス(chromeプロセス)と子プロセス(contentプロセス)に分かれるため、子プロセスにおいて再描画などの処理に時間がかかっていても、ユーザー入力に対する処理はブロックされない。スクロール位置のアップデートもcompositorスレッドで行われる。以上の流れを示すのが次の図だ。プロセスが分かれている点から容易に推測できるように、APZはマルチプロセス機能(e10s)が有効化されていることが前提となる。加えて当面はマウスホイールまたはトラックパッド/タッチパッドによる入力のみが対象だ。46でe10sが有効化されるのは、アドオンがインストールされておらず、アクセシビリティ機能が無効化された非RTL言語の環境に限られることが決定済みである。この段階でAPZが有効化されるユーザーは少数にとどまるとみられる。46で日々APZを使用してみると、随分こなれてきてはいるものの、Flashプラグインと併用した場合に若干不安が残る。47に回した方が無難というのが正直なところだ。46でAPZが有効化される環境に該当するため、スクロール時に表示がおかしくなったときは、layers.async-pan-zoom.enabledの設定をfalseにしてこの機能を無効化するのがよいだろう。46/47でAPZが有効化されることはなくなった。