さらばOperaよろしくFirefox

今回は本気だ。さよならOpera、こんにちはFirefox。もう僕はOperaのこんなところに耐えられなくなった。

更に、追い打ち。

ウェイトの大きい部分に結構な問題があって実はタイムロスが馬鹿にならない……というわけで、Firefoxへの乗り換えの過程をメモしておく。よりベターな方法がある場合教えて頂けると幸いです。

本当はキャッシュ読み込みが早いGran Paradisoを入れるつもりだったのだけれど、takenさんが後2週間位で凍結だと教えてくれたのでα3まで待つことにする。結構ズレるものらしいけど、気にしない。とりあえずFirefoxの流儀に慣れてみることが重要。

ちなみに入っているのは綾川版Firefox。のりさんに教えてもらってから公式ビルドは暫く入れてない。Gran Paradisoへ移行する時きっと綾川版のカスタマイズ部分に悩まされることになるのだろうけれど、それはそのとき考える。

カスタマイズ履歴

Gran Paradisoα3へ乗り換えるときのためにメモる。なお、このエントリーは数日間更新が続く可能性があります。

about:configいじり

上からざっくり眺めて変えた方が良さ気なところはがんがん変える。ちなみにGUIで設定できる部分は適当に変え終わってる。

書留終えた後でprefs.jsとやらに変更された情報が全てそのまま残るという事実を知った。なんて無意味なことに労力を費やしたんだ。

/などを押した直後にだけ検索が反応するようにaccessibility.typeaheadfindをtrueに変更。

インターネット・キーワード

Firefoxにはインターネット・キーワードという機能が搭載されており、アドレスバーに適当な語を入力するとそれっぽいページに転送してくれる。誤植などを上手い具合に吸収してくれる良い機能なのだが、Wikipediaに飛ばされたりGoogle検索結果に飛ばされたり時にはFeeling Luckyが実行されたりと落ち着かない。

とりあえずYahoo!検索に飛んでくれるように、keyword.URLの値をhttp://search.yahoo.co.jp/search?ei=UTF-8&n=20&va=に書き換えた。

tabキーの挙動をOperaにあわせる

このご時世にソース記述順にリンクをフォーカスされても不便この上ないのでtabキーの挙動はOperaにあわせてフォーム要素のみとする。

accessibility.tabfocusの値を3にすれば良いようだ。

Bloglinesなんて使わないのでLDRへ変更

あまり何が起こるのか把握してない。

フィードを開いたページにあるリンクとしてこれが使われることに気づき、そしてうまく動いていないことが発覚した。適当に検索したらmalaさんが解説してたのでその値をそのまま使うことにした。追加ではなく置換させたいので直接about:configを書き換え。今はこんな感じ。My Yahooも要らんのでvalidatorに変えた。

セッション管理の制限緩和

browser.sessionstore.max_tabs_undoの値が10とある。最初セッション保存時に使われると勘違いして50へ変更したのだけれど、閉じたタブくらいでしか使わないらしいので3にしてみた。メモリの節約重要。

ロケールの変更

コンテンツネゴシエーションで痛い目に遭うのでgeneral.useragent.localeintl.accept_languagesjaに変更。これはGUIでも設定できたらしい。見逃してたか。

ちなみにUIの表記を決定する際に利用される値がgeneral.useragent.localeらしい。英語で統一したいのでこちらは標準状態であるen-USのままにしておく。

フレーム周りの使い勝手改善

layout.frames.force_resizabilityとかいう素敵項目があったので迷わずtrueに変更。

スペルチェックを無効に

スペルチェックしたくなるような単語はATOKのカタカナ語英語辞書を利用してしまう人間なのでスペルチェックは無効で良い。layout.spellcheckDefaultを0にした。

しかし、こんなことやってるから英単語のスペルにいつまで経っても自信が持てないんだろうな。悪循環。……しかし断ち切らない。

