この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2012年11月)

2012年11月24日

アドオンとは上手に付き合っていきましょう
初回投稿日時: 2012年11月24日18時53分22秒
最終更新日時: 2012年12月05日16時42分46秒
カテゴリ: Firefox Mozilla17
SNS: (list)

Firefox 17が先週リリースされましたが、タブ周りに深く食い込んだアドオンのいくつかの開発がこのリリースに残念ながら間に合わず、不便を感じている方も多々居らっしゃるようですね。今回、特に話題になっているのは、Tab Mix Plusと、Tab Utilitiesの二つです。この二つに共通する、二つの特徴があります。そして、この二つの特徴の組み合わせが技術的には割と最悪だったりします。

特徴1: 複数の機能を持ち、内部構造が複雑な「統合型」アドオン

一つ目の特徴は、どちらも多くの機能を持ち、サイズそのものが大きく、複雑な、「統合型」のアドオンだという点です。

このようなアドオンと逆の特徴を持った物は、「単機能型」と呼ばれる、シンプルでコンパクトなアドオンです。文字通り、ひとつ、もしくは2〜3個の似た機能の追加のみを行うアドオンです。

タブ関連の単機能型アドオンを、名前から推測して検索してみると、以下のようなものが見つかります。

実際に中身を確認した訳ではありませんが、実装している機能からすると、どのアドオンも内部はシンプルであることが想像できます。

このような、単機能型アドオンの場合、以下のようなメリットがあります。

バグが発生しにくい
アドオンそのものが単純になりますので、開発者からするとソースコード全体を簡単に見通せます。そのため、アドオンにバグが混入しにくくなります。不具合なく動作する、クラッシュの原因になりにくい、メモリリークが発生しにくい、アドオンが完成すると考えれば、これは実に良いことです。
互換性に問題がある機能のみが無効化される
たとえば、統合型アドオンが20個の機能を持っていたとします。すると、そのうちの一つでも、新しいFirefoxと互換性が無くなると、このアドオンは無効化され、20個の機能全てが利用不能になります。もし、その原因となった一つの機能があなたの利用している機能ではなかった場合、巻き込まれただけ、という話になってしまいます。もし、強引に互換性情報を無視して動かすと、タブが開かないといったようなバグが発生したりします。ですが、単機能型アドオンであれば、互換性に問題が出たものだけが無効化されます、互換性に問題が無いアドオンはそのまま継続して使うことができます
メンテナンスが容易なのでリリースに間に合う可能性が高い
アドオンの内部がシンプルということは、Firefox側の変更で互換性が無くなった場合にその原因をいち早く見つけることができます。それに加え、そのアドオンを修正しても、それが提供している少数の機能だけをテストすればリリースできますので、非常に迅速にリリースにこぎ着けることができるでしょう。
開発者がメンテナンスできなくなっても、他の人が作業を引き継ぎやすい
アドオン開発者の大半はアドオンの開発やメンテナンスが本業ではありません。このため、本業が忙しかったり、私生活の変化により、いつかはメンテナンスを続けることができなくなるでしょう。このような場合に統合型の複雑なアドオンのメンテナンスを引き継ぐには相当な覚悟と技術が必要になります。ですが、シンプルな単機能型であれば、それができる人の数が格段に増えます。つまり、メンテナンスが別の人へと引き継がれる確率が比較的高くなり、アドオンの寿命が長くなることが期待できます。

単機能型のアドオンの難点は、やはり、探すのが面倒ということに尽きるでしょう。しかし、今後もアップデートの際にアドオンが無効化され、多くの機能が一度に無効化されてしまって不便な体験をするぐらいでしたら、この機会にシンプルなアドオンを必要なもののみ、インストールする、スマートな形にしてみてはどうでしょうか?

上記のアドオンの名前を見て分かるように、単機能型アドオンは、その名前が、そのまま機能を言い表していることが多いので、意外と検索で見つけやすいことが多いです。

特徴2: 元々あるユーザインタフェースと密着している

もう一つの共通する特徴は、アドオンがFirefoxのユーザインターフェースと、かなり深い部分に密着・融合してユーザインターフェースの内部構造や、見た目を変えてしまっている点です。

どのようなアドオンであっても、Firefoxから情報を得る場合や、Firefoxの元々ある機能を呼び出す場合には、そのインターフェース(APIと呼ばれます)が変更された場合には互換性を失います。

ですが、ユーザインターフェースと密着しているようなアドオンの場合、Firefoxが機能追加やバグ修正等で、ユーザインターフェースの形や構造を少しでも変更した場合にも互換性が無くなってしまいます。例えば、タブの上にボタンや、進捗メーターを配置するアドオンを作った場合、Firefoxがバージョンアップ時に、このタブの内部構造を少しでも変更していると、アドオン側での修正が必要になってしまいます。

これとは対照的に、コンテキストメニューに項目を追加して、それを選択された場合にのみ動作するアドオンや、ツールバーにボタンを追加して、そのボタンをクリックされた場合にのみ動作するアドオンの様に、元々あるFirefoxのユーザインターフェースを変更せずに動作するアドオンというのは、内部APIの仕様変更以外では修正が必要になることはほとんどありませんので、修正が必要な回数がより少なくて済みます。

このようなことを踏まえて、アドバイスさせて頂くと、シンプルな単機能アドオンで、しかも、ユーザインターフェース自体を変更してしまわないものを必要な数だけ入れておくと、意外と1年以上、どのアドオンも問題が出ることなく動き続けたりします。

徹底的にその時点で理想的なブラウザをアドオンを大量に使って実現するのもひとつの手ですが、無理のない範囲で、そこそこ自分に適した環境を作り上げることができれば、トラブルの無い生活をおくれます。

その時点で実現できる自分にとっての理想的なブラウザを徹底的に求めるというのは、確かにFirefox最大の利点であり、これも楽しみの一つではあります。ですが、理想を追求した環境を維持するコストは実は非常に大きなものであるということも理解した上で、多少無理のあることをしているアドオンを採用するかどうするかを判断していただきたいと思います。

関連するかもしれないエントリ

関連するかもしれないエントリを発見できませんでしたが、無いとは限りません。