Mozilla Flux

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

旧式拡張機能からの移行例

新形式の長所と短所

Firefox Quantumでは旧式の拡張機能が一切使えないようになっており、サポートされるのはChromeの拡張機能と共通する部分の多い新形式(WebExtensions)のものだけだ。Firefox 56以前で使用していた拡張機能が既にこの新形式に移行している場合はいいが、そうでなければ同じような機能を提供する別の拡張機能を探す必要がある。

もっとも、新形式の拡張機能は従来よりも制約が大きい。旧式拡張機能の時代に、Firefox本体を大幅に書き換えることさえ許容していた結果、さまざまなバグの温床となったうえ、拡張機能の互換性を維持することが重荷にもなっていたことに対する反省を踏まえ、新形式では拡張機能ができることを絞ったのだ。特に、Firefox本体のユーザーインターフェイス(UI)にはごく限定された範囲でしか介入できないようになっている。そのため、従来のようなオールインワン型の拡張機能(Tab Mix Plusなど)は作成が極めて難しくなっている。

新旧の差は相当なもので、旧式拡張機能の新形式への移行は同じコンセプトの拡張機能を作り直すのに等しいという意見が出るほどだ。しかも、Firefox 56までの間に新旧のハイブリッド形式に移行しておかないと、設定の受渡しもできない。

その代わり、拡張機能のインストール・アンインストールや有効・無効の切り替えの場面で、Firefox本体の再起動が例外なく不要となった。これによって、新しい拡張機能を気軽に試すことができるし、一部の拡張機能をふだんは無効にしておいて、必要になったら有効化するといった使い方でも支障がなくなる。それに、拡張機能がFirefox本体の速度や応答性を低下させる度合いは、かつてと比べ大きく軽減されている。

新形式の長所はそれだけにとどまらない。拡張機能の互換性が重視されているので、たとえば今インストールした拡張機能が2年後にも正常に動作している可能性は高いだろう。安定性の面では、今のところWindows版のみだが、拡張機能全体に1つの独立したプロセスを割り当てているため、Firefox本体を巻き込んで落ちるケースも少なくなるはずだ。加えて、Firefox Syncを利用して拡張機能が設定を同期させることも容易になった。

筆者のケース

今まで使っていた拡張機能がバージョンアップしないとか、バージョンアップしても機能が限定されてしまったという場合、前述のとおり新形式の拡張機能には仕様上の限界があるので、好みの環境を作り上げていくには、単機能の拡張機能を新たに見つけ出して、うまく組み合わせる必要がある。

Firefox Quantum以降、本体のアドオンマネージャーには〔旧式の拡張機能〕欄に「代わりのアドオンを探す」というボタンが付いており、新しい拡張機能を見つける際の助けになってくれる。また、英語が前提ではあるがExtension Finderというツールもある。

筆者の場合、Firefoxの開発版を常用しているので、早い段階から旧式拡張機能の廃止という問題に取り組まねばならなかった。現在も試行錯誤の途中ではあるが、インストールしている拡張機能は、ひとまず次のようなリストに落ち着いている。

Adblock Plusは言わずと知れた広告ブロッカーだ。uBlock Originも新形式に対応しているので、どちらを取るか迷うところではある。新規にインストールするのであれば、ABP Japanese filtersの設定が簡単なuBlock Originのほうがよいかもしれない。

Chrome Store Foxifiedは当ブログで過去に紹介したことがある。Chromeウェブストアに登録されている拡張機能を、いわば強引にFirefoxで動かすためのツールだ。"Feedly はてブ"はこのツールを用いてFirefox版に変換したものを使っているが、ブックマーク数は問題なく表示されている。

Close Tabs to the Leftは左側のタブをすべて閉じる機能を追加するもの。個人的にはそこそこ使うので、オプションとしてFirefox本体に取り込んでほしい。

Font Finder (revived)はWebページ内で用いられているフォントを調べる際に使う。できればChrome向け拡張機能であるWhatFontのようなものが欲しいところ。あるいは、ウェブ開発ツールのインスペクターにこの機能が入っているべきなのかも。

Gesturefyはジェスチャー機能を追加してくれる。作り込まれた設定画面を備えており、マウスジェスチャーやホイールジェスチャーのカスタマイズも可能だ。筆者はホイールジェスチャーにタブの切り替えを当てていて、コンテンツ内でマウスの右ボタンを押したままホイールを回すことによって、タブの切り替えが行われるようにしている。

HoldTabは現在のタブ以外のタブについて、読み込みを保留しておけるので、たくさんのブックマークを一気に開く場合に重宝する。ただ、リンクを新しいタブで開くだけでも保留になってしまうため、ふだんは無効にしている。

In My Pocketは、かつて存在していた公式拡張機能のように、Pocketに保存した記事をリスト表示し、保存済み記事のURLを開いたときはアイコンの色が変わって知らせてくれる。これらの機能もFirefox本体に備わっているべきだと思う。

Neat URLはWebページのURLにくっついているパラメータを自動的に除去する。設定画面で対象パラメータを指定できる点もポイントが高い。余計なものを取り払うことで、そのページがはてなブックマークに登録済みかどうかの判別もしやすくなる。

Open in Google Chrome BrowserとOpen in MS Edge™ Browserは、文字通り現在開いているURLを他のブラウザで開き直すものだが、利用の前にNode.js製のネイティブクライアントをインストールしておかないといけない。各OS用のものが用意されていて、Windows版だとバッチファイルがあるので、インストール・アンインストールは難しくない。が、外部のアプリケーションと連携する際にこうした手間がかかるのは、新形式の拡張機能のデメリットだ。