ダブルクリック時の挙動

layout.word_select.eat_space_to_next_wordとかってな設定値でテキスト上でダブルクリックした際に後ろの空白文字を含めるか否か設定できるらしい。空白なんていらんからfalseに変更。

コネクションの制限数

とりあえず手元のOperaにあわせてnetwork.http.max-connectionsを32に、network.http.max-connections-per-serverを16に増やした。

network.http.pipeliningはtrueに変更。network.http.pipelining.maxrequestsは初期値4のままにしておく。

リファラの送信

同一ドメイン下のみ送信とか欲しいけど、無いみたいだから気にせずそのまま送信することにした。

network.http.sendRefererHeaderを1にするとSend only on clicked links、すなわちリンクを踏んだときにだけリファラが送られるようになるらしい。初期値の2だと画像読み込み時にも送信される。むしろ必要になる機会が多いのは画像だから1の必要性はあまりないような。

もりやまさんからRefControlを導入することで実現できる旨を教えていただきました。ありがとうございます。

URLをUTF-8でエンコード

network.standard-url.encode-utf8とかってな項目があったのでとりあえずtrueにしてみた。

スパム判定するタブの数

同じページから一定数以上のタブを開けない、という仕組みがFirefoxには用意されているようだ。が、閾値が小さすぎる。browser.tabs.maxOpenBeforeWarnで設定できるようなので、100に変更した。

ホイールの感度

のりさんにmousewheel.withnokey.numlinesの存在を聞いたのでとりあえず3にしてみた。mousewheel.withnokey.sysnumlines を false にしないと効かないので注意が必要だそうだ。

userChrome.js

今話題のなんでもJavaScriptでいじる系拡張userChrome.jsをのりさんの使い方を丸パクりしつつ導入。それに従ってSub-Script/XUL Loaderを入れ、以下のJavaScriptを突っ込んでみた。

新しいタブを現在のタブの右隣に開く userChrome.js
コレを探している自分を見て、もしかして見ているタブより右側のタブを閉じたいという欲求が沸かないのはこの設定があるからなのでは無かろうか、と思った。
よくよく考えてみればタブバー消すんだから要らんな、これ。
と思っていたが、バックグラウンドでタブを開いたとき隣に居ないと困るので復活。
軽量マウスジェスチャ(改良バージョン)
ほとんどマウスを使わないのだけれど、非常用に入れておく。慣れしたしんだOpera風のキーバインドになるよう若干設定を変更。
viewSelectionSourceInTab.uc.js
選択箇所のソースを見るためのスクリプト。
Status bar in menubar
ステータスバーをタイトルバーに表示させるスクリプト。縦幅が小さいミニノートユーザにとってステータスバーを投げ込むのは必須。
必須……なのだが、Firefoxの場合諸々の拡張関連のボタンがステータスバー領域の右側に集められたりする関係で迂闊に消せないような気がして、無効化した。
メニューバーを消し去ることができたので晴れてこの拡張を有効化させた。
undecorateMenuBar.uc.jsに組み込んだので消した。
Copy Title + URL
タブに表示されているタイトルとURLをクリップボードにコピーする
Paste and Go
貼り付けて移動機能。後でCtrl+Bどうにかする為にキープ。
go30
最近開いたページの履歴を30件表示するようにするスクリプト。
trunkじゃないFxでgo30したいとのりさんに泣きついたらbrowser.jsを書き換えればよいと教えてくれた。browser.jsはFxをインストールしたディレクトリの下にあるchrome/browser.jar(zip圧縮ファイル)に納められており、browser.js の 1461行めらへんの 10 を好きな数字にすれば良いそうだ。
ちなみに僕の環境では縦幅の関係でgo20が適量だった。go30にはパワー不足。
Copy URL Lite
コンテキストメニューに「タイトルと URL をコピー」「タイトルと選択した部分と URL をコピー」メニューを追加する。
Live HTTP headers Menu Fix
「ツール」メニュー中の「Live HTTP headers」メニューにアクセスキーを追加し、メニューの位置を「エラーコンソール」メニューの上部へ移動。
Open URL with
コンテキストメニューに現在のページを IE 、Opera で開くためのメニューを追加する。
Youtube FLV ダウンロード for userChrome.js
タイトルのまま。どんな感じに動くのか試しに入れてみたのだけれど、結構良い感じだった。
2chリダイレクト外し,テキストのリンク化, および半角文字列の折り返し
タイトルのまま。リダイレクト鬱陶しいし。
throbberMainMenu.uc.js
メニューをひとまとめにして更新中を示すアイコン(throbberというらしい)から開けるようにする。
メニューバーにアドレスバーを入れたりしながらしのいでいたけれどこれでようやく目障りなメニューバーを消し去ることができた。
undecorateMenuBar.uc.jsに組み込んだので消した。

