SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

Ubiquityを使った簡単なFirefoxアドオンの作成

Ubiquityのマクロフィルタの作成

 便利なツールの一例として、Webページ上に特定のパターンマッチングがあるかどうかを分析し、一致したものを代わりのコンテンツに置き換える正規表現フィルタを考えてみましょう。例えば、あなたが米国大統領選挙の経過をとても熱心に追いかけているとします。大統領候補者の名前がWebページに表示されたときに、その名前が強調表示されるようにしたら便利ですね。ついでに、外部サイトのタイトルやリンクも一緒に強調表示されるようにしたいものです。

 これを実現するには、Ubiquityのmacroコマンドを作成します。このコマンドは、XMLベースの辞書ファイルのURLを引数として受け取り、そのファイルをダウンロードして構文解析し、一連の正規表現(regex)とそれに対応する置換テキストを作成します。その後、各フィルタをテキストの選択範囲またはページ全体に適用し、regexを適切な置換テキストに置き換えます。

 まず、Mozilla LabsからUbiquityのアドオンプロトタイプを入手する必要があります。これは作業用プロトタイプです。本稼働で使用できるようになるまでには、実行すべき作業がかなり残っているので、Ubiquityコンポーネントをアプリケーションに導入する計画はまだ立てないでください。

 アドオンをインストールしてFirefoxをリブートしたら、「chrome://ubiquity/content/editor.html」にある組み込みエディタを使用できます。「chrome://」プロトコルは、このエディタが外部サイトからロードされているものではなく、ブラウザそのものに組み込まれていることを示し、これによりオンライン状態でない場合でも(ほとんどの)アプリケーションを作成することが可能となります。新しいスクリプトを追加するには、このエディタにそれらのスクリプトを入力するだけです。コンテンツは自動的に保存されます。

※注

 これは優れたAJAXベースの機能で、自動保存を無効にしてSaveボタンをセットアップするオプションも用意されていますが、作業内容を誤って消去したり、暗黙的な自動保存に悪影響を与えるおそれのある不完全な状態でデータを保存したりする可能性があります。

 Ubiquityのコードを見る前に、XMLベースの「辞書」ファイル(リスト1)について説明します。

リスト1 辞書ファイル(XML)
<?xml version="1.0" encoding="UTF-8"?>
<dictionary>
    <entry global="yes" casesensitive="yes">
        <term>Obama</term>
        <expr><![CDATA[<span style="color:skyblue;font-style:italic;">Obama</span>]]></expr>
    </entry>
    <entry global="yes" casesensitive="yes">
        <term>McCain</term>
        <expr><![CDATA[<span style="color:red;font-style:italic;">McCain</span>]]></expr>
    </entry>
    <entry global="yes" casesensitive="yes">
        <term>((Barack.*?)?Obama|(John.*?)?McCain)</term>
        <expr><![CDATA[<span title="Candidate for President" <br />style="border:dotted 1px;">$1</span>]]></expr>
    </entry>
    <entry global="yes" casesensitive="yes">
        <term>((Jo.*?)?Biden|(Sarah.*?)?Palin)</term>
        <expr><![CDATA[<span title="Candidate for Vice President" <br />style="border:dotted 1px;">$1</span>]]></expr>
    </entry>
</dictionary>

 この辞書は複数の項目に分かれ、各項目には関連付けられた用語(一致させる正規表現パターン)と、置換テキストを含む対応する式(<expr>)があります。ほとんどの場合、テキストはHTML置換コンテンツを保持するCDATAブロックでサポートされます。一致させる用語パターンにHTMLコンテンツまたはXMLコンテンツが含まれている場合は、<term>要素そのものの中で<![CDATA[ ]]>構成体を使用できます。もちろん、<term>または<expr>ノードのテキストが解決されるときに区切り文字は表示されません。

 さらに、各項目には次の2つの属性があります。

  • global
    この属性は、選択範囲全体で用語パターンを置き換えるか(通常はこのケース)、または最初に出現したときのみ用語を置き換えるかを決める場合に使用します。
  • casesensitive
    この属性は、用語の大文字/小文字が一致対象の項目と同じかどうかに関係なく、用語パターンの一致を行う場合に使用します。これらの属性の値は、yesまたはnoです。

 このファイルをWeb上に保存し(ローカルに保存することもできます)、URLを記録します(この場合はhttp://localhost:8080/exist/rest//db/sandbox/dictionary.xml)。これを特定のディレクトリで配布する場合は、デフォルトのマクロ操作を実行するためにdefaultURLプロパティを設定します。

次のページ

この記事は参考になりましたか?

japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Kurt Cagle(Kurt Cagle)

ライター、情報アーキテクト、XML News NetworkとMetaphorical Webのウェブマスター。カナダ、ブリティッシュコロンビア州のビクトリア在住。XMLToday.orgの編集長、O'Reilly Mediaの寄稿編集者。現在、XBRLに関する著書を執筆中。彼のTwitterはtw...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/3404 2009/01/21 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー