宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
「次のエントリで書く」なんて予告じみたことを書いてはみたものの、どうも話がまとまらない。もう、思ったことを箇条書きで書くだけにする。
現実的に言って、1つのアドオンであらゆる人のニーズを満たすことは不可能だと思うし、そういう方向での努力はしない方がいいとも思う。何でもかんでも……と際限なく詰め込んでいくと、どこかで破綻すると思う。機能の詰め込みは、ある時点までは効率がいいんだけど、ある時点を超えてしまうと、デメリットの方が大きくなってくる。「Piro拡張化」なんて言われるようになる。
作る側の心理として、どうして機能を増やしたくなるのか。他の人はどうか知らないけど、僕はこんな感じだった。
そんな感じの理由でどんどん機能を加えていく。ある時点までは、それでうまく回る。応援してくれる人とか感謝してくれる人とか、モチベーションを高めてくれる声も寄せられる。でも、なんかの閾値を超えたところで、あらゆる物事が下り坂に転じる。
そんなわけで、精神的な負荷と時間的なコストがどんどん大きくなっていって、タブブラウザ拡張は破綻した。Firefox 1.5のサポート完全終了と共に、過去の遺物となった。
そういうわけで、過去の自分の失敗を徹底的に反省して、ゼロからやり直すことにした。
eval()
による部分的な書き換えで対処する。こういう考えに基づいて作ったのが、マルチプルタブハンドラ、情報化タブ、ツリー型タブ、ソース表示タブという4つのアドオンだ。上に書いたことを完全に守れてるとは言えない部分もあるけど、昔に比べれば遙かにマシになってると思う。
作る側としても、使う側としても、僕は今の方がずっと楽だ。
「多機能に」「1つだけで様々なニーズに応えられるように」という方向に頑張ると、縛りがどんどんきつくなってくる。1つのアドオンだけでできることを増やしていこうとすると、妙な話だけど、他のアドオンに頼れなくなっていく。作り込むほどに、そのアドオンを入れた結果が素のFirefoxとかけ離れてしまうから、他のアドオンとの互換性がどんどん失われていく。だから、1つのアドオンだけでしなきゃいけない事がイモヅル式にどんどん増えてくる。
ユーザの視点から見ると、「多機能なアドオン1つだけの世界で完結した使い勝手を享受する」か、「いろんなアドオンを組み合わせて使う」かの、どっちかを選ばないといけないということでもある。両立はできない。
ここで改めて念を押すけれども、僕は、Tab Mix Plusと上記のタブ系アドオンの組み合わせは推奨していない。一応TMPで動くようにはした、けれども、継続的に追っかけ続けるモチベーションが無い。何故なら、僕はTMPユーザではなく、TMPと組み合わせて壊れるようであっても僕自身は全く困らないから。TMPユーザでない他のアドオンの作者の中には、同じように感じてる人もいるんじゃないかと思う。自分が使ってもいないのに対応を迫られるなんて、厄介な奴だ、目障りな奴だ、みたいな。閑話休題。
「多機能なアドオンで、部分的には、痒い所に手が届くような感覚がある。でも、足りない部分もある。それを補うための他のアドオンと組み合わせて使うことは、残念ながらできない。」「単機能のアドオンをたくさん入れていて、それぞれはそれなりに便利。でも、いまいち連携が取れてなくて、痒い所に手が届かない。」そのどっちかを選ばないといけない。
一人あるいは少数の作者の頑張りだけに期待しなきゃいけない、期待して待ってなきゃいけない。多機能長大路線を歩むという事は、ユーザにそれを強いるという事だと思う。僕はそれが嫌になった。
多分、多機能な物を「作る」だけなら、誰にでもできるんだと思う。時間さえかければ。当時の僕にもうなる程の時間があった(大学生で、レベルもそんなに高くなかったから楽に単位を取れて、その分自由に時間を使えた)から、できてたんだと思う。でも、より大きな問題は「作った」の後にあると思う。メンテナンスし続けられるのか? 他のアドオンと協調させられるのか? 多機能長大路線ではそれは難しいと、僕は思った。
TMPは使ったことが無いので機能的にいかに便利なものかどうかは知りませんが、ソースコードを見る限りはとんでもなく行儀の悪いタイプなのでは、と思います。
browser.xulへオーバーレイしているtabmix.xulだけでも突っ込みどころ満載でした。
>
> var version = typeof(PlacesController) == "function" ? "firefox3" : "firefox2";
> document.getElementById("main-window").setAttribute(version, true);
> ]]>
>
そのversionってグローバル変数、本当に必要なのか?
>
BrowserStartup()どこいった?
> XXX I don't know if we need this ??? !!!
> -->
>
>
>
ビデバー(笑)
すみません、タグが消えちゃいましたね。
TMPは使ったことが無いので機能的にいかに便利なものかどうかは知りませんが、ソースコードを見る限りはとんでもなく行儀の悪いタイプなのでは、と思います。
browser.xulへオーバーレイしているtabmix.xulだけでも突っ込みどころ満載でした。
> <script type="application/x-javascript">
> <![CDATA[
> var version = typeof(PlacesController) == "function" ? "firefox3" : "firefox2";
> document.getElementById("main-window").setAttribute(version, true);
> ]]>
> </script>
そのversionってグローバル変数、本当に必要なのか?
> <window id="main-window" ... onload="TMP_TBP_Startup();" />
BrowserStartup()どこいった?
> <!-- vide-bar is for push the bottom tabbar up to right position when using multibar
> XXX I don't know if we need this ??? !!!
> -->
> <vbox id="appcontent">
> <hbox id="vide-bar" insertbefore="content" />
> </vbox>
ビデバー(笑)
あんまり自分も偉そうなこと言えないはずなんだけど……なんというか……(´Д`;)
ほんとにゼロから作りなおした方がええんでないか……?
そのversionってグローバル変数、本当に必要なのか? Latest topics > 他のアドオンと衝突しないように心がけたいし、心がけて欲しい - outsider reflex こんなコメントを見たので、ふと調べてみた。 使ったのは、garbage_finder.js というスクリプトで、前回起動時との
の末尾に2020年11月30日時点の日本の首相のファミリーネーム(ローマ字で回答)を繋げて下さい。例えば「noda」なら、「2009-04-17_compatibility.trackbacknoda」です。これは機械的なトラックバックスパムを防止するための措置です。
writeback message: Ready to post a comment.