Selection Context Searchは選択した文字列を既定以外の検索エンジンで検索可能にする。ユーザー側で検索用のURLを指定せねばならず、コンテキストメニューに表示される項目を調整する手間もかなりかかるため、不満もあるのだが、既定のGoogle以外に「英辞郎」と「Wikipedia」と「Bugzilla@Mozilla」を検索に含めたいというマニアックな要求を満たす方法としては、今のところこれしかない。

Tab Saverは特定のウィンドウにおけるタブ列のURLを一括して保存するツールだ。タブ列には年月日と日時(分単位)によって構成された表題が自動的に付加される。OneTabをシンプルにした感じで、Webページのタイトルやセッション情報も保存されないし、1分あたり1つしかタブ列を保存できない欠点もあるものの、操作の手軽さが気に入っている。

Tampermonkeyはユーザースクリプトの管理と実行を担う。Greasemonkeyが新形式に移行する際にスクリプトの互換性を犠牲にしてしまったので、乗り換えた。といっても、組み込んでいるスクリプトはDirect GoogleとTwitter原寸びゅーくらいだが。

Translate Nowは指定した翻訳エンジンによって翻訳されたWebページを別タブで開く。ドイツ語で書かれたsoeren-hentzschel.atの記事をGoogle翻訳で英語に変換して読むのに使っているが、本当はChromeのように自動翻訳機能をFirefox本体に実装してほしい。

uAutoPagerizeは次のページを自動的に読み込んで、現在のページに継ぎ足してくれる。設定画面で実行しないページを指定することも可能だ。旧式拡張機能の時代には同種のものがいくつかあったと記憶しているが、新形式に対応したものは今のところこれだけではないか。

"URL をクリップボードにコピー"は、主にドキュメント自体のURLをHTML形式でクリップボードにコピーしたいときに使う。テキストをあらかじめ選択しておくと、リンクの内容に反映される点もよい。

"ZoomImage - 画像拡大"はページ内画像の拡大だけでなく縮小・回転もこなす。画像を浮かせる機能もある。ただ、筆者の環境ではGesturefyのホイールジェスチャーとキー設定が衝突してしまう。

"テキストリンク (Text Link)"は、リンクになっていないURLをダブルクリックすることで、そのURLが新しいタブに読み込まれるというもの。信頼と実績のPiroブランドである。

"はてなブックマーク"は、はてなブックマークの公式拡張機能であり、Chrome版を移植したため従来のものとは使い勝手が大幅に変わっている。タブを切り替えるとブックマークコメントの入力ウィンドウが閉じてしまう仕様だけは何とかならないものか。

お役御免となった拡張機能

前記の新環境となった結果、FireGesturesはGesturefyに、GreasemonkeyはTampermonkeyに、image-resizerは"ZoomImage - 画像拡大"に、Load Tabs Progressively FixedはHoldTabに、Make Linkは"URL をクリップボードにコピー"に、Open WithはOpen in Google Chrome BrowserとOpen in MS Edge™ Browserに、それぞれ置き換えられた。

また、長らく使用してきたSave Sessionについては、「以前のセッションを復元」の項目がFirefox Quantum以降メニューパネルの最上位の階層に配置されるようになったこともあり、Tab Saverに道を譲ってもらうことにした。

他方で、移行ができなかった拡張機能もある。Clear Fields(フィールドの消去)、Configuration Mania(本体設定のチューニング)、FEBE(拡張機能のバックアップ)、IME自動無効(アドレスバーのフォーカス時にIMEを無効化)、Menu Wizard(コンテキストメニュー等の項目の並べ替えや隠蔽)は、Firefox本体のUIや設定をいじらせないというMozillaの方針により、機能的に実現不可能となった。新形式への移行はもちろん、代替拡張機能も存在しない。

マルチプルタブハンドラ (Multiple Tab Handler)についても、ツリー型タブ (Tree Style Tab)との連携にフォーカスされて使い勝手が変わってしまったので、移行を見送った。Firefox Quantumだとタブの複製機能は本体に実装されているし、左側のタブをすべて閉じる機能はClose Tabs to the Leftで間に合っている。将来的にタブの複数選択機能もFirefoxの標準機能に加わる見込みなので、しばらくの辛抱だ。

(17/11/26追記)
本記事執筆後、Selection Context Searchの代わりにContext Search WebExtensionを導入した。検索サービスを提供するWebサイトの検索窓からブックマークの"Searches"フォルダに、キーワードを設定した項目を登録しておくと、文字列選択時のコンテキストメニューにそれらが出てくる。検索サービスの管理がしやすく、上記フォルダ内に区切り線を入れておくとそれも反映されるので便利だ。

このように、本文のリストはあくまで本記事執筆当時のものなので、より便利な拡張機能が出てくれば乗り換えるのは当然だ。そこで、最新版を"Must-have Extensions"で公開することにした。Mozilla Add-ons(AMO)のコレクションである。よければ参考にしてほしい。

ちなみに、筆者の環境のユーザースクリプトについてだが、Direct Googleには引退してもらい、Google: Bypass Result Page Redirectgoogle cache comebackを追加したので、本文からDirect Googleを削除した。なお、参考記事も1つ追加した。