はじめにこのページはUserScriptに関する「書き方」「作り方」のメモです。UserScriptのインストール方法等の「使い方」に関しては、「UserScriptのブラウザごとの違い」で説明しています。
私がUserScriptの勉強を始めた頃に、UserScriptに関する書き方・作り方に関しリファレンス等を探したのですが、サンプルはたくさん見つかるものの情報が体系的にまとめられているサイトは見つかりませんでした。このページでは(つたない内容ではありますが)、私が学んだことや調べたことの断片を寄せ集めてメモとして残しておきます。
UserScriptとはUserScriptとは、利用者が訪問するウェブページに対し変更・操作を加えることを可能にする機能です。UserScriptを利用することで、機能追加やデザイン変更を自由に行ったり、よく行なう操作の自動化を行なうこと等ができます。基本的にはJavaScriptでできる範囲に限られますが、プラグインによってはプラグインで独自に用意している機能を利用できるケースもあります。
UserScriptを動かす為の仕組みは、ChromeとOperaではブラウザの標準機能として搭載されておりそのまま利用できます。FireFoxではGreasemonkeyというアドオンを、IEではie7proというアドオンを、SleipnirではSeaHorseというアドオンをインストールすることで使えるようになります。
(各ブラウザに共通する)基本的なルールUserScriptの内容は、テキストファイルにJavaScriptで記述します。文字コードはUTF-8にする必要があります(SleipnirではSJISでないと文字化けします)。またファイル名の末尾を「.user.js」にしなければなりません(Operaの場合は「.js」、IE7Proの場合は「.ieuser.js」)。
UserScriptではメタデータを指定することにより、動作させるサイトを指定したり、スクリプト名・説明・バージョン等の情報を付加すること等ができます。メタデータを指定する場合には、UserScriptヘッダとして以下のように書きます。
// ==UserScript== // メタデータ1 // メタデータ2 // … // ==/UserScript== ただし、以下のようなブラウザによって対応が異なる点があります。
※ブラウザごとの違いについては、「UserScriptのブラウザごとの違い」を参照してください。
メタデータには、以下のものがあります。メタデータの記述順は特に決まりはありません。
メタデータ
(※)名前空間(なまえくうかん)はNamespaceの訳語で、名前の集合を分割することで衝突の可能性を低減しつつ参照を容易にする概念である。名前空間 - Wikipedia
サンプルUserScriptの書き方の例を示します。これをファイル名「hello.user.js」、文字コードをUTF-8で保存しインストールしてみてください。「Hello World !」を表示するだけのサンプルです。「http://www.m-bsys.com/」内の「code」以外のページを開いた場合にのみ動作します。
// ==UserScript== // @name Hello World ! // @namespace http://www.m-bsys.com/ // @description 「Hello World !」を表示するだけのサンプルです。「http://www.m-bsys.com/」の「code」以外のページを開いた場合にのみ動作します。 // @include http://www.m-bsys.com/* // @exclude http://www.m-bsys.com/code/* // ==/UserScript== alert("Hello world!"); スクリプトの汎用性についての私見requireは便利ですが、現在のところ残念ながらFireFox+Greasemonkeyでしか使えません。ですので使用はお勧めできません。またGreasemonkeyだけで使える関数として、GM_setValue/GM_getValueやGM_xmlhttpRequestなどが用意されていますが、こちらもお勧めできません。これらのメタデータ・関数をどうしても使用する場合には、FireFoxでしか動かないブラウザ依存スクリプトになることを理解した上で使用してください。
UserScriptはこれからもっと発展していく可能性のある技術です。IE / FireFox / Chromeの主要ブラウザはもちろん、それ以外のブラウザでも実行可能になってきています。特定のブラウザでしか使えない一部の機能を使いたいがために、他のブラウザでは動かないスクリプトにしてしまうのは、私はもったいない事だと思っています。
もちろん自分しか使わないツールならばそれでもいいかもしれません。しかし、もしも公開して人に使ってもらおうと思っているのであれば、より多くの人に使ってもらうためにも、多くのブラウザで使用できるスクリプトにすべきだと思います。
また、もしも特定のブラウザでしか動かないスクリプトにしてしまいそれを公開する場合には、使用する人が誤解しないよう特定のブラウザでしか動かない旨をスクリプトのdescriptionに明記すべきです。
2012/01/24
|
Code Tips >