Mozilla Flux

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

Firefox 47におけるアドオン利用の注意点

Firefox 47のバージョンアップ後、アドオン(拡張機能やプラグインなどの総称)を使っていて「あれっ?」と思ったら、以下の点を確認してみてほしい。

デジタル署名の強制を無効化する設定は残存

デジタル署名が付されていない拡張機能をインストール可能にする設定は、Firefox 48で削除されることになった。なのでFirefox 47ではこの設定(xpinstall.signatures.required)は生きている。

MozillaはもともとFirefox 42でこの設定を削除する予定だったが、削除時期は、まずFirefox 44へと延期され、次いでFirefox 46に延び、さらにFirefox 47という話になった。今回で4度目の延期である。開発者向けのノーブランド版Firefoxを提供する準備が遅れているらしい

拡張機能の互換性は低下

Firefox 47では、Firefox 3で導入されたFUELが削除された(Bug 1090880)。FUELは拡張機能の開発者向けにFirefoxが提供していたJavaScriptライブラリで、古くはFirefox 4で廃止される話が出ていたことを思えば、ずいぶん長くもったといえるだろう。

はてなブックマーク拡張は、最新版のバージョン2.3.12でFUEL依存を解消したが、2016年3月末でサポート終了となったはてなスクリーンショット拡張も、FUELを使っていたことが明らかになっている。こうした例から、最近メンテナンスされなくなっている拡張機能が、実はFUELに依存しており、Firefox 47以降で全く動かなくなるといった事態が予想される。

クリックして有効化するプラグインが増加

Firefox 47では、Adobe Flashを除くすべてのプラグインが、初期設定で「実行時に確認する」の設定になっている(Bug 1263630)。MozillaはFlashを除くNPAPIプラグインのサポートをFirefox 53で廃止する計画であり、今回の措置はその一環だ。

今まですぐに再生されていたはずの動画が再生されない場合、アドオンマネージャの〔プラグイン〕の欄を確認してみよう。「実行時に確認する」に設定されているプラグインを「常に有効化する」に変更すれば、挙動が元に戻るはずだ。

Firefox 49からCPUのSSE2命令サポートが必須化

2016年9月13日(米国時間)にリリース予定のFirefox 49以降、SSE2命令をサポートしたCPU上でのみ動作するよう変更が加えられる(Bug 1271755)。これはWindowsに限らず、デスクトップ版Firefoxすべてに共通する措置だ。サポートされていないマシンには、Firefoxをインストールできなくなる(Bug 1271759)ほか、アップデートも提供されなくなる

といっても、実際に影響を受けるユーザーはごくわずかだろう。Intelが開発したストリーミングSIMD拡張命令(Streaming SIMD Extensions:SSE)の第二世代がSSE2であり、Pentium 4で初めて実装され、AMDもOpteron/Athlon 64/Turion 64でこれをサポートしている。なのでIntel製CPUを積んだ2002年製以降のマシンか、AMD製CPUを積んだ2005年製以降のマシンであれば、ほぼ確実にSSE2命令に対応しているはずだ。ちなみに、Googleは2014年5月にリリースしたChrome 35で既にSSE2命令を必須化している(Issue 348761)。*1

今回の措置の発端は、Windows版Firefoxのビルド環境をVisual Studio 2015に更新したことだった。Firefox Nightly 48で当初Visual Studio 2015 Update 1(Bug 1186060)へ、次いでUpdate 2(Bug 1259782)へと切り替えたのだが、意図せずSSE命令を含むプログラムが生成される不具合が生じたため、Microsoftに修正を依頼するか、SSE命令のサポートをシステム要件とするかで議論になった。注意してもらいたいのは、ここでの議論の対象はSSE2ではなくSSEだ。現行のFirefox 46を含めて第一世代SSEすら必須になっていなかったので、まずはSSE命令のサポートが話題に上ったのだ。

