Mozilla Flux

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

ブラウザはどこまで自動でアップデートすべきか

アップデートの分類

Firefoxには三つのアップデートがある。一つはセキュリティアップデートで、たとえばFirefox 3.0.7から3.0.8へとバージョンアップする場合だ。もう一つはメジャーアップデートで、Firefox 2からFirefox 3へのバージョンアップがこれに当たる。最後はアドオンのアップデートで、とくに主要な拡張機能がバージョンアップすると、セキュリティアップデート以上にユーザーへの影響が大きい。

Firefoxには昔から、本体とアドオンのアップデート機能が備わっている。本体に関していえば、セキュリティアップデートの場合、一つ前のバージョンから更新するときは差分アップデートが、それ以前のバージョンからだとフルアップデートが提供される(『現在提供されているFirefoxアップデートの経路』参照)。それでも、Firefox 3を使っていれば、このアップデート機能を使って3.0.1から3.0.8にバージョンアップすることはとても簡単だ。また、アドオンのアップデートに関しても、「セキュアな自動更新」であること以外に目立った制約はない。

これに対し、メジャーアップデートは状況が別である。Firefoxのアップデート機能を利用する場合、その経路は限られている。最新の経路は、Firefox 2.0.0.20から3.0.5へのアップデートで、2.0.0.20のユーザーが3.0.8を使いたいなら、いったん3.0.5を間に挟むことになる。むしろ3.0.8のインストーラをダウンロードして上書きしたほうが早い。経路が限られている理由は、事前のテストが必要になるからなのだが、前記記事で触れたとおり、Mozillaは常に最新バージョンへとアップデートできるようにすべくプロセスを改良中である。加えて、Firefox 3.5は、メジャーリリースではあるが、3.0.x系列の最新版を利用しているユーザーが積極的に更新を確認した場合に限り、リリース日からフルアップデートを提供する方針だ(『Firefox 3.1が出たら「ソフトウェアの更新を確認」』参照)。

以上のことを、どこまで自動化されているかという視点で見ると、セキュリティーアップデートとアドオンのアップデートは自動化されているが、メジャーアップデートは自動化されていない。そして、自動化の中身は、本体とアドオンで異なっている。初期設定を前提とすると、Firefox本体の最新版は自動的にダウンロードされ、再起動後にインストールされる。ただし、アドオンが無効化される場合は警告されるので、インストールの延期が可能だし、そもそもオプション設定ウィンドウからこの自動更新を停止することもできる。一方、アドオンは、アップデートの通知が出るだけで、自動的にインストールされはしない。

現在の仕組みを変えるとしたら

Firefoxの自動アップデート機能を強める方向に変更すると仮定したら、どうなるか。まずは、メジャーアップデートから考えてみる。たとえば、セキュリティアップデートと同じ方式で、メジャーアップデートが提供されるとしよう、アドオンをインストールしているユーザーは、ほぼ確実に互換性の警告画面を目にするだろう。インストールを延期できるので、アドオンが対応するまで待つことはできる。が、ダウンロードされた新バージョンが常に待機状態にあるので、起動のたびにいろいろ表示が出るとすると、うるさく感じる場面は多くなりそうだ。

アドオンが入っていなければ、インストールまで自動で行われる。このケースには、ライトユーザーが多く当てはまるだろう。Firefoxの設定をまったく変更せずに使っている可能性も高く、自動更新をオフにしていることはまずない。最新バージョンはセキュリティ面でも配慮されているから、Mozillaとしては、安全で快適な環境を提供できるわけだ。

問題点を挙げてみよう。上の「起動のたびに表示が出る」件は、目障りにならないようユーザーインターフェイス(UI)を工夫すれば足りる。それよりも、様子見ができなくなる点のほうが重要だろう。これは、ユーザーだけでなく、開発者も含む。ユーザー環境は、Mozillaが想定しきれないほど複雑だ。特定のセキュリティソフトとの相性問題があるかもしれない。あるいは、別の常駐ソフトの影響を受けるかもしれない。ユーザーがそれらを見極めようにも、すぐさま自動で新バージョンがダウンロードされてしまうのでは時間が足りない。開発者の立場にたっても、正式版のリリース直後は予想外のバグが発見されることがあり、数回セキュリティアップデートをしてから自動アップデートの経路に乗せ、それもユーザーのはっきりした同意を得た上でダウンロードを開始するほうが安全だ。

