Mozilla Flux

Mozilla関係の情報に特化したブログです。

タブの切り替えをスムーズにするTab Warming機能について(Firefox 61以降)

Windows版・Linux版Firefox 61では、Tab Warmingと呼ばれる機能が有効化されている(Bug 1456602*1。タブを切り替える前にいわばウォームアップを済ませておく機能で、ユーザーに見えないところで処理を先取りするため、結果的にタブの切り替え処理が速くなったように感じられる。

タブ切り替えのウォームアップとは具体的に何だろうか。現行のFirefoxはマルチプロセス化されているので、タブを切り替える場合、メインプロセスから切り替え先のタブを司るcontentプロセスに対し、レイヤーツリーを生成するよう指示が出され、その結果がcompositorプロセスに送られて合成(Compositing)の処理が行われる*2。ウォームアップとは、この一連の流れをタブの切り替えが行われる前から開始しておくという意味だ。その後タブの切り替えが実行されなかったときは、レイヤーツリーは捨てられる。

ウォームアップが開始されるタイミングは複数ある。代表的なのは、切り替え先のタブ上にカーソルがホバーしたとき(Bug 1385453)と、タブを閉じるボタン上にカーソルがホバーしたとき(Bug 1430292)である。そのほか、Ctrl+Tabパネルを表示させたとき(Bug 1430153)やマウスの中ボタンの押下を検出したとき(Bug 1472230:ただしFirefox 63から)も対象だ。いずれも手動または自動でタブが切り替わる直前の操作が選ばれている。

Tab Warming機能の性質上、レンダリング処理に時間のかかるWebページほど効果を発揮しやすい。もっとも、タブの切り替えに要する時間は、平均値・中央値ともに減少することが判明しており、特別なケースでなくともユーザーはメリットを享受できる。ちなみに、browser.tabs.remote.warmup.maxTabsの設定値(デフォルトは3)を変更することで、効果範囲の調節も可能だ。

f:id:Rockridge:20180715164711p:plain
タブ切り替え時間の平均値(Mean)と中央値(Median)が低下

タブのダブルクリックで現在表示させているタブを閉じる小技(Firefox 61以降)

Firefox 61以降、以下の手順で本体の設定を変更すると、タブのダブルクリックによって現在表示させている(=アクティブな)タブを閉じることができる(Bug 1435142)。

  1. アドレスバーに"about:config"と打ち込んでページを開き、「動作保証対象外になります!」という警告が出たときは、「危険性を承知の上で使用する」をクリックして先へ進む。
  2. 検索欄にbrowser.tabs.closeTabByDblclickを入力し、ヒットした設定名をクリックして真偽値をtrueに変更する。

通常、タブを閉じる際はタブの右端にある「×」マークをクリックする。上記の設定をすれば、アクティブなタブに限りダブルクリックで閉じることができるので、手間が省けるわけだ。対象をアクティブなタブに限定しているのは、タブ切り替え時に誤ってタブを閉じてしまう事故を防ぐためである。

タブを閉じる作業を効率よく行うという意味では、マウスジェスチャ系の拡張機能を入れるほうがよいかもしれない。だが、WebExtensionsの制約によって、読み込み途中のページや一部のページではマウスジェスチャが効かない。そんな場合でも、本機能はFirefox本体に搭載されたものなので動作する。併用も選択肢のうちだろう。

Firefox 61でRetained Display Listsが段階的に有効化

Firefox 61のリリース後、当初は無効となっているRetained Display Lists(以下RDL)という機能が有効化されていく(Bug 1467514)。現在の計画では、リリースの2日後にまず25%のユーザーが対象となる。1週間様子を見てから対象を50%に拡大し、さらに1週間様子を見て100%に引き上げるという。

RDLについては、今年の1月にFirefox QuantumのOff Main Thread Painting(OMTP)とRetained Display Listsについて - Mozilla Fluxで紹介した。再描画の処理を軽減する仕組みであり、余力をJavaScriptの処理やレイアウトの実行、入力イベントへの応答などに回せるので、Webページの応答性が向上する。

Retained Display Lists for improved page performance – Mozilla Hacksによれば、MozillaがFirefox 60 Betaのユーザーを対象に行ったテストの結果、RDLを有効化すると描画処理に要する時間の中央値が、4.5ミリ秒から3ミリ秒へと減少したとのこと。

f:id:Rockridge:20180626234920p:plain
〔グラフ〕前半:RDL有効 後半:RDL無効

このように、全体的に見て描画処理に要する時間が3分の2になっただけでなく、16ミリ秒を超える「遅い」描画処理に関しては、ほぼ40%の割合で削減することに成功したという。Firefox 58 Betaの時点ではこの削減割合が「30%近く」にとどまっていたから、その後の改良で効果を増したことがわかる。

今後もRDLは改良が加えられる見込みだ。RDLが効果を発揮できない、ページ全体の再描画を要する場面を早期に検知できるようにするほか、RDLの準備作業にかかる時間も短縮させる。

2019年のFirefoxのリリース予定日

通常版のFirefoxは年に7回、ESR(延長サポート版)は年に1回、メジャーアップデートが実施される。アップデートのリリース間隔は6週間に固定されない変則的なものなので、Mozillaは早い段階でスケジュールを明らかにして、ユーザーがアップデートに備えた計画を立てられるようにしている。ただし、スケジュール公開後もときどき変更が加えられる。

Firefox Release Calendar - MozillaWikiに2019年のスケジュールが掲載されているので、リリース版とESRの日程(米国時間が基準)を紹介しておく。便宜上、リリース未了のバージョンについては2018年のスケジュールも記載するので、対象バージョンはリリース版のFirefox 61から71までとなる。

なお、Firefox ESR 60系列の次がESR 68系列となっている。かつては毎年3月に新しいESR系列に移行していたが、7月まで持ち越されることになった。

リリース予定日 正式版 ESR
2018-06-26 Firefox 61 Firefox 52.9; 60.1
2018-09-05 Firefox 62 Firefox 60.2
2018-10-23 Firefox 63 Firefox 60.3
2018-12-11 Firefox 64 Firefox 60.4
2019-01-29 Firefox 65 Firefox 60.5
2019-03-19 Firefox 66 Firefox 60.6
2019-05-14 Firefox 67 Firefox 60.7
2019-07-09 Firefox 68 Firefox 60.8; 68.0
2019-09-03 Firefox 69 Firefox 60.9; 68.1
2019-10-23 Firefox 70 Firefox 68.2
2019-12-10 Firefox 71 Firefox 68.3

Mozillaがメリトクラシーを捨てるとき

Mozillaはガバナンスのあり方を自ら定義しているのだが、最近、その定義を見直す動きがある。mozilla.governanceフォーラムの"Proposal: Addressing the term “meritocracy” in the governance statement"スレッドで議論が行われている。

まずはMozillaのガバナンスのあり方について、現在の定義を見てみよう。

Mozilla is an open source project governed as a meritocracy. Our community is structured as a virtual organization where authority is distributed to both volunteer and employed community members as they show their abilities through contributions to the project.

Mozillaはメリトクラシーを採用するオープンソース・プロジェクトである。我々のコミュニティは仮想的な組織として構築され、そこでの権威は、プロジェクトへの貢献を通じて自らの能力を示すことにより、ボランティアにも雇用されたコミュニティ構成員にも配分される。

難しい言い回しだが、かみ砕いて言えば、努力・能力・成果の総体を「メリット」と呼ぶとすると、Mozillaコミュニティはメリットを基準にして運営されていくということだ。コミュニティの構成員はMozilla Corp.の従業員と外部貢献者の双方を含むから、世界中に散らばっているし、外部貢献者に対する業務上の指揮命令関係があるわけでもないので、仮想的な組織とならざるをえない。そして、Mozilla Corp.の従業員の特権は否定されており、メリットを示せば外部貢献者の成果物であっても採用される。

この説明でもまだ抽象度が高いわけだが、Mozillaの活動が多様であるため、抽象的な概念を使うことなく簡潔にガバナンスのあり方を定義することは難しい。話をわかりやすくするため、Firefoxの開発に焦点を絞ろう。要するに、メリトクラシーを採用すると、Firefoxの機能を改善する優れたコードが提供されるのであれば、Mozilla Corp.の内外を問わず受け入れることになる。

だが、その一方で、Mozillaはダイバーシティと社会的包摂に関する活動にも力を入れている。"Women and Web Literacy"と名付けられたプログラムはその一例だ。この観点からは、Firefoxのコードに対する内外の貢献者において、仮に白人男性が7割を占めているとすると、是正を検討する必要が出てくることになる。

Mozillaが2018年の国際女性デーに合わせて、コードレビュー時のジェンダーバイアスや人種バイアスを減らす実験に取り組んでいることを発表したのも、そうした文脈の中で理解できよう。この実験は、Bugzilla@Mozillaのレビュー申請やGitHubのプルリクエストを匿名化することで、コードレビュー担当者が予断を持ってレビューに臨むことを防ぐというもの。メリットによって評価する際に余計なバイアスがかからないようにするわけだから、これもメリトクラシーの範疇だ。

そこから先、たとえばMozilla Corp.がプログラマを採用する際に、女性の比率を定めるだとか、特定のエスニック・グループ(黒人やヒスパニックなど)に属する場合は面接で加点するといったアファーマティブ・アクションをとろうとすれば、メリトクラシーとの抵触が問題となる。

ここまでの予備知識を踏まえてもらったうえで、提案中の新しい定義を紹介しよう。Mozillaはガバナンスのあり方についての定義を、次のように変えようとしている。

Mozilla is an open source project. Our community is structured as a virtual organization. Authority is primarily distributed to both volunteer and employed community members as they show their ability through contributions to the project. The project also seeks to debias this system of distributing authority through active interventions that engage and encourage participation from diverse communities.

Mozillaはオープンソース・プロジェクトである。我々のコミュニティは仮想的な組織として構築される。権威は、主に、プロジェクトへの貢献を通じて自らの能力を示すことにより、ボランティアにも雇用されたコミュニティ構成員にも配分される。プロジェクトは、多様なコミュニティからの参加を呼び込み、促進することによる積極的な介入を通じて、この権威配分のシステムに存在するバイアスを是正することも追求する。

この定義に則れば、上記のアファーマティブ・アクションも「権威配分のシステムに存在するバイアスを是正する」ための積極的な介入措置として正当化されるだろう。新定義の提案者は、Mozillaのガバナンスのあり方自体を変えようとは思っておらず、説明の仕方を変えるだけだと述べているが、額面通り受け取ることは難しい。

Mozillaが営利を追求しないため、Firefoxにユーザーのプライバシーを尊重する機能を積極的に組み込めるというのであれば、ユーザーにとって利益のある話だ。しかし、Firefoxが「政治的に正しい」プロセスによって開発されたからといって、ユーザーがどんな利益を受けるというのだろう。Firefoxがパフォーマンス面でChromeに追いつくためには、メリトクラシーの徹底こそがむしろ求められているのではないか。

さらに別の疑念が頭をもたげる。「バイアスを是正するための積極的な介入措置」が、プログラマの思想を問題にするようになっていく危険はないだろうか。極端な例を挙げれば、差別主義者がとても優れたコードを書く場合、Mozillaはその貢献を受け入れるのか、ということになるわけだが、実はここで「受け入れない」を選んだ先にこそ真の問題がある。現実には、誰が見ても差別主義者だと判断できるケースは少ないだろう。あるプログラマの過去の発言を捉えて、「彼は女性差別的な発言をしたからMozillaにふさわしくない」との批判が出た際、メリトクラシーに従えば、「彼は優れたコードを書いて貢献してきたからMozillaにふさわしい」と反論できるが、バイアスの是正も追求するとなれば、どうなるかわからない。

ここで思い出されるのがBrendan Eich氏の顛末だ。Eich氏はMozillaプロジェクトの創設者であり、Mozilla Corp.のCTOを努め、2014年3月24日には同社のCEOに就任したが、強い批判を受けて2週間と経たないうちに辞職を余儀なくされた。Eich氏が2008年に同性婚を禁じるカリフォルニア州憲法改正案に賛成し、1000ドルを寄付した点が、Mozilla Corp.のCEOとして不適格だと批判されたのだ。Eich氏はCEO就任後、"Inclusiveness at Mozilla"というブログ記事を発表し、ダイバーシティと社会的包摂を尊重した経営を行っていく旨を宣言したのだが、いったん巻き起こった批判が止むことはなかった。

Mozillaのガバナンスのあり方に関する新定義が発効されれば、同じようなことがもっと広範に起こる可能性も否定できない。この定義は、単なる建て前ではなく、Mozillaの活動の中で常に参照され、活動の方向性の指針となるものだからだ。考えすぎかもしれないが、ニーメラーの警句の例もあることなので、あえて記事を起こして記録に残しておく。