偽のスクリプト対応ウェブブラウザは本物

偽のスクリプト対応ウェブブラウザは本物

最近は新しいアプリケーションを見て「うわあ!どうしてもっと早く誰も思いつかなかったんだろう?」と思わず頭を叩いてしまうことは滅多にありません。しかし、トッド・ディッチェンドルフ氏が開発した新しいWebブラウザ「Fake」について聞いた時はまさにそうでした。そして、驚きから立ち直った後、こう言いました。「うわあ!こんなに素晴らしいものを実装した人がいるなんて信じられない!」

なぜまた別のウェブブラウザが必要なのかと不思議に思い、逃げ出す前に、私の話を聞いてください。Fakeはただのウェブブラウザではなく、今使っているブラウザを置き換えることを意図したものではありません。特別な用途があり、その用途のためだけに使うこともあるでしょう。しかし、必要な時に、これと同等のブラウザは他にありません。

Fake はプログラム可能なWeb ブラウザです。その目的は、Web ブラウザ自体を操作し、現在表示されている Web ページのインターフェース上で動作するスクリプトを簡単に作成できるようにすることです。このようなスクリプトを作成する方法は他にもあります。例えば、JavaScript でコーディングすることもできます。また、このようなスクリプトを Web ページに対してほぼ自動的に実行する方法もあります。例えば、Firefox の Greasemonkey はこれを実行します。ただし、ここで「簡単」と言ったことを思い出してください。Web ページの HTML を調べて、JavaScript を通じてその中の要素にアクセスする方法を見つけ出し、それを実行する JavaScript コードを作成して保守することは
、決して簡単とは言えません。Fake を使用すると、ポイントアンドクリック インターフェースでスクリプトを組み立てることができます。

Fake のインターフェースは、Apple の Automator (2005 年 5 月 2 日の記事「Automator 入門」参照) を意図的に彷彿とさせます。Automator では、あらかじめ用意されているもののカスタマイズ可能な「アクション」をまとめて「ワークフロー」として構築し、通常は AppleScript でコードを書く代わりに使用します。しかし、Fake は Automator よりもさらに優れています。Apple は Automator にループや条件分岐、エラー処理といったまともなプログラムロジックを一切提供していませんでしたが、Fake のアクションにはこれらが含まれています。基本的なアクションには、リンクやその他の要素をクリックする、要素やフォームの値を設定する、フォームを送信する、などがあります。また、ブラウザをより一般的に制御し、特定の URL にアクセスしたり、ブラウザのタブを開閉したりすることもできます。プログラマーは、
JavaScript、AppleScript、または Unix シェルスクリプトのスニペットをワークフローに組み込むこともできます。

基本的なワークフローを構築するのがいかに簡単か、一例を挙げて説明します。私はよく、自分が書いた過去の記事を TidBITS で検索したいことがあります。検索したいのは、自分が著者である記事であって、他の形で言及されている記事ではありません。詳細検索ページには、著者名を記入できるフィールドがあります。このページを開くには、メインページの左上にある検索フィールドの隣にある小さな歯車のシンボルをクリックします。それでは、詳細検索ページを開いて著者名フィールドに「Neuburg」と入力するワークフローを構築してみましょう。