とはいえ、ユーザーが適切にアップデートを保留する機能が備われば、高度な自動化は、無茶な仕組みではないと思う。アドオンの互換性に問題がなくなり、情報を集めた結果とくに不具合もなさそうだと判断すれば、ユーザーはGoサインを出せばいい。ただちにインストーラが起動し、バージョンアップが行われる。今よりも格段に最新版ユーザーが増えるだろう。そうした挙動が嫌なら、自動アップデートをオフにしておけばいいのだ。そして、開発者サイドは、テストを徹底することで予想される問題を減らすことが可能だ。全体的に困難は伴うが、方式として十分検討に値する。

ここまで説明してきた方式よりも強力にアップデートを進めようとすれば、全自動ということになる。ユーザーが設定をオフにしない限りメジャーバージョンアップが強行され、未対応のアドオンはすべて無効化される。もう一歩進めて、設定をオフにできないようにまですれば完璧だ。Mozillaのサーバーの処理能力を脇に置けば、バージョンアップ率は一週間と経たないうちに100%近くになるだろう。その代わり、世界中で怨嗟の声が渦巻きかねないが。

設定はオフにできるとして、この全自動アップデートをセキュリティアップデートで適用することは可能だろうか。Firefoxの初期設定を前提にすると、今の自動アップデートとの差は、再起動の有無と、アドオンの警告の有無ということになりそうだ。再起動はないほうがむしろ望ましい。アドオンの警告も、自動アップデートで大多数のユーザーが受けるメリットを考えると、ごく一部のユーザーのごく一部のアドオンが無効化されるとしても、採用する余地は充分にある(もちろん無効化されたことの通知はする)。

技術的には、再起動なしにFirefox本体をアップデートするのがかなり難しそうだ。しかし、メジャーアップデートの自動化よりもデメリットが少なく、方式としては現行のものより優れているのではないだろうか。

最後に、アドオンのアップデートで自動化を進めた場合を考える。現在は通知だけだが、自動でインストールまでしてくれるケースだ。Firefox 3.5の段階では、更新のため本体の再起動が必要だが、その次のバージョンでは、再起動なしにアドオンをインストールできるようにする計画がある。これが実現した場合、合わせて、アドオンはユーザーが何もしなくてもバージョンアップされる。

一見素晴らしいが、アドオンにバグが含まれていたときが厄介だ。本体の安定性や使い勝手も道連れにされるからだ。大半のアドオンはMozilla Add-ons(AMO)のチェックを通しているが、完全ではないし、だいいちAMO以外のルートからもアドオンはインストールできる。MozillaのコントロールできないところでFirefoxの動作に不具合が生じても、対応しきれない。となれば今のままが一番だろう。

まとめよう。メジャーアップデートとセキュリティアップデートは、今よりも自動化の程度を推し進めてよいが、メジャーアップデートに関しては、現在のセキュリティアップデートのレベルにとどめるべきだ。そして、アドオンのアップデート方式は変更しなくていい。

Google Chromeという他山の石

既にFirefoxよりもアップデートの自動化に向けて走り出しているのがGoogle Chrome(以下Chrome)だ。ユーザーにアップデートを意識させない作りになっていて、バージョンを確認して初めて数字が上がっていることに気づく。Firefoxのセキュリティアップデートに当たる部分では、インストーラの起動も行われない作りになっている。

Chromeは、Firefoxと同じく拡張機能をサポートする予定である。開発者向け文書によれば、アップデートについてはこう書かれている。

Similar to Google Chrome, it is important for security that extensions be able to silently update. This should be a capability that is present for all extensions by default, not something the author has to plan for.

