2008年02月23日

【Firefoxアドオン】GMarks + gBrainのコラボが本当に「最凶」だった件

先日にエントリ「ブックマークと履歴をオンライン化 - GMarks & gBrain」にてGMarksとeBrainを組み合わせるとスゲーぜ?ってな論調で、ご丁寧にも改造版eBrainまで公開してしまいましたが、この組み合わせ、危険です。 
具体的に何が起こるかというと、GMarksで登録したブックマークを再訪すると、eBrainがタグを上書きしてしまいGMarksのフォルダから当該ページが消えてしまうという・・・ああ、本当にごめんなさい。
同じGoogleブックマークを、コンセプトも作者も違う2つのアドオンが仲良く共有するわけないのは、ちょっと考えれば分かることでしたね。 もう何って言うか、己の軽率さに辟易してるわけです。

あのエントリを読んでそのまま適用しちゃった方がいましたら、もう一度謝罪します。 申し訳ありませんでした。



で、懲りずにgBrainを更に改造してやろうなんて考えが沸々としているわけですが、方針としては、gBrainによる登録の際にはタグの上書きではなく追加という仕様にすれば問題は解決できると思います。 もしくはGoogleブックマークに既存のエントリは登録しないと割り切ってしまうのも手かなと。 いずれにしろGMarksが既存タグを取得しているわけですから、可能なはずです。
まあ、現在の俺にはJavaScriptコードを読み解くスキルがないので無理ですけどね。 出来たとしても今回の失敗もありますんで公開はしません。

最後の最後にもう一度、適用しちゃった方、本当にごめんなさい。

 
posted by Huwy at 03:56 | Comment(0) | TrackBack(0) | Firefoxアドオン | このブログの読者になる | 更新情報をチェックする

2008年02月22日

【Firefoxアドオン】Dog Ears改造日誌その2

3一筋の光明

さて前回、gBrowser.addProgressListener関数で躓いてしまいましたが、ネットを丹念に調べて解説してくれてるページを見つけました。

拡張機能の例: ページが切り替わったタイミングを知る(せりか式)


いや〜、もう俺のやりたいことそのまんまじゃないっすか。 有難いねえ。 で、ド素人の俺でもこのページで仕組みが分かったんで詳細は割愛w この後Dog Earsのスクリプトに何をすればいいかって言うと、
  1. "onLocationChange"関数の実装として、アイコンを切り替える関数を呼び出す。
  2. "onLocationChange"関数を含むリスナー関数群のリスト変数を定義する。
  3. Load関数内で、addProgressListener"関数を使ってリスナー関数リストを登録する。
  4. 同じくUnload関数内で、"removeProgressListener"関数を使ってリスナー関数リストを削除する。
うむ、見通しが立ってきたー。


4とりあえずどんなもんかね

細かい部分はさておき、この仕組みがちゃんと組み込めるかテスト。 Dog EarsでもTabooと同じく、アイコンに対するパラメータを真偽値で指定することで切り替えを実現しているので、"onLocationChange"関数に問答無用でアイコンが「マークありまへん」になるように書いてみました。 テスト用のFirefoxプロファイルを作りインストール。 タブを2つ開きそれぞれ別のページを読み込んでおきます。 タブAのページにマークを追加し、ツールバーアイコンを「マークありまっせ」の状態にセット。 そしてタブBに切り替え・・・・いやっほう!見事「マークありまへん」アイコンに変わった!!

るんるん気分で眠れるように、今日はここまでにしおこっと。

この様子をFlashで公開しようと思い、改造前後でキャプチャしてみて思わぬ発見。 使ってるキャプチャソフトは取り込んだものを1コマずつ確認・編集できるのですが、改造前のある1コマ、ちょうどタブを切り替えてもツールバーアイコンが変わらないよ〜っていう見せ場で、一瞬だけアイコンが変化していました。 この直前のエントリがそのFlashです。 シークバーを使ってうまくストップできれば、ご覧になれると思います。
え〜〜〜!前提総崩れ。 タブを切り替える=Location変化のイベントはハンドリングしてないと思ってたのに、しっかりやってるってことですよね。 う〜ん・・・またコードを良く見直さなくちゃ。 でも、やっぱ今日はここまでw

posted by Huwy at 20:44 | Comment(0) | TrackBack(0) | Firefoxアドオン | このブログの読者になる | 更新情報をチェックする

【Firefoxアドオン】Dog Ears改造日誌その1

