テストサーバと本番サーバを識別する Greasemonkey を作ってみた。

はじめに

GreaseMonkey
多くの人が知っていると思うので、説明は割愛w


自分は、

Minibuffer
LDRize
Yahoo with Google
AutoPagerize

を入れています。
特に、

  • Yahoo with Google (Googleで検索すると、Yahooの検索結果も同時に表示)
  • AutoPagerize (Googleなどの検索結果の2ページ目以降を自動表示)

が便利ですね。


そんな GreaseMonkey を作ってみたい。
と、思い立ったので、週末に作ってみました。


作ったものは、開発者向けのもの
開発サーバ(もしくはテストサーバ)と本番サーバを見極めて、画面の右上に
『開発サーバ』『本番サーバ』
と表示する簡単なもの。


テストサーバでテストしているつもりが、いつのまにか、本番だった!?
なんて馬鹿なミスが起きないための簡易ツール。

作ってみよう

まずは作り方を調べます。
参考にしたのは、下記のサイト
GreaseMonkeyスクリプト作成クイックスタート - mitc - 日記

Greasemonkey スクリプト作成入門 - 紅孔雀
の二つ。
非常に分かりやすいページです。


GreaseMonkey は普通の javascript ファイルを作ればいいらしい。
ただし、少し決まりごとがある。

決まりごとその1

ファイルの名前は、
【任意の名前】.user.js
にすること。

決まりごとその2

js ファイルに下記の記述を書くこと

// ==UserScript==
// @name Hello
// @namespace
// @description test
// @include
// ==/UserScript==
※ココ以下にやりたいことを記述します。

実際に作成したもの。

// ==UserScript==
// @name           check test server
// @namespace     
// @description    check test server
// @include        *
// ==/UserScript==
(function() {
    var obj = document.createElement("span");
    obj.style.position = 'fixed';
    obj.style.top = '10px';
    obj.style.right = '10px';
    obj.style.fontSize = '25px';
    var bodyObj = document.getElementsByTagName("body").item(0);
    var url = document.URL;
    var url_array = new Array("ここに本番サーバのドメインをリストで記述します",
                              "http://test.com",);
    if (url.match(/^(http|https):\/\/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/)) {
        obj.innerHTML = "開発サーバ";
        obj.style.color = 'blue';
        bodyObj.appendChild(obj);
    }
    else {
        for (i = 0; i < url_array.length; i++) {
            re = new RegExp("^" + url_array[i]);
            if (url.match(re)) {
                obj.innerHTML = "本番サーバ";
                obj.style.color = 'red';
                bodyObj.appendChild(obj);
                break;
            }
        }
    }
})();


汎用性、速度、全く無視のものですが、とりあえず動いたw
GreaseMonkey をinstallしている人なら、firefoxD&D するだけでインストールできます。


とりあえず、今回は試しで作成できたので、今度はもうちょっと大きなもの作ろうかな。