Microsoftに対しては連絡がとられたらしく、Visual Studio 2015 Update 3で不具合が修正される見通しであることが後に判明したものの、Mozillaの開発者たちは、古い環境のサポートを切るデメリットよりも、SSE2命令を用いた最適化によって得られるメリットのほうが大きいと判断した。2016年の現在から振り返れば、SSEとSSE2の間に線を引く意味も乏しかったのだろう。結果、Windows版Firefox 49はVisual Studio 2015 Update 2でビルドされ、SSE2最適化が施されることになった(Bug 1271794)。他方、準備期間が必要なのでFirefox 48はビルド環境の更新を見送り、Visual Studio 2013が用いられる(Bug 1270664)。

気になるのはSSE2最適化の効果のほどだが、現在でもIonMonkey/OdinMonkeyというJavaScript/asm.jsコンパイラがSSE2命令を使えるときは使っていることからすると、大きな違いは出ないとみられる。重いWebアプリならば多少は効果を実感できるかもしれない。

*1:なお、Windows向け64bit版FirefoxはもともとSSE2命令が必須化されているため影響を受けない。

Mozilla、Microsoft、Operaが拡張機能のコアAPIの標準化を提案

Mozilla、Microsoft、Operaの三社は、2016年5月2日(米国時間)、W3CのBrowser Extension Community Groupのメーリングリストにおいて、ブラウザの拡張機能におけるコアAPIやマニフェスト、パッケージを標準化することを共同で提案した。今後はGitHubで仕様を公開するとともに、Twitterアカウントでも情報を発信していくようである。

今回の共同提案に至る経緯を補足する記事として、Dev.Opera — For a Better Extensions Ecosystemがある。Operaは、2013年7月時点で、ベンダー中立的なブラウザアドオン用パッケージフォーマットである「NEX」を提唱しており、将来的にはフォーマットの策定作業を標準化団体において行っていくとしていたが、ようやくその努力が実った形だ*1

現時点で、以下のようなコアAPIが提案されているが、上記Dev.Operaの記事においても明言されているように、コアAPIの標準化後もブラウザベンダーが独自のAPIを追加することは許容されている。MozillaのWebExtensionsも標準APIの拡張版と位置づけられることになる。

  • browserAction
  • contextMenu
  • extension
  • i18n
  • pageAction
  • runtime
  • tabs
  • webNavigation
  • webRequest
  • windows

共同提案に記載はないものの、コアAPIがChromeの拡張機能APIをベースにしていることは明らかだ。そもそもOperaはChromiumベースだし、MozillaのWebExtensions APIやMicrosoft Edgeの拡張機能APIもChromeの拡張機能を念頭に置いて設計されている。また、上記Dev.Operaの記事には、他のブラウザベンダーにも提案に加わってもらいたい旨の記載がある。おそらく今回の共同提案の第1の狙いは、Googleを取り込むことにあるのだろう。そしてGoogleを取り込めれば、Appleを包囲できる。言い換えれば、三社はGoogleとAppleという「二大国」が恣意的に拡張機能APIを変更して囲い込むのを防ぐため、いわば「国際法」でコントロールする方向に持っていこうとしているのだ*2

拡張機能がパッケージごと標準化されるならば、開発者の負担が減るだけでなく、ユーザーも大きなメリットを享受できる。拡張機能をインストールする際、どのブラウザに対応したものかを気にする必要がなくなるからだ。この点に関し上記Dev.Operaの記事は、将来的に拡張機能が特定のブラウザ向けAPIを検出して動作を切り替える仕組みになる可能性があると指摘する。つまり、コアを共通にしつつ派生部分を切り替えることで、1つの拡張機能がクロスブラウザで動作するというのが、三社が描く将来像なのである。

*1:今回の共同提案をまとめるまでにも、数か月に及ぶ協議があったらしい。

*2:この件に限らず、Mozillaは国際関係論でいうソフト・パワーの強化を目指しているのかもしれない。Firefoxを自立の価値と強く結びつけたのもその布石か。

拡張機能のデジタル署名の有効期限問題

最近、多数の拡張機能が一斉に更新されたことに気付いた方も多いのではないだろうか。Firefoxのアドオンマネージャから個別の拡張機能の項目を開くと、名称が例えば"Make Link 11.03.1-signed.1-signed"のようになったものが見つかるはずだ。

f:id:Rockridge:20160501220028p:plain

