20
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

自作FirefoxアドオンをWebExtensionsに書き直したのでポエム書く

Last updated at Posted at 2017-11-17

#Firefox Quantum
Firefoxは量子的な跳躍によって、古典的なアドオンが使えなくなりました。

#自作Firefoxアドオン
タブのウィンドウ間の移動や切り替えを楽にしよう、というコンセプトのアドオンを作っています。
https://addons.mozilla.org/ja/firefox/addon/move-to-window/

欲しかったけど、なかったので。大した機能じゃないので作っちゃえってことで、以前に作りました。
なんと28ユーザもの方に使っていただいています(しかも、そのうち恐らく2人くらいは私)。

#移行作業
大した規模じゃない割には、なんだかんだで時間かかりました。

##自動的に移行できないか? APIの対応表ないか?
探した限り、楽な方法は見つかりませんでした。
APIも結構変わっていて、探し直しに近い状態です。

##初めてから始める
諦めて、これ読みました。

初めての WebExtension
https://developer.mozilla.org/ja/Add-ons/WebExtensions/Your_first_WebExtension
2 つめの WebExtension
https://developer.mozilla.org/ja/Add-ons/WebExtensions/Walkthrough

空っぽのディレクトリを作って、ここに書いてあるのをやりつつ、アイコンとか流用できそうなものは流用して、スクリプトやら何やらは、とりあえずコピペしながら手直しして、でやりました。
それができる規模の小さいアドオンだったのが幸いです。

私が作っていたのは、ボタンを押したらポップアップが出てくる(High Level APIのPanelと呼ばれていたもの)だったので、「初めての」は軽く流して「2つめの」を参考にしました。

一時的なインストールや、デバッグは、アドレスバーに about:debugging と打ち込んだら、それっぽいものが出てきます。以前より簡単ですね。

使いたいAPIは
https://developer.mozilla.org/ja/Add-ons/WebExtensions
を見ながら、泣きながら探しましょう。ないかもしれませんが、あると信じて探しましょう。
APIによっては、manifest.jsonの中にpermissionsの項目を追加しないとうまく動かないものもあります。

多くのAPIが、Promiseを返します。非同期処理とかいうやつです。
「javascript promise」でぐぐると、素晴らしい記事からポエムまで、多種多様な資料が出てきますが、とても雑に説明します。

something がPromiseだとします。
something は、もしかしたら、まだ処理中かもしれませんが、次の処理を書けます。
(既に処理が終わっているかもしれませんし、まだで、そのうち処理されるかもしれません)
慣れてないと気持ち悪いですが、気にせずに進めて大丈夫です。

とはいえ、 something が終わってからじゃないとできない処理や、 something の結果を使って行う処理だってあると思います。
そういうときは something.then(f) のように書きます。
something が無事終わったら、その結果が f(somethingの結果) のように呼び出されます。

f の部分は、ラムダ式でもいいです。

something.then((result) => {
  anything(result);
});

##あとはがんばるだけですね。
最後にパッケージ化するプロセスが、zipに詰め込むだけ、という。
xpiだって所詮zipだったけど。もっとあからさまにzipになった。

#感想
移植するのは大変ですね。

ていうか、Firefoxって、Chromeにシェア奪われながらも、古いアドオンで持ちこたえていた部分が大いにあると思うので、今回のやつで民族大移動が起こらないか心配ではあります。
いいのか悪いのかは難しいですが、数年前から放ったらかしのアドオンも多いのも事実で、それらの利用者もそこそこ多いのも確かです。
それらを切り捨ててええんかいな。

あと、移行期間!開発版とかベータ版じゃない正式版でWebExtensionが動くようになってから、どれくらい期間あった?
(作業にそんなにかかるわけじゃあるまいし、締切が3日だろうと1年だろうと、始めるのは2日前、みたいな感じなのかもしれないけどね!)

一応、API自体は使いやすくはなっていると思います。
また、作り始めるのも簡単になっていると思います。
要するに、作るための敷居は下がってます。

作りたいものができたら、もう一個くらい、何か作ってもいいかな、とか思いました。

今後どうなるかは分からないですが、Firefox界隈が盛り上がってくれたらうれしいな。

20
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?