BlankLast

タブバーを消していると最後のタブなんて概念は無くなる。従ってCtrl+Wを連打してFxが終了してしまうなんてのは困りもの。userChrome.jsでできそうな気がするのだけれど、今のところ先人は居ない模様。仕方ないのでBlankLastをinstall.rdfをごにょって導入。

いつの日かuserChrome.js書くぞ!と思い立つ日が来るのなら多分移植すると思う。……というか、実は簡単なんじゃないのかと思い上がって5分くらいソース見てたのだけれど、どこから手を付けて良いのか分からなくて諦めた。

keyconfigが入っていればそういう動作にならないはず、とのりさんに教わったのですっぱりこの拡張は削除した。ちなみにkeyconfigのC-wは最後のタブを閉じるとblankタブ開くみたいとのこと。素晴らしい。

Split Browser

なんだかんだ言ってOperaのMDIを満喫していたようで、ウィンドウをきれいに並べられないと案外不便。正直縦2分割さえあれば満足なのだけれど、ないのは寂しいのでSplit Browserを導入。

よくよく読むとSplit Pannelってなシンプルな拡張も紹介されていた。自分の欲求はこれで十分満たせそうなのでこちらに入れ替え。

Stylish

数少ない名前を覚えている拡張、Stylishを導入。ユーザスタイルシートの追加はuserstyles.orgでも使って、あとでやる。

タブバーさよなら

Ctrl+数字での表示位置を元にしたタブ選択機能があるからタブバーを残すのもアリかなぁと思ったのだけれど、やはり一度慣れると表示履歴を元にタブの切り替えを行えた方が楽。

Stack Style Tabsてのがあるよとpiroさんが教えてくれたのでinstall.rdfをごにょってインストールした。今のところ問題なく動いている。

タブレット利用時に破綻するという問題があるにはあるが、まぁ拡張を無効にすればよいだけだし、気にするほどの問題ではあるまい。

キーボードショートカット周り

keyconfigを入れてみたけれど、やはり1キーショートカットの利便性には遠く及ばない。キーショートカット周りはこの拡張とそれをベースにしたものしか見あたらないので対策が必要かもしれない。

直近の課題はSpaceだけで検索結果をがしがし読み進められるようにすることだろうか。と書いていたらRewind/Fastforward Buttonsでパクってますのでお試しあれとPiroさん。この拡張はSpaceも食べてくれるらしい。これが無いと結構辛い。zxもきついけど、これに関してはとりあえずマウスジェスチャで凌いでる。

コンテキストメニュー拡張でワンキーショートカットが定義されているのを見て、思わず入れてしまった。あとで中身を見てみよう。

高山さんがw3m ユーザに送る Firefox のススメ (Firefox 1.5 版)とともにfunctions for keyconfigを教えてくださいました。この拡張自体は見つけていたのですが、初期設定の一覧を見て1キーショートカットは設定できないものと早とちりしておりました。情報ありがとうございます。