この.1-signedは、Mozilla Add-ons(AMO)に登録されている拡張機能に対し、Mozillaが自動的にデジタル署名を付与したことを示す。.1-signedが2つ並んでいるということは、自動的な署名付与が2回行われたことを意味するわけだ。そして、最近の一斉更新は、この2回目の署名付与が行われたことによる(Bug 1267361)。

なぜわざわざ2回目の署名付与が必要だったのかといえば、1回目の署名の有効期限が1年に設定されており、そのままでは期限切れになった拡張機能が使えなくなるからだ(Bug 1267318)。Firefox 43の初期設定で未署名の拡張機能は無効化されるようになっている*1。放置すれば数週間以内に混乱が生じることは必至だったので、Mozillaは有効期限を5年とする新たなデジタル署名を付与した。

また、ひとまずデジタル署名の有効期限を無視する修正がFirefox 46以降とFirefox ESR 45に加えられた(上記Bug 1267318)。近日中にリリースされるとみられる修正版であれば、Mozillaによる2回目の署名(以下「新署名」)が付与されていない拡張機能であっても、無効化されずに済む。

問題となるのは、拡張機能に対する署名チェックが入ったFirefox 43から(非ESR版)Firefox 45までを使用し、かつ、AMOに登録されていない拡張機能をインストールしている場合だ。新署名が付与されないまま元の署名の有効期限が切れてしまうので、対象となる拡張機能は無効化されることになる(以下の表を参照)。その場合、Firefox本体を最新版にアップデートすることが安全で確実な対処法ではあるが、about:configからxpinstall.signatures.requiredをfalseに変更する手もある。

Firefox 46以上/ESR 45 Firefox 43 - 45
拡張機能(新署名あり) 問題なし 問題なし
拡張機能(新署名なし) 問題なし 問題あり

なお、さすがに.1-signed.1-signedのように名前が間延びするのはMozillaとしても見映えが悪いと考えているようで、今後は.1-signedが.1-signed-2に置き換わるといった形にするようだ。

*1:未署名の拡張機能を有効化する設定は、削除時期がFirefox 47に延期された

OS X 10.6/10.7/10.8のサポートはFirefox 47まで Windows XPのサポートは当面継続(追記あり)

ESR版以外は8月まで

Mozillaは、FirefoxにおけるOS X 10.6/10.7/10.8のサポートを2016年8月で終了すると発表した。サポート終了後もFirefoxを使い続けることは可能だが、新機能やセキュリティアップデートの提供は受けられなくなる。現在の予定では、Firefox 47が2016年6月7日(米国時間。以下同じ)にリリースされた後、同年8月2日にFirefox 48がリリースされることになっているので、上記の発表に照らしてみると、OS X 10.6/10.7/10.8をサポートするのはFirefox 47までとなる。

他方、Firefox ESR 45ではOS X 10.6/10.7/10.8をサポートし続ける。ESR 45系列のサポートは2017年5月ころまでは続くとみられ、2016年8月以降もOS X 10.6/10.7/10.8上でFirefoxを使い続けるのであれば、今の時点で法人向け延長サポート版(ESR)に乗り換えるべきだろう。ただし、Appleが既にOS X 10.6/10.7/10.8のサポートを終えている点には注意が必要だ。Mozillaが対応するのもESR 45.8までである。

OS Xに関するサポート変更は、2012年11月にFirefox 17で10.5のサポートを終了して以来のこととなる。2016年3月11日に突如として提案が出され、主要開発者の間でも意見が分かれたものの、最終的に実行に移されることになった。

Windows XPのサポートは当面継続

こうなると気になるのはWindows XPのサポートだが、こちらは当面継続される。Firefox 46のリリース前に、XPはESR 45系列限定でサポートすることにしてはどうかとの提案が出されたものの、XP上におけるFirefoxの利用状況を調査している最中だとして、採用されなかった。Mozillaは、Windows版Firefoxに関し、バイナリファイルにSHA-2ベースのデジタル署名を付すこと(Bug 1079858)や、ビルド環境をVisual Studio 2015に移行すること(Bug 1124017)について、コストをかけてWindows XP(SP2以降)に対応させているし、直近のFirefox 46でもXP上でMP4/H.264/AAC形式の動画・音声ファイルを再生できるようにしている(Bug 1250766)。OS X 10.6/10.7/10.8との差は明らかだ。

