これはなに?
あなたの開発したGreasemonkeyスクリプト(ぐりもん)に、簡単に自動更新機能を付けるためのライブラリです。
Greasemonkey-0.8以降で使える@requireで読み込んで、呼び出しスクリプトを記述するだけで冒頭のイメージのように自動更新機能を付けることができます。
背景
Greasemonkeyには、個別のスクリプトの更新を確認する手段がありませんでした。そのため、Greasemonkeyスクリプトの作者は自信のブログ等でアップデートしたことを広報して、再インストールを促すことでしか新しいものを広めることができませんでした。
そこで、各スクリプトが自分自身のバージョンをダウンロード元に確認しにいって、更新があれば利用ユーザに通知する機能を提供するライブラリを作りました。
さらに、Greasemonkey-0.8で実装された@require機能を利用して、もっと簡単に組み込むことができるように改良しています。
組み込み方(使用法)
以下の3ステップで、あなたが開発したGreasemonkeyスクリプトに自動更新機能を組み込むことができます。
[STEP1]@requireの追加
Greasemonkeyスクリプトの冒頭にあるメタデータ部分(// ==UserScript== 内)に以下の1行を追加します。
// @require http://svn.coderepos.org/share/lang/javascript/userscripts/GM_Libs/noriaki/UpdateChecker/UC-20080823.js
追記(2008/8/24 12:30):読み込むライブラリのURIが間違っていました。現在は修正されています。
※UC-20080823.jsがファイル名になりますが、年月日(YYYYMMDD)の部分は、変わる可能性があります。 これは、Greasemonkeyスクリプトをアップデートしても@requireで読み込まれたファイルは上書きされないためです。
追記(2008-08-28T14:10:00+09:00):通りすがりさんからのコメントでご指摘いただいたように、CodeReposから直接読み込んだ場合では、悪意のあるスクリプトが埋め込まれてしまう可能性が無いとはいえません。
不安な方は、ご自身のサーバ等にコピーしてそこから読み込んだ方が安全かもしれません。
[STEP2]@versionの追加
@requireと同様にメタデータ部分に追加します。
// @version 0.1.0
これはあなたのGreasemonkeyスクリプトのバージョンを表していますので、アップデート時にはカウントアップするようにしてください。
なお、形式は数字とドット(.)の組み合わせのみ可能です。大小関係を自動的に判別してアップデートの必要性を判断します。
[STEP3]呼び出しスクリプトの追加
あなたのスクリプトの最下行で以下のように呼び出します。UpdateCheckerのコンストラクタに渡されるオプションの内容は、あなたのスクリプトの内容に合わせて書き換えてください。
new UpdateChecker({
script_name: 'Your Script Name' // required
,script_url: 'http://example.com/Path/To/YourScript.user.js' // required
,current_version: '*.*.*' // required
,more_info_url: 'http://example.com/Path/To/Update/DetailPage' // optional
});
呼び出しオプションのそれぞれの意味は以下の通りです。
- script_name
- あなたのスクリプトの名前です。アップデートを促すメッセージ内に挿入されます。
- script_url
- あなたのスクリプトのダウンロードURLです。更新のチェックとアップデート実行時に利用されます。
- current_version
- 現在のあなたのスクリプトのバージョンです。この値と、最新ファイルのバージョンが比較されます。
- more_info_url
- アップデート情報やスクリプトの説明が記述されているページのURLを指定します。必要なければ、この項目は無くてもかまいません。
[組み込み後]あなたのスクリプトのアップデート時
上のイメージのように利用者側ファイルのcurrentversionと、リモートのファイル(scripturlで指定した先)の@versionを比較してアップデートの有無を自動判定しますので、あなたのGreasemonkeyスクリプトをアップデートした際には、@versionとcurrent_versionをカウントアップしてください。
注意点
- アップデートは、再インストールすることによって行われるため、利用ユーザによる@includeと@excludeの設定は初期化されてしまいます。
その他の情報
ソースコードはCodeReposにあります。
また、その他のライブラリが追加されるときにもここに置かれます。


ものすごくおもしろそうです.
/\/\/\s?@version\s+([\d\.]+)/
は
/\/\/\s*@version\s+([\d\.]+)/
または
/\/\/\s+@version\s+([\d\.]+)/
のほうがいいと思うのですがどうでしょうか.
(// @versionのような\s複数対策)
Constellationさん、コメントありがとうございますー
確かに、メタデータ部分の書き方は作者によっていろいろありますもんね。
更新しておきます!(CodeReposに置いてあるので、誰かがやってくれるんじゃないかとも期待してますw
Coderepos 上のファイルを直接 require する事を推奨するのはどうなのかな、と。
悪意のあるクラッカーが、善玉のふりして yappo さんから許可を得て、おかしなコードを仕込まないとも限らないわけで。そうなると、こういったライブラリでは被害が大きいですよね。
すでに Coderepos のコミッタは400人超で、yappo さんも全貌を把握しているとは思えないですし、登録する時に身辺調査してるわけでも無いと思いますし・・・。
と、不安に思ったりしました。
通りすがりさん、コメントありがとうございます!
確かに、CodeReposから直接読み込むというところはリスクがありそうですね。CodeReposで管理しつつ、組み込みの際には自サーバにコピーしてもらうことを推奨するのが良いかもしれませんね。
追記しておきましょう。ありがとうございますー