Google Chromeと同様に、拡張機能もひっそりとアップデートできることがセキュリティ上重要だ。これはすべての拡張機能がデフォルトでもつ機能であるべきで、作者の準備が必要なものであってはならない。

Chromeは拡張機能の自動インストールを目指している。もちろん、インストール時の再起動も不要にするのだろう。ということは、上で挙げた問題点がそのまま当てはまるわけだ。たしかに、拡張機能にセキュリティホールがあるケースも考えられるから、インストールまで自動化されていたほうが安全とはいえる。しかし、拡張機能は少なくともGoogleだけが提供するものではないはず。そこに含まれたバグがChrome本体に影響を与えるときはどうするのか。この影響は、タブごとにプロセスを別にしていても無関係である。拡張機能は全タブに適用できるのでなければ用をなさないからだ。

Chromeはサンドボックスを採用しているので、拡張機能がセキュリティ上危険な振る舞いに出ることは抑止されるはずだが、拡張機能自体の動作がおかしい場合に、それを止めることはできないだろう。かといってそれを恐れて拡張機能がChromeの一部しか操作できないのでは、魅力的な拡張機能は作れない。Google版AMOを作り、そこからのインストールしか認めないことにしたうえ、厳しい審査をパスしないと登録できないようにすれば、状況はかなり改善されるだろうが、この方法も拡張機能作者のやる気を削ぐだろう。

Googleがこうした課題にいかに対処するのか、非常に興味深い。その解決策がうまく機能するようなら、Firefoxへの導入を検討すればいい。どちらに転んでもFirefoxが困ることはない。

もう一つまだ明らかになっていないのは、メジャーアップデートの方式だ。開発中のChrome 2.0は、1.0のマイナーアップデートと同じような形でアップデートが提供されるのか。正式発表はないが、その可能性は高い。違う方式にすることのアナウンスがないのも判断材料になるが、アップデートの間隔も考慮に入れていいだろう。Chromeは2008年9月にBeta版がリリースされ、12月には1.0正式版となった。2009年3月に2.0 Betaを出しているので、その正式版は6〜7月と計算できる。このように短期間でバージョンを上げていった場合、アップデートを自動化しないと、ユーザーごとに使っているバージョンの差が激しくなってしまう。多くのユーザーは4.0を使っているのに、1.0を使っているユーザーも無視できない規模で残るといった具合だ。これではサポートに支障をきたす。

逆の見方もできる。Chromeは、自動アップデートを実施しても不具合が出ない範囲で、メジャーアップデートを繰り返していくのかもしれない。もしそうなら、新機能の追加は段階的にしかできないことになるから、開発上の制約としてはかなり大きい。

いずれにせよ、メジャーアップデートを自動化するなら、Chromeが拡張機能をサポートする以上、未対応の拡張機能を無効化した旨のメッセージを出すことは必須だ。しかし、これまでの経緯からみて、おそらくユーザーに本体をバージョンアップするかしないかの選択肢は与えられないだろう。作者が拡張機能を更新し、それが自動的にChromeに反映されて対応するというものになるはずだ。

であれば、Googleは拡張機能作者の更新作業という不確かなものに依拠せざるをえない。Firefoxの例からすると、高機能なアドオンはバージョンアップまでに時間がかかる。もちろん日々Firefoxの開発版は提供されているし、作者もそれを使って作業を行っているのだが、新しい正式版が出てからアドオンが対応するまでに数週間から数ヶ月かかることも珍しくない。Chromeでも同様と考えるのが自然だ。

Firefoxのユーザーは、バージョンアップしないまま様子見ができる。仮にメジャーアップデートの方式を現行のセキュリティアップデートと同等のものに変更しても、適切なUIを設けるか、設定を多少操作することで、アドオンの対応まで待つことができる。

他方、Chromeのユーザーはしばらくの間、お気に入りの拡張機能を使えない日々を強いられる。このいかにもまずい状況を打開する手段とはどんなものだろう。筆者は思いつかないが、Googleの優秀な開発者たちは思いついているのだろうか。画期的な方法があるのなら、ぜひ見てみたい。