2014年4月にサポートを終えたOSにMozillaが対応し続ける理由は、Windows XP上のFirefoxユーザーが多いからである。Mozillaの調査によれば、Firefoxのリリース版/Beta版ユーザーのうち約12%がWindows XP上で利用しており、このXP上のユーザーのうち約16%がXP SP2にとどまっている。他方、OS X上での利用者は10.6以降のバージョン全体で6.7%となっており、XPのサポートを終了した場合の影響が、OS X 10.6/10.7/10.8の場合の比ではないことがわかる。

しかも、別の調査によれば、Windows XP上でFirefoxを使用するユーザーのうち40%から53%は、CPUまたはRAMが要求水準を満たさずWindows 7以降にアップグレードできない状態にあるとされている。つまり、買換えを待たないとOSが更新されないわけで、XP上のFirefoxユーザーの数が短期間に大きく減少することはなさそうだ。

のしかかる負担

もっとも、Windows XPのサポートは、Mozillaにとって次第に重荷になりつつある。最近の例を挙げると、Firefoxは、ICU(International Components for Unicode)という外部のライブラリを統合しており、これによってUnicodeやJavaScriptの国際化をサポートしているのだが、このICUが2016年10月ころにリリース予定のバージョン58でWindows XPをサポートしなくなるのだという。ICU 58を導入しないとUnicode 9.0のサポートが遅れる一方、これをそのまま導入するとWindows XPのサポートを続けられなくなる、ということで議論になっている

これは1つの例にすぎないが、こうしたWindows XP向けの余分な作業が積み重なることで、Firefoxの開発の障害となることを懸念する声があるのも事実だ。

とはいえ、上記のとおりWindows XP上のFirefoxユーザー数は到底軽視できる規模ではないので、たとえばFirefox 48までアップデートしたユーザーに対し、Firefox ESR 45への移行を求めることになれば、おそらく混乱は免れない(だからこそサポートをESRに限定する旨の提案はFirefox 46のリリース前に行われた)。それに、GoogleがChrome 50以降、Windows XP/Vistaのサポートを終了させたことは、Firefoxにとってシェア回復のチャンスとも考えられる。

Firefox 52(2017年3月ころリリース)まではWindows XPのサポートを続け、その先はESR限定のサポートとするのが穏当なように思うが、どうなるだろうか。

(16/05/03追記)
OS X 10.6/10.7/10.8のサポートはFirefox 48まで継続されることが判明した。Mozilla Corp.でDirector of Engineering, Releases and Engineering Productivityを務めるLawrence Mandel氏が明らかにした。Firefox 49のリリース予定日は2016年9月13日なので、サポートを同年8月で終了するというアナウンスは正確ではなく、実際には9月半ばの終了となる。

(16/05/04追記)
Mozilla Corp.の従業員の中からも、Windows XPのサポートをFirefox ESRに回すとすればESR 52からだろうとの観測が出ている。ICUについては、開発の中心にいるIBMに対してという趣旨とみられるが、(大口のユーザーである)Mozillaが頼めば、XPのサポート終了をしばらく先延ばしにしてくれるらしい。

(16/05/05追記)
Bug 1269811 - Stop updates for Firefox 49 and later on MacOS X 10.6-10.8も参照のこと。既にFirefox Nightly 49ではOS X 10.6に対するアップデートの提供を停止したという。

(16/05/28追記)
OS X 10.6/10.7/10.8のサポートの件は5月3日に追記した内容のとおりなのだが、経緯は思っていたよりもややこしかった。もともとの計画は、本文に書いたとおりFirefox 47でサポートを終えるというものだった。しかし、Firefox 48でサポートを終えるのだと主要開発者さえも誤解したので、本当にFirefox 48でサポートを終える(=Firefox 49からはサポートしない)ことにした。

その結果、5月5日に追記したとおり、OS X 10.6/10.7/10.8上のユーザーに対してはFirefox 49へのアップデートが提供されなくなる。代わりに、Firefox ESR 45系列へのダウングレードパスが提供される可能性がある。