まず「URL を読み込む」アクションに、ホームページの URL(http://www.[removed-link]/)を貼り付けます。次に「HTML 要素をクリック」アクションを追加します。このアクションには、小さな歯車アイコンの識別子を入力できるフィールドがあります。しかし、この小さな歯車アイコンはどの要素でしょうか?答えを知る必要はありません。アクションから歯車アイコン自体に Control キーを押しながらドラッグするだけで、そのアイコンを識別する式がそのフィールドに表示されます。最後に、「HTML 要素の値を設定」アクションを追加します。もう一度 Control キーを押しながらドラッグし、今度は「作成者」フィールドにドラッグして、このアクションの最初のフィールドを設定します。次に、このアクションの 2 番目のフィールドに「Neuburg」と入力します。

ここまでの作業は、ワークフローにいくつかのアクションをドラッグし、操作対象の要素までControlキーを押しながらドラッグして設定し、名前を一度入力するだけです。それほど難しくはありません!ただし、操作対象の要素が各ページに読み込まれるまで待機する方法も用意する必要があります。問題ありません。既存の3つのアクションの間に2つの「条件付き待機」アクションを散りばめ、処理を進める前に必要な要素の情報を既存のアクションからコピー&ペーストします。これでワークフローが完成です!

最後に、ワークフローを「Articles By Moi」というファイルに保存します。すると、ダブルクリックで詳細検索ページに移動し、著者欄に自分の名前を入力するだけで、あとは検索に必要な追加情報を入力して検索を実行できる状態になります。しかも驚くべきことに、マニュアルを参照したりプログラミング言語を学んだりすることなく、わずか数分で作成できたのです。


もちろん、プログラミング言語の知識があればその知識をワークフローに組み込むことができます。以下は、TidBITS の記事から公開日を抽出する例です。私たちの記事 Web ページ (このページもその 1 つです) はすべて、記事のカテゴリと日付 (そして追加の情報) を示す小さなヘッダーで始まります。このヘッダーを Fake に取り込むには、「変数を設定」アクションから (お察しのとおり) アクションをヘッダーまで Control キーを押しながらドラッグします。また、このアクションに変数名を割り当てます。ここ
では「meta_article」とします。これでこのワークフローを実行すると、「meta_article」という変数が作成され、その内容は次のようになります。

ブログ投稿 | 2010年8月4日 | 聴く | 印刷 | コメント (27)

ここで「2010年8月4日」の部分を抽出したいとします。JavaScriptはFakeの変数を参照でき、JavaScriptには正規表現があるので、この部分を簡単に抽出できます。そこで、このワークフローの2つ目のアクションは「JavaScriptを実行」アクションです。このアクションは「meta_article」変数から日付を抽出し、「date」変数として返します。

var meta = window.fake.get(“meta_article”);
var res = meta.match(/\| (.*?) \|/);
window.fake.set(“date”, res[1]);

最後に、その情報をクリップボードにコピーします。これは簡単なUnixシェルスクリプトで実行できるので、次のアクションは「Unixスクリプトを実行」です。Unixシェルスクリプトは、別の方法でFake変数も参照できます。

#!/bin/sh
echo ${date} | pbcopy

これで、その記事の日付がクリップボードに保存され、今書いている記事に貼り付けられる状態になりました。「まあ、大したことじゃない。選択してコピーすればいいじゃないか」と思うかもしれませんね。しかし、この例は、記事のタイトルと日付をコピーして、先ほどのAutomatorの記事を参照するワークフローのように、標準的な参照にまとめるという、より大規模なワークフローに組み込むことができます。

Fakeには他にも多くの優れた機能が搭載されています。AppleのWebKitを利用してWebページの要素レベルの分析を提供します。Webページの一部を選択し、「ウィンドウ」>「Webインスペクタ」を選択すると、Safariで「開発」>「Webインスペクタを表示」(またはコンテキストメニューから「要素を検査」)を選択した場合と同じペインが表示されます。Fakeでは、Webページの読み込み後にスクリプトを実行し、スタイルシートを適用できます(Greasemonkeyのように)。また、Fake自体もスクリプト化可能なので、ワークフローを作成する代わりに、AppleScriptなどを使ってFakeを操作し、定義した一連のアクションをリアルタイムで実行させることができます。

Fakeは、Webブラウザとのインタラクションを自動化する必要がある開発者(例えば、Take Controlの注文プロセスのようなWebアプリケーションのテストなど)にとって、まさに天からの恵みとなるでしょう。しかも、その使い方は驚くほど簡単。最も基本的な使い方は、アクションをワークフローにドラッグし、そのアクションからWebページ上の操作対象にドラッグするだけです。Safariのフォーム自動入力では対応できない、ブラウザで繰り返し操作を行う人にとって、きっと役立つはずです。もしFakeが自分には役に立たないと思うなら、上記の例をもう一度読み直し、自分のブラウザライフをもう一度考えてみてください。きっと、Fakeを使えば、何度
もマウスクリックを1回にまとめてくれるようなWebフォームや、繰り返し表示されるWebページがあるはずです。

既に述べたように、Fakeは素晴らしいアイデアであり、実装も素晴らしいと思います。開発者の長年の努力の集大成であり、開発者はこれまで培ってきた多くのツール(他の専用ブラウザであるFluidやCruz、そしてそれらが依存するコードの多くなど)を惜しみなく提供してくれています。また、Fake専用のGoogleグループでは、反応が良く、活動的で、非常に忍耐強く、親切です。Fakeの価格は29.95ドルと非常にリーズナブルで、機能制限付きの試用版(ワークフローを保存できない点に注意)が4.9MBのダウンロードで入手可能です。Mac OS X 10.5以降が必要です。ぜひお勧めします。

Idfte
Contributing writer at Idfte. Passionate about sharing knowledge and keeping readers informed.