本ブログで幾度か挙げているDog Ears。 すごくお気に入りなんだけど、いくつか不満点があります。
情報収集・整理ツールあれこれ (1)」に追記もしましたが、流動的なWEBページでは使えません。 まあこれはどうしようもないことであって、Dog Earsの仕様が云々という話ではないんで、もう気にしません。 Dog Earsは、過去にマークしたページを開いたとき、ツールバーのアイコンを切り替えて教えてくれます。 ところが、これはそのページを読み込んだ時に限定されちゃってるようです。 
例えばタブA・タブBがあって両者ともDog Earsでマークしていないページを開いてるとします。 タブAにマークしたページを読み込むと、上述のとおりアイコンが変化します。 その後カレントタブをタブBに変えてもアイコンは変化せず、マークを付けていないはずのページで「Dog Earsのマークありまっせ」の状態になってしまいます。 逆も同じで、マークを付けたはずのページで「マークありまへん」の状態になってしまいます。
リロードすれば正しい状態になるのですが、お気に入りのアドオンとはいえDog Earsのためだけにリロードするなんてバカバカしいですよね。 なのでちゃんと変化するように改造してみることにしました。

前置きが長くなりましたが、もうちょっと続きますw
ご大層にもこんなタイトルで記事を書いているわけですが、俺、JavaScriptまったく知りません。 コードはなんとな〜く読めるのですが、うまく改造できるかどうかの見通しもまったく立ってません。 最終的には「俺には無理でした。 海見てくる・・・」ってことになるかもしれませんが、まあお付き合いください。


1どっから手をつけるべきかな?

まず改造の方針を決めるところから始めました。 これも本ブログで取り上げたアドオンですが、Tabooにもツールバーアイコンがあります。 ブックマークしたページを記憶している点はDog Earsと同じで、読み込んだページが既に登録済みだとアイコンが変化します。 この時上述のようにタブの切り替えを行うと、それに応じてアイコンもちゃんと切り替わってくれます。 さあ、そうなればTabooのこのロジックをDog Earsに応用すればいいだけじゃん。 やっほい、案外簡単かもぉ♪


2スタートダッシュで大転倒

さてではTabooのJavaScriptコードの中で、上述の制御を行っている箇所を特定しましょう。 熟練の方々にはきっとファイル名だけで分かったんでしょうけど、なにせ右も左も分からないド素人なのでアイコン画像のファイル名をコード内で探しました。 ところがヒットするのはCSSファイル、つまり「見た目の体裁」を定義するファイルだけです。 え〜〜・・・いきなり躓いちゃったよ・・・。 しかし良く見ると、なにやらパラメータの有無で、切り替え前後のアイコンを変えてることが分かります。 どうやら制御部であるJavaScriptではこのパラメータの値だけを決定し、あとはCSSに任せているようです。  予想は見事的中、パラメータ名で検索すると"updateButton"というその名もズバリな関数を見つけることができました。
さて、ボタンを更新するこの関数ですが当然のことながらTabooにユニークな内容です。 他のアドオンに応用するには、細かい制御ではなくもっと抽象的な制御部分を知らなければなりません。 そこで"updateButton"関数を呼び出している箇所を探してみました。 次に見つけたのが、"onLocationChange"関数です。 これも名前がズバリですね。 前置詞onが付いているのでますますイベントハンドラ臭いです。 ここでLocation、つまりはカレントタブのURLが変化したことをハンドリングするのは間違いありません。 分からないながらに読んでみると、Tabooではこの関数の実装として、直前のURLと現在のURLを比較し、相違があれば"updateButton"関数を呼び出してアイコン変化の要否を判断させ、その後現在のURLを直前のURLとして保持し直す、ということをしています。 なあるほど。
次にさらに上位部分を探してみます。 "onLocationChange"関数はどうやら関数リストの一部として変数に格納されています。 そしてその変数の使用箇所は・・・gBrowser.addProgressListener?? はて、ファイル内にはその関数の定義がありません。 ってことは組み込みの関数なんだろうとネット検索してみましたが、英語力の無さがここで障害になりました。 ・・・う〜ん、分からん。 

分からなすぎて若干飽きてきたので、今日はここまでです。 少〜しずつ勉強しよっと。

posted by Huwy at 02:31 | Comment(0) | TrackBack(0) | Firefoxアドオン | このブログの読者になる | 更新情報をチェックする

2008年02月18日

【Firefoxアドオン】ブックマークと履歴をオンライン化 - GMarks & gBrain

このエントリで紹介しているGMarks+gBrainの併用で重大な問題が発生することがわかりました。 gBrainは履歴をGoogleブックマークに登録する際、同一ページが既存である場合に、「既存のラベルを削除してから年月日のタグを付ける」というとんでもないことをしているらしいです。 つまり、gBrain以外のラベルはゆくゆくはすべて消されることに・・・。 自慢げに両アドオンのコラボを紹介してしまいましたが、申し訳ありませんでした。 