というわけで早速keyconfigfunctions for keyconfigでがりがりキーボードショートカットを定義しはじめたのだけれど、Ctrl+2でブックマークパネルを開くように設定しようとしたら標準設定を上書きできない。助け船を求めたところそこはjsでハードコーディングされている部分だからkeyconfigでは上書きされないのではないか、とpiroさんが教えてくれました。

で、どうせなら一つにまとめた方が美しいと云うことで今ちまちまとuserChrome.jsを書いてます。暫くかかりそうです。

挫折。結局最低限必要な箇所をkeyconfigやらfunctions for keyconfigで定義した。あるものは使わないと損だ。

Shift+ZShift+XはPiroさんに教えてもらいつつRewind/Fastforward Buttonsの関数を呼び込むように設定し、進むと戻るはそれぞれXZを使えるようにした。

コンテンツにフォーカス戻せないからワンキーショートカットが使えなくなる!と泣きついたところPiro先生がこんなショートカットを教えてくれた。

とのことなので暫定的にCtrl+Shift+W_content.focus()を割り振ってみた。f4kc_FocusNextFrameでも行けると高山さんが教えてくださったのでこちらに置き換えた。とりあえずロケーションバーにフォーカスしているときコンテンツへフォーカスを移すことはできるようになったので、どんなときでもCtrl+L, Ctrl+Shift+Wでワンキーショートカットが使える状態になることは確認できた。(僕はブラウザを終了させない人なのでCtrl+Shift+Wのショートカットなど、むしろ殺してしまった方が都合がよいのだ。)今のところOperaのF9と同等のアクションにはなっていないけれど、何とかキーボードで操作できるようになった。

あとはフォームがフォーカスされていて文字入力の待機状態にあるときからの脱出方法を確立できれば良さ気。

HaH を導入していて hahExitKey を Esc にアサインしている状態だとEscでフォーカスキャンセル出来るとのこと。ある程度速いマシンで使うと非常に快適とのことなのでメモリ不足著しい私の環境では少々アレなのですが、快適そうです。

乗り換えて良かったこと

さいごに

いろいろ教えてくれたFirefoxプロフェッショナルな方々に感謝!

パースエラーはバグです

「自分のサイトを見る度にパースエラーを返す」JavaScriptが原因の気がするとの反応が気になったので補足します。

これはOpera9系レンダリングエンジンが当初からもつXMLパーサのバグです。不特定多数のウェブサイトで確認されるもので、JavaScriptに起因するものではありません。実際に遭遇するとなるほどなと思えるのですが、毎回違うエラー箇所を提示し、しばしばメッセージも異なります。一度読み込みに成功するとその後は調子が良くなったりと、中々謎の多いバグなのですが、一般的には既知のバグとされているものですのでそこは一つ納得して頂ければと思います。ちなみにここだけで発生するわけでも無いんですよ、これが。もちろんJavaScriptやらなにやら全て切っても再現します。パーサを無効にしない限り。

ところでこのバグ、Opera9.0系から9.1系になり発生頻度が飛躍的に上がったような気がするのですが、それは私の勘違いなのでしょうか。それこそFxへの乗り換えを決心させた最大の理由なのですが。

このバグについて勘違いしつつ悩んだ履歴はあまりに長い行があると?に残されていますので興味のある方はどうぞ。国内では私以外にusopionさんなどが同じ問題に悩まれています。幾つか国外でも悩んでいる例を見つけたのですが、そのリソースがどこにあるのかはとうの昔に忘れてしまいました。

この文書の諸情報

この文書の永続的URI
http://kuruman.org/diary/2007/03/07/hello-firefox
公開日時
2007年3月7日 午後11時57分51秒
最終更新日時
2007年4月17日 午前10時09分27秒
ヘルプ
フィードバックについて
RSS Feedによる更新情報
http://kuruman.org/note/index.xml
This document is licensed under a CC : by-nc. 2007, Kuruma; FOAF description.