Help us understand the problem. What is going on with this article?

mozilla Firefox、Thunderbird 52からのアドオン非動作(XPCOM廃止の影響)の解決策一例

More than 3 years have passed since last update.

はじめに

Firefox や Thunderbird 開発元である Mozilla は、XPCOM の(XULも?)廃止を予定しており、バージョン52で XPCOM の一部は廃止されました。古くから使用されてきている多数のアドオンが動かなくなったことと思います。
今後も続々と廃止になっていくようです(もちろん機能改善もあるのですが)

解決策の例

アドオンがうまく動かなくなった場合は、デバッグコンソール(Ctrl + Shift +J)を開いて、エラーメッセージからヒントを得ることができるでしょう。

"nsPreferences is not defined."

設定情報(設定エディタで読み書きできる例のもの)の取得・保存に  chrome://global/content/nsUserSettings.js 内にある nsPreferences を使用しているアドオンがあります。

let alwaysShown = nsPreferences.getBoolPref("extension.myaddon1.alwaysshown", false);

nsPreferences.setIntPref("extension.myaddon1.level", 10);

は、バージョン52以降エラーになります。これは、たとえば次のように書き換えることができます。

let prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);

let alwaysShown = false;
if(prefs.getPrefType("extension.myaddon1.alwaysshown") == Components.interfaces.nsIPrefBranch.PREF_BOOL)
{
  alwaysShown = prefs.getBoolPref("extension.myaddon1.alwaysshown");
}

prefs.setIntPref("extension.myaddon1.level", 10);

さいごに

MDN サイトでの多数あるリンク切れが、プロジェクトの綻びをなんとなく感じさせてくれます(ボランティア活動で作られているので贅沢は言えませんが...)
"nsPreferences is not defined" でググると

「重宝していたアドオン『***』が使えなくなってしまいました。。作者さんからのメッセージでは『Firefox52以降のバージョンでは動作しません。すみませんが今後の対応予定はありません。』とありました。諦めるしかないのかもしれませんが、もう業務とどっぷりで、しかも代わりになるアドオンも見つからないのです(泣)寄付してもよいのでどなたか作ってください!!

といった叫びも見られます。視点を変えてみると、これはチャンスかも!?開発者でないあなたも、ばりばり開発者だけど Firefox アドオン開発には詳しくないあなたも、Firefox や XUL に詳しい開発者をつかまえて、協同して代替の先進的アドオンをリリースしてみてはいかがでしょう?

参考にした情報

otagaisama-1
自社の開発・運用で、皆様からの情報にとてもお世話になっています。ほぼ1人情SYSの身で、他のネット情報には少ないレアめなシステムを自社で使っている点でも、今めいたシステム情報入手面でも、Qiita のみなさまはとても貴重です。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away