前回、ひとまず納得できる形でGoogleリーダーの利用方法が固まりました。 今回はブックマークと履歴もシームレスにオンライン化するアドオンを紹介します。 

1GMarks

GoogleブックマークをFirefoxのサイドバーに読み込むアドオンです。
Firefox起動時にGoogleアカウントに自動ログインし、さらにGoogleブックマークの最新状態をロードするので、オンラインであることを意識することはほとんどなく、ローカル感覚でサクサク使えます。 またブックマークの管理もローカルから行え、おそらくGoogleブックマークのページに1度も訪れることなく使用できてしまうはずです。

GMarksを使用するうえで注意しなければいけないのが、GMarksとGoogleブックマークの分類方法の違いです。 Googleブックマークはタギングによってエントリを分類しますが、GMarksのインターフェイスはフォルダ管理(階層化)を採用しています。 最初はこの違いに慣れず、戸惑うことも多いかと思います。 FirefoxのブックマークをGoogleブックマークに移行する際には、Firefoxのブックマークをもう一度しっかり整理してから行うと、戸惑いも軽減されるはずですので強くお薦めします。 なお、現在のFirefoxブックマークをGoogleブックマークにエキスポートするには、Googleツールバーを使うと簡単です。
さて、実はタグしか持っていないエントリをGMarksはどのように階層化するかという話をしておきます。 GMarksはタグの文字列を解析して、セパレータごとに子フォルダと解釈します。 つまり、タグとして
"Tech>SQL Server"
という文字列を指定しておくと、GMarksは">"をセパレータとして解釈し
 Tech
  └ SQL Server
という階層構造でサイドバーに表現します(セパレータ文字は変更できます)。
GMarksで新規にブックマークを登録するとき、既存の階層に登録する場合には、エントリダイアログでその候補が表示されるので楽ですが、まったく新しい階層を作りたい時には注意が必要です。
またタギングの利点は一つのエントリを複数のカテゴリに登録でき、どちらをキーにしても検索できる点です。 階層管理に置き換えると同じブックマークが別々のフォルダにそれぞれ登録されている状態です。 これを「検索キーが複数持ててよい」とするか「多重管理はNG」と取るかは皆さん各自のご判断になります。 (タグを階層構造で表現しているので、あくまで実体は1つだけということに注意してください。)

同一ページの重複登録はブックマーク管理に付き物の問題ですが(Firefoxブックマークには同一エントリを解消してくれるアドオンがあります)、GMarksはフィルタ機能を持ちいることでこの問題を解消することが出来ます。

タグ、タイトル、URL、メモを含む全文検索もできるので、もはやフォルダツリーを展開することすらなくなるかも。 この検索も検索クエリをGoogleブックマークに投げて結果を取得する仕様(らしい)ので、ローカルマシンに負担をかけることなく強力な検索が可能です。

20080218-024409-2.jpg


2gBrain

Firefoxの表示履歴をブックマークとしてGoogleブックマークに登録するアドオンです。履歴更新の度にGoogleブックマークへ随時登録してくれているようです。
gBrainは登録する際に、各エントリに年、月、日の3つのタグを付けます。 これにより時系列での履歴管理がオンラインで可能になります。
表示履歴を片っ端から登録しますので、エントリはどんどん増え続けます。 ワンクリックで機能を起動/停止させることができたり、指定サイトをフィルタリングして登録しないようにする機能もあるので、上手にコントロールすると良いでしょう。
(※思ったんだけど、特にコアなネットサーファーの履歴を全部登録していたら、ものすごいエントリ数になるのは想像に難くありません。 GDriveみたいにそのうち規制かかっちゃうかも・・・。)

サーチ(調べる)
案の定、作者さんにGoogleからクレームがきたそうです。
現在、gbrainの公開は中止されています。


3GMarksとgBrainの最凶コラボ

さて、gBrainは履歴をブックマークとしてGoogleに預けるものです。 GoogleブックマークはGMarksで管理することにしたので、gBrainが収集した履歴もGMarksのサイドバーに表示されます。 先述のようにgBrainは毎日新しいタグを作るので、GMarksのフォルダもどんどん増えていってしまいます。 これは非常に不恰好です。 これをなんとか解消するために、僭越ながらgBrainの改造をしてみました。(数バイト書き換えただけですが(^^;)
  1. eBrainのインストールフォルダを開きます。プロファイルフォルダの「extensions\gbrain@andreas.gohr」です。
  2. さらに「chome」フォルダを開き、「gbrain.jar」を解凍します。
  3. 解凍した中の「content\gbrain.js」をテキストエディタなどで開きます。
  4. 299行目,309行目でタグの文字列を生成していますので、これをGMarksの階層管理に都合のいいように書き換えてしまいます。 具体的には、年・月・日それぞれのタグを、GMarksのセパレータ文字を使って階層表現するだけです。
    ■例■

    Line299:
    旧)
    'y'+y+',m'+m+',d'+d;
    新)
    '!gBrain>Year>'+y+',!gBrain>Month>'+m+',!gBrain>Day>'+d;

    Line309:
    旧)
    '!gbrain,'+dt+lbls
    新)
    dt+lbls
  5. 再びgbrain.jarとしてまとめて終了です。

