Greasemonkeyスクリプトに自動更新チェック機能をつける方法

書いた人: noriaki 2007,09月15日(土) 10:30

UserScript Update NotificationというGreasemonkeyスクリプトが公開されました.これは,Userscripts.orgに登録されているスクリプトの更新チェックを行うスクリプトとして開発者用に公開されています.しかし,UserScript Update Noticficationでは起動時に毎回更新をチェックしに行ったり,自分のサイトにスクリプトを置いている場合には利用できないといった課題がありました.

そこで,このスクリプトを参考に,以下のように機能を拡張した'UserScript Update Notification fu'を作りました.

追記(2007/10/06 13:30): 新しく書き直しました.詳しくは「Greasemonkeyスクリプトに自動更新チェック機能をつける方法 改」をご覧ください.

  • 更新確認は1日に1回のみ
  • 「今はアップデートしない」を選択した場合,その日のうちは再表示しない
  • *.user.js.versionというファイルに公開しているバージョンをJSON形式で書いておく
  • 日本語化

行っている処理を簡単に書くと以下のような感じです.

  1. 最後にチェックした日付をGM_getValueで取得
  2. 日付が変わっていたらバージョンをチェックしに行く
  3. 指定された*.user.js.versionをGM_xmlhttpRequestで取得
  4. 中身はJSONなので,Object.evalでオブジェクト化
  5. 現在のバージョンと取得したバージョンを比べて,新しくなっていれば情報を表示する
  6. 現在の日付をGM_setValueで保存

以下では,上記のように機能拡張したGreasemonkeyスクリプトのスニペットについて説明します.また,どんなものか試せるサンプルスクリプトも用意しました.

サンプルスクリプト

サンプルスクリプトは以下のリンクからインストールできます.

UserScript Update Notification fu sample
update-notification-fu.user.js (Version 0.1.0)

追記(2007/09/16 00:00): 以前のスクリプトにはtypoがありました.現在は修正されています.

追記(2007/10/06 13:30): 新しく書き直しました.詳しくは「Greasemonkeyスクリプトに自動更新チェック機能をつける方法 改」をご覧ください.

このサンプルスクリプトは,このブログ上のページで実行されるようになっていますので,インストール後再読み込みなどしていただくとページ最上部に現れます.

なお,今回はサンプルなので「今すぐアップデートする」を選んでも新しいバージョンはインストールされず,同じものがインストールされます.

また,「今はアップデートしない」を選択するとその日のうちは再表示されないのですが,もう一度表示させたいということがあると思います. その場合は,about:configを開き,フィルタに「greasemonkey.scriptvals.http://blog.fulltext-search.biz/」と入力します. そこで表示される「last_check_time」をリセットしてfirefoxを再起動すると再度表示されるようになります.

使い方

この更新チェック機能をあなたのGreasemonkeyスクリプトに導入するためには,大きく以下の3つの手順が必要です.どれも簡単なものです.

  1. スクリプトの名前やダウンロードURL,詳細ページのURLなどの情報を修正
  2. サンプルスクリプトのコード部分を自身のスクリプトの最後に追加
  3. スクリプトファイルと同じディレクトリに*.user.js.versionという名前のファイルを置く

順を追って説明します.

スクリプトの情報を修正

サンプルスクリプトをインストールし,インストールしたスクリプトをエディタで開いて,30行目付近にある以下の部分をあなたのスクリプトに合うように修正してください.

this.check_update({
    script_name: 'UserScript Update Notification fu sample',
    uri: 'http://blog.fulltext-search.biz/files/update-notification-fu.user.js.version',
    download: 'http://blog.fulltext-search.biz/files/update-notification-fu.user.js',
    more_info: 'http://blog.fulltext-search.biz/',
    current_version: '0.1.0'
});

それぞれの項目の説明は以下のとおりです.

script_name
Greasemonkeyスクリプトの名前
uri
後述するバージョンファイルのURI
download
GreasemonkeyスクリプトファイルのURI
more_info
アップデートの詳細やスクリプトの説明ページなどのURL
current_version
このスクリプトの現在のバージョン

サンプルスクリプトのコピー

上記で修正したサンプルスクリプトの,以下の(function(){})();に挟まれた部分を修正した箇所も含めてあなたのスクリプトの末尾に追加してください.

(function(){
  // ↑
  // 最初と最後にあるこの二つの間の部分をコピー
  // ↓
})();

バージョンファイルの設置

あなたのGreasemonekyスクリプトを置いてあるディレクトリに「スクリプトファイル名.version」という名前でファイルを作ります.

中身は以下のようにします.(versionの数字部分はあなたのスクリプトのバージョンを書いてください)

{'version': '0.1.1'}

このときversionをクォーテーションで囲むことに注意してください.

以上を行い,バージョンファイルの中身を適当に大きな数字に替えてみて,うまく更新情報が表示されれば成功です.

Greasemonekyスクリプトを更新したとき

新しくリリースする際には,スクリプトファイルのcrrent_versionを新しいバージョンに修正してください.

その後,バージョンファイルを修正すれば,すでにインストールされているスクリプトファイルは更新情報を表示するようになります.

ライセンス

参考にしたUserScript Update Notificationのライセンスがよく分からなかったので,感謝しつつMIT Licenseとします.なお,このスクリプトを利用することによって生じた損害などに責任はもてません.ご了承ください.

あと,ここはこうした方がいいとか,書き換えてみたよ,などは大歓迎ですので,コメントやトラックバックなどで教えてくだされば幸いです.

Let's enjoy Greasemonkey!! :-)

参考ページ

UserScript Update Notification – Userscripts.org
http://userscripts.org/scripts/show/12193
Unicode の文字列をエスケープする JavaScript - いやなブログ(日本語化するために利用しました)
http://0xcc.net/blog/archives/000184.html
[ws] Color Scheme Generator 2 (いい感じの色を選ぶために利用しました)
http://wellstyled.com/tools/colorscheme2/index-en.html
sshi.Continual - JavaScriptでJSONをeval
http://d.hatena.ne.jp/sshi/20060904/p1

このエントリをdel.icio.usにブックマークしているユーザ数このエントリをdel.icio.usに追加する
このエントリをはてなブックマークしているユーザ数このエントリをはてなブックマークに追加する
 | Tags

このエントリはアーカイブされています。
コメントする場合は、お手数ですが「このページのURL」を記載した上で、新しいエントリにお願いします。