Greasemonkeyスクリプトに自動更新チェック機能をつける方法 改
書いた人: noriaki 2007,10月06日(土) 13:00

以前「Greasemonkeyスクリプトに自動更新チェック機能をつける方法」で紹介した自動更新チェック機能をオブジェクト指向っぽく書き直してみました.
新しいものを利用すると,更新チェック機能はそのままに更新情報の見た目だけを簡単に変えられるようになります.
例えば,mixiのお知らせ欄に更新情報を表示することなども可能です.
また,以前のスクリプトでは必要だったバージョンを記載した別ファイルは,新しいものでは必要なくなりました.バージョンがあがっているかどうかの判断はスクリプトファイルの冒頭に書く
まとめると,新しい自動更新チェックGreasemonkeyスクリプトの特徴は以下のとおりです.
- 更新確認は1日に1回
- 「今はアップデートしない」選択が可能(日付が変わるまで有効)
- 更新情報の見た目を変更可能
- デフォルトのままの表示であれば数行書くだけで導入可能
- バージョン情報のファイルは不要
以下では,自動更新チェック機能について,スクリプトのサンプルと,別のGreasemonkeyスクリプトに組み込む方法について説明します.
サンプルスクリプト
サンプルスクリプトは以下のリンクからインストールできます.
- UserScript Update Notification fu
- update-notification-fu.user.js (Version 0.2.0)
追記(2007/10/10 21:00:00):スクリプト内のアップデートURLへのリンクと日付計算に記述ミスがありました.現在は修正されています.
既にご利用いただいている方は,お手数ですが以下のように修正してください.
// ↓修正前(62行目)
update_link.setAttribute('href', this.url);
// ↓修正後
update_link.setAttribute('href', this.script_url);
// ↓修正前(174行目) var DAYS_IN_MONTH = [31,28,31,30,31,30,31,31,30,31,30,31]; // ↓修正後 var DAYS_IN_MONTH = [31,59,90,120,151,181,212,243,273,304,334,365];
このサンプルスクリプトは,このブログ上のページで実行されるようになっていますので,インストール後再読み込みなどしていただくとページ最上部に現れます.
なお,今回はサンプルなので「今すぐアップデートする」を選んでも新しいバージョンはインストールされず,同じものがインストールされます.
また,「今はアップデートしない」を選択するとその日のうちは再表示されませんが,もう一度表示させたいということがあると思います. その場合は,firefoxの設定ページ「about:config」をロケーションバーに入力して開き,フィルタに「greasemonkey.scriptvals.http://blog.fulltext-search.biz//UserScript Update Notification fu.last_check_day」と入力します. その値を適当に小さな値(例えば0)に設定すると再度表示されるようになります.
このスクリプトの使い方
自動更新チェック機能をあなたが作ったGreasemonkeyスクリプトに導入する方法を説明します.
導入は3ステップです.
更新チェック機能のコピー
まず,サンプルスクリプトをインストールします.そのスクリプト内の
Greasemonekyスクリプト情報を修正
次に,コピーした部分の冒頭にあるGreasemonkeyスクリプトの情報をそのスクリプトに合うように修正します.
function UpdateChecker() {};
UpdateChecker.prototype = {
script_name: 'your user.script name', // required
script_url: 'http://**/*.user.js', // required
current_version: '0.1.0', // required
more_info_url: null, // optional
それぞれのパラメータの意味は,以下のとおりです.
- script_name
- Greasemonkeyスクリプトの名前です. 更新情報の部分に表示されます.
- script_url
- Greasemonkeyスクリプトの配布URLです. アップデートリンクと,更新チェック先として利用されます.
- current_version
- Greasemonkeyスクリプトの現在のバージョンです. スクリプトを更新した場合にはこの値も更新してください.
- more_info_url
- 更新に関する詳細情報のあるページURLをStringで書きます. ない場合は,そのままでかまいません.
また,Greasemonkeyスクリプト冒頭にあるスクリプト情報に@versionを追加します.更新チェックにはここの値を利用します. 例えば,以下のようになります.(@versionの部分を追加します)
// ==UserScript== // @name UserScript Update Notification fu // @author noriaki // @namespace http://blog.fulltext-search.biz/ // @description Notifies your script users of available updates. lang:japanese // @license MIT-License // @version 0.2.0 // @released 2007-09-15 10:00:00 // @updated 2007-10-06 11:30:00 // @compatible Greasemonkey // @include http://blog.fulltext-search.biz/* // ==/UserScript==
更新チェック実行部分を追加
最後に更新チェック機能をあなたのGreasemonkeyスクリプトの最後で呼び出してください.これは以下のようにします.
var user_script = new UpdateChecker(); user_script.check_update();
以上で,あなたのGreasemonkeyスクリプトに自動更新チェック機能が追加されます.
Greasemonkeyスクリプトを改良するなどして新しいバージョンを公開する場合は,上記「Greasemonkeyスクリプト情報を修正」の節で述べた,@versionとcurrent_versionの値を最新バージョンの値に忘れずに変更してください.
更新情報の見た目変更
更新チェック機能は1つのクラスUpdateChekerでできています. 更新情報の見た目を変更するためには,その中のrender_update_infoメソッドとadd_update_info_styleメソッドを書き換えてください.
例えば,以下のようにします.
var user_script = new UpdateChecker();
user_script.render_update_info = function() {
// do something that handling DOM
};
user_script.add_update_info_style = function() {
GM_addStyle(<><![CDATA[
/* write some style(like CSS) */
]]></>);
};
user_script.check_update();
書き方の詳細については,サンプルスクリプトのソースをご覧ください.
ご意見・ご感想などはコメント・トラックバック・ブックマークコメントなどでお気軽にお寄せください.