こうした作業が苦手な方はこちらからダウンロードしてください。 また同梱のReadMe.txtを良くお読みください。 ⇒gbrain-0.5.4-fx-forGMarks.zip

サーチ(調べる)
本家gbrain作者さんが公開を中止されたことを受け、このブログでも改造版gbrainの公開を中止いたします。

20080218-032349.JPG

なお、上記のように1つのフォルダにまとめると、GMarksの指定タグ非表示機能により、フォルダツリーにgBrainの履歴を一切表示しないように設定することも簡単に出来ます。 上記の例ですと「!gBrain」タグを非表示設定すればOKです(フォルダが非表示になるだけで、各エントリは検索結果に表示されます)。

さあこれで、ブックマークと履歴のオンライン化完了です。 特に履歴はGoogleが許してくれる限り、半永久的に保存されます。 「前に見たけど履歴も残ってないし、どこのページだったっけな〜。」という事態から解放されたのです。 そしてオンラインであるがゆえに、ネット環境さえあればどこでも利用することができます。 
先日「オンラインストレージ」のエントリで言及したオンラインデータとローカル環境のシームレスな統合。 俺の求めてるシームレスって、GMarksとgBrainが提供してくれるているような、つまりはこういうことなんだよな〜と実感した次第です。 まー、ブックマークという小さなデータだからこそ、これだけサクサクなんだろうけどね。

20080218-032350.jpg

2008/02/20追記>>
posted by Huwy at 07:08 | Comment(4) | TrackBack(0) | Firefoxアドオン | このブログの読者になる | 更新情報をチェックする

2008年02月17日

【Firefoxアドオン】Sidebar Mixで使えるFirefoxアドオン一覧

本ブログで紹介したFirefoxアドオンのうち、Sidebar Mixで使えるものをまとめてみました。 他にご存知のアドオンがあればコメントしていただけると有難いです。
最後のほうにNGだったアドオンも載せてみました。 ご参考にどうぞ。

指定するパスについて、各アドオンインストールフォルダの「chrome.manifest」ファイルに思いっきり書いてある場合があります。 少なくとも「chrome://〜/content/」までは分かるので、あとは.jarファイルを解凍してcontentフォルダの中の目ぼしい.xulファイルを片っ端から指定してみるといいかもです。

 
ScrapBookスクラップ記事
 chrome://scrapbook/content/scrapbook.xul
Dog Earsブックマーク記事
 chrome://dogears/content/dogears-sidebar.xul
Link Padブックマーク記事
 chrome://netscape-linkpad/content/linkpad-panel.xul
SageRSSリーダー記事
 chrome://sage/content/sage.xul
GMarksGoogleブックマーク同期記事
 chrome://gmarks/content/gmarksSidebar.xul
以下は「GoogleとMozillaに囲まれる日々」さんからの引用です。
まあ、ScrapBookもSageもこちらからの引用なんですが…^^;
bbs2chreader2chブラウザ
 chrome://bbs2chreader/content/bbsmenu/page.xul
Foxage2ch2chブラウザ
 chrome://foxage2ch/content/foxage2ch.xul
GrepSidebar(*1)ページ内検索
 chrome://grepsidebar/content/grepsidebar.xul
Tab Treeタブツリー化
 chrome://tabtree/content/tabtree.xul
翻訳パネル翻訳
 chrome://Translation/content/Translation.xul
(*1):公式版はFirefox1までの対応となり、Firefox2対応版は非公式版として
   別の方が開発されました。非公式版作者さんのご厚意によりここに掲載します。

以下、NGだったアドオン一覧。
俺自身で確認したもの、2chで報告されたものなど情報源はいろいろです。
Wizz RSS News ReaderRSSリーダ
Feed SidebarRSSリーダ
Mouseover Dictionary翻訳
Wired-Markerラインマーカー


posted by Huwy at 19:03 | Comment(0) | TrackBack(0) | Firefoxアドオン | このブログの読者になる | 更新情報をチェックする