GIF アニメで作るアクセスカウンタ 世界ひしゃげ発見
Access Count : 25146

 「世界ひしゃげ発見」のトップページやこのページについているアクセスカウンターは Netscape Navigator (2.0 以降) や Internet Explorer (3.0以降)で見ると、 アニメーションになっています(それ以外のブラウザからはテキストカウンターとして見えます)。 これは GIF アニメーションによって実現されています。

 この GIF アニメーションによるアクセスカウンター (anicounter) にはほぼ全自動でインストール出来るスクリプトを備えていて、CGI と SSI が使えれば誰にでも簡単にインストールできます。

anicounter の特長
  1. GIF89a によるアニメーション表示
  2. 自動インストール
     3つの項目を入力するだけで簡単にインストールできるインストーラを備えています。
  3. 詳細なアクセスログ(記録)が取れる
     単にアクセス数を表示するだけでなく、アクセスの日時、 アクセスした人の IP アドレス、referer (どのリンクをたどってそのページにやってきたか)、 を記録することが出来ます。

     特に referer は自分のページをどこでリンクしているか分かるので重宝します。

     WWW ブラウザでアクセスログを簡単に表示できるビュアーが付属しています。

  4. カウント数に応じてカウンターの桁数が 5〜8 桁に変わります。
  5. アニメ GIF の表示が出来ないブラウザ、テキストブラウザにも対応
     CGI でGIFを出力するグラフィックカウンターは他にもありますが、 Lynx など、テキスト専用のブラウザでのアクセス、 画像の読み込みをオフにしてのアクセスでは、 カウントが表示されないだけでなく、 そういったブラウザでのアクセスはカウントされませんし、アクセス記録も取れません。

     anicounter はそのようなブラウザでもテキストカウンターとして動作します。

  6. 自動的に alt、width/height をセットする
     <img> タグで HTML に画像を貼り付けるとき、alt=、width=、height= を指定するのは常識ですが、anicounter は自動的にこれを付けてくれます。
  7. 隠しカウンター機能
     カウンターを表示せず、アクセス記録だけとる事ができます。
  8. その他
     anicounter は CGI により GIF アニメを自動生成しますが、 その際 LZW 圧縮を使用しません。 したがってUNISYS の特許を侵害する恐れがありません

anicounter を動かすのに必要な環境
  1. CGI、SSI が使えること
     グラフィックカウンターの多くは CGI のみで実現されていますが、anicounter は SSI を併用しています。

     SSI を使うことによって上記のさまざまな機能を実現しているわけですが、 残念ながら SSI が使えないプロバイダでは anicounter は使えません。

     なお、CGI や SSI が使えるようにするための設定はプロバイダによって違うので、 ここには書きません。プロバイダに相談してください。

  2. C、Perl5 が必要
     anicounter の主要部分は anicounter.cgi、ctdrive.cgi という2本のプログラムです。 anicounter.cgi は C で書かれており、ctdrive.cgi は Perl5 で書かれています。

     したがって C コンパイラ (cc または gcc) が使えなかったり、 Perl のバージョンが 4 だったりすると anicounter は使えません。

     C や Perl5 が使えるかどうかはプロバイダに問い合わせてください*1

  3. shell が使えること
     anicounter のインストーラーは shell から実行することを前提に書かれています。 また、ページに新しいカウンターを貼りつけるときも shell での操作が必要です。 したがって shell が使えないプロバイダではインストールできません*2
  4. その他・注意事項
     CGI や SSI をあらかじめ定められたディレクトリでしか使えなかったり、CGI を使うのに通常と違う手順を踏む必要がある場合、 anicounter のインストーラーは対応できないので、そのままではインストールできません。

     anicounter はフリーソフトウェアです。使用に当たって特に制限はありません。 無償での再配布も自由です(有償での再配布は禁止します)。 改造も自由ですが、私 IsaacRC の著作物であることを改造した旨とともにソースに明記してください。

(*1) Perl のバージョンは shell から perl -v と入力すれば表示されます。
(*2) 管理者に頼んでインストールしてもらう、といった方法は考えられます

インストールの手順
0. 準備/確認事項
 anicounter をインストールする前に、次の事を確認しておきます。

(1). あなたのページの URL

 URL は一般的には、

http://domain.name/~user/
という形をしていて、その下に例えば、
http://domain.name/~user/hogehoge/fuga.html
といったように、さまざまなページやデータがあるわけです。 その一番根っこの
http://domain.name/~user/
を確認しておいてください。

以後の説明では、例として私の

http://www.big.or.jp/~isaacrc/
を使います

(2). WWW サーバー上の HTML ディレクトリ

あなたのページの HTML ファイルが置いてある WWW サーバーのディレクトリを確認してください。 普通は

~user/public_html または
~user/html
のはずです(~user は各ユーザーに割り当てられたホームディレクトリ)。

 例えば私の場合、

~isaacrc/html
です。例えばこの説明ページの URL は
http://www.big.or.jp/~isaacrc/anicounter/index.html
ですが、これは WWW サーバー上では
~isaacrc/html/anicounter/index.html
になります。

 URL と同じく、以後の説明では、例として私の

~isaacrc/html
を使います
1. カウンターの設置ディレクトリを用意する
 anicounter を設置する専用のディレクトリを用意します。 このディレクトリは WWW からアクセスできなければいけません。つまり、 0. で確認した HTML ディレクトリの下に無ければいけません。

 ディレクトリの名前は (ディレクトリ名として許されるものであれば) 自由です。 また、HTML ディレクトリのすぐ下である必要もありません。

 HTML ディレクトリが ~user/public_html なら、例えば、

~user/public_html/anicounter とか、
~user/public_html/counter とか、
~user/public_html/cgi-bin/counter
など、自由に決めて構いません。

 以後の説明では、私の場合を使って

~isaacrc/html/anicounter
を使います

  このディレクトリの WWW での URL を確認します。 0.-(1)で確認したのURLが

http://domain.name/~user/
で、カウンターの設置ディレクトリが
~user/public/html/counter
なら、このディレクトリの URL は
http://domain.name/~user/counter
になります。この URL のうち、「http://ドメイン名」を除いた部分、つまり、
http://domain.name/~user/counter
の青で示した "/~user/counter" が後で必要になります。

先ほどの私の場合なら、

http://www.big.or.jp/~isaacrc/anicounter
の "/~isaacrc/anicounter" になるわけです。

2. ログディレクトリを決める
 anicounter が使用するカウントデーターやアクセスログのファイルは、 ログディレクトリに作成されます。またアクセスログのビュアーもこのディレクトリに置かれます。

 ログディレクトリは 1. で決めたカウンタ設置ディレクトリの下に作られます。 このディレクトリの作成はインストーラーが行いますが、名前は自分で決めなければいけません。

 ログディレクトリの名前を秘密にしておけば、アクセスログを覗かれることはまず無いはずです。 (システム管理者は別ですが)。

 ログディレクトリの名前は、英数字、および '.' の自由な並びです。 例えば、

log
.log
.access.log
といった具合です(秘密保持のために、上に挙げた例はそのまま使わないでください)。

 以下の説明では、例として、'log' を使います。つまり、

~isaacrc/html/anicounter/log
です(実際の私のログディレクトリとは違います。念のため)。
3. インストールスクリプトを入手する
 インストールスクリプトは anonymous FTP

ftp://ftp.big.or.jp/pub/usr2/isaacrc/anicounter/install.pl

にあります。60KB 程の大きな Perl スクリプトで、 必要なプログラムやデータはこの中に全部含まれているので、他のプログラムは必要ありません。

 これを 1. で用意したディレクトリに置きます。 いったん自分の PC にダウンロードしてもいいですし、 直接 ftp で持ってくる、という方法もあります。

4. インストールスクリプトを実行し、必要な項目を入力する。
 カウンタ用のディレクトリから
perl install.pl
を実行します。すると、
url security string :
と表示して入力を促してきます。

黒字は shell のプロンプト、
緑字はプログラムの出力
青字はユーザーの入力 ''は Enter キー
~$cd html/anicounter              ←カウンタ設置ディレクトリに移動
~/html/anicounter$perl install.pl ← install.pl を実行する
url security string : _

 ここで入力するのはカウンターを他の人のページで勝手に使われないようにするための URL 指定です。ここで入力した文字列からはじまる URL 以外のページで anicounter を勝手に使ってもエラーになるようになっています。

 通常ここには 0.-(1) で確認したあなたのページの URL を入れます。 つまり私の場合なら、

http://www.big.or.jp/~isaacrc/
を入れます。そうすれば、URL が "http://www.big.or.jp/~isaacrc/" からはじまるページ、つまり私のページでのみ anicounter が使えるようになります。ここで
http://www.big.or.jp/
とすれば、私の利用しているプロバイダ big net の全てのページから anicounter が使えるようになるわけです。

 というわけで、"http://www.big.or.jp/~isaacrc/" を入力してやると、今度は

CGI directory :
と聞いてきます。

~$cd html/anicounter
~/html/anicounter$perl install.pl
url security string : http://www.big.or.jp/~isaacrc/ ← 自分のページの URL を入力
      CGI directory : _

これには 1. で確認したカウンター設置ディレクトリの URL、つまり、 私の場合なら

http://www.big.or.jp/~isaacrc/anicounter
の青字部分、つまり
/~isaacrc/anicounter
を入力します。 この時最後に '/' を付けないでくださいこの文字列はインストールが完了した後、 ページにカウンターを貼り付けるときも必要になるので覚えておいてください。 さて、これを入力すると今度は
log directory :
と聞いてきます。

~$cd html/anicounter
~/html/anicounter$perl install.pl
url security string : http://www.big.or.jp/~isaacrc/
      CGI directory : /~isaacrc/anicounter ← 最後に'/'をつけないこと
      log directory : _

 ここで入力するのは2. で決めたログディレクトリの名前です。 私の例なら、

log
を入力します。

 以上の3項目を入力すると、入力した内容が改めて表示され、

OK? (y/n)
と確認を求めてきます。

~$cd html/anicounter
~/html/anicounter$perl install.pl
url security string : http://www.big.or.jp/~isaacrc/
      CGI directory : /~isaacrc/anicounter
      log directory : log ← ログディレクトリ名を入力

       url : http://www.big.or.jp/~isaacrc/
    cgidir : /~isaacrc/anicounter
    logdir : log
Ok? (y/n)_

 ここで、入力内容に間違いが無ければ、y を入力します。

 間違えていた場合は、y 以外を入力すると (ただ Enter キーを押してもいい)、 最初から入力し直せます。

 y を押すとインストールがはじまり、さまざまなプログラム、データ、ディレクトリが作られます。

~$cd html/anicounter
~/html/anicounter$perl install.pl
url security string : http://www.big.or.jp/~isaacrc/
      CGI directory : /~isaacrc/anicounter
      log directory : log ← ログディレクトリ名を入力

       url : http://www.big.or.jp/~isaacrc/
    cgidir : /~isaacrc/anicounter
    logdir : log
Ok? (y/n)y
Created directory : log
Created directory : lock
Created : ctbusy.gif 342 bytes
Created : cterror.gif 390 bytes
Created : makefile 209 bytes
Created : anicounter.h 2552 bytes
Created : anicounter.c 5072 bytes
Created : cthandlegif.c 3230 bytes
Created : ctimagedata.c 29874 bytes
cc    -c anicounter.c -o anicounter.o
cc    -c cthandlegif.c -o cthandlegif.o
cc    -c ctimagedata.c -o ctimagedata.o
cc -o anicounter.cgi anicounter.o cthandlegif.o ctimagedata.o
Created : ctdrive.cgi 5730 bytes
Created : relay.cgi 480 bytes
Created : log/accesslog.cgi 4464 bytes
Created : initcounter.pl 718 bytes
Created : log/index.html 209 bytes
~/html/anicounter$_
(注意) 実際の表示は設定によって多少異なるはずです。

 これでインストールは終了です。生成されたファイルを確かめてみましょう。

~/html/anicounter$ls -l -a ← -a オプションを忘れないように
total 173
drwx-----x   4 isaacrc  users2       1024 Feb 14 07:42 ./
drwxr-xr-x  18 isaacrc  users2       1024 Feb 14 07:39 ../
drwx---r-x   2 isaacrc  users2       1024 Feb 14 07:42 log/
-rw----r--   1 isaacrc  users2       5072 Feb 14 07:42 anicounter.c
-rwx---r-x   1 isaacrc  users2      26639 Feb 14 07:42 anicounter.cgi*
-rw----r--   1 isaacrc  users2       2552 Feb 14 07:42 anicounter.h
-rw-r--r--   1 isaacrc  users2       4916 Feb 14 07:42 anicounter.o
-rw----r--   1 isaacrc  users2        342 Feb 14 07:42 ctbusy.gif
-rwx---r-x   1 isaacrc  users2       5730 Feb 14 07:42 ctdrive.cgi*
-rw----r--   1 isaacrc  users2        390 Feb 14 07:42 cterror.gif
-rw----r--   1 isaacrc  users2       3230 Feb 14 07:42 cthandlegif.c
-rw-r--r--   1 isaacrc  users2       2764 Feb 14 07:42 cthandlegif.o
-rw----r--   1 isaacrc  users2      29874 Feb 14 07:42 ctimagedata.c
-rw-r--r--   1 isaacrc  users2      18576 Feb 14 07:42 ctimagedata.o
-rwx------   1 isaacrc  users2        718 Feb 14 07:42 initcounter.pl*
-rw-r--r--   1 isaacrc  users2      60367 Feb 14 07:40 install.pl
drwx---rwx   2 isaacrc  users2       1024 Feb 14 07:42 lock/
-rw----r--   1 isaacrc  users2        209 Feb 14 07:42 makefile
-rwx---r-x   1 isaacrc  users2        480 Feb 14 07:42 relay.cgi*
~/html/anicounter$ls -l -a log  ←'log'はログディレクトリの名前
total 8
drwx---r-x   2 isaacrc  users2       1024 Feb 14 07:42 ./
drwx-----x   4 isaacrc  users2       1024 Feb 14 07:42 ../
-rwx---r-x   1 isaacrc  users2       4464 Feb 14 07:42 accesslog.cgi*
-rw----rw-   1 isaacrc  users2          0 Feb 14 07:42 anicounter.index
-rw----rw-   1 isaacrc  users2          0 Feb 14 07:42 anicounter.last
-rw----rw-   1 isaacrc  users2          0 Feb 14 07:42 anicounter.log
-rw----r--   1 isaacrc  users2        209 Feb 14 07:42 index.html
~/html/anicounter$_
(注意) 実際の表示は設定によって多少異なるはずです。

 ログディレクトリの名前 (この例では log) と各ファイルのサイズは違っていても構いません。 各ファイルやディレクトリのパーミッションが間違っていないか調べてください。 確認したらインストールは終了です。

5. カウンターとログビュアーをテストする。
 インストールが無事終わるとログディレクトリ (例では log) に
index.html
accesslog.cgi
というファイルが作られるはずです。
index.html      カウンターのテスト用のページ
accesslog.cgi   アクセスログのビュアー
 です。 この index.html の URL は、例の場合は
http://www.big.or.jp/~isaacrc/anicounter/log/
です(このURLは例であって実際には存在しません。自分の設定に対応した URL に置き換えてください)。 これを Netscape などのアニメ GIF が表示できるブラウザで見てください。

1

accesslog

というような表示がされていたらインストールは成功です。ブラウザのリロードボタンを押して、 カウンターの数字が増えることを確認してください。

 このページの "accesslog" というリンクはアクセスログビュアー accesslog.cgi へのリンクになっています。

 このリンクをクリックすると、

No. date remote host browser referer
4 14.Feb.1997 15:03:16 uso800.ip.address.or.jp Mozilla/3.01 (Win95; I)
3 14.Feb.1997 15:03:15 uso800.ip.address.or.jp Mozilla/3.01 (Win95; I)
2 14.Feb.1997 15:03:13 uso800.ip.address.or.jp Mozilla/3.01 (Win95; I)
1 14.Feb.1997 15:03:10 uso800.ip.address.or.jp Mozilla/3.01 (Win95; I)
という具合にアクセスログが表示されます。 このページの上には見ての通り二つの選択フォームと 'View' と書かれたボタンがあり、 その下に先ほどのテストページのアクセスログが表として表示されます。

 左側の選択フォームには最初、'anicounter' という選択肢しかありません。 これは先ほどのテストページについていたカウンターの id (=名前)です。 今のところカウンターはこのテストページのもの一つしかないため、一つしか選択肢が無いのです。 新しいカウンターを設置すると (方法は後で述べます)、選択肢は自動的に増えます。

 右側の選択フォームには 20、50、100、200、500、all という選択肢があります。 これはアクセス記録を最大何件表示するかを指定します。20 なら新しい方から20件、 ということです。all を選ぶとすべて表示します。

 二つの項目を選択したら、'View' ボタンを押せばアクセスログが表示されます。

 次にログの見方です。

No.カウント数
dateアクセス日時
remote hostアクセスした人の IP アドレス
browserアクセスした人の使っていたブラウザ
refererどこのリンクからのアクセスか、そのリンク元への逆リンク

 referer 欄の逆リンクからリンク元をアクセスした場合、 相手のページでもこのようなログをとっていた場合、 アクセスログを覗かれる恐れがあります。そこで、referer 欄のリンクはリンク元に直接リンクせず、 relay.cgi という「リンク中継エンジン」を経由するようになっています。 relay.cgi の詳しい使い方は特に解説しませんが、CGI や HTML に詳しい方はすぐ分かるでしょう。 他の目的(謎)に使っても構いません。

6. 自分のページへのカウンターの貼り付け
 カウンターの動作テストが終わったら、いよいよ自分のページにカウンターを貼り付けます。 そのためには新しいカウンターの id (=名前) を決めなければいけません。

 カウンターの id は英数字と '_'(アンダースコア) からなり、長さには特に制限はありません。 そして他のカウンターと重複しないようにする必要があります。 メインのページのカウンターには 'main'、趣味のページには 'hobby'、自己紹介には 'profile' など、内容の分かる名前にするのがいいでしょう。

 id を決めたら、その id のカウンターのためのデータファイルを作成します。 作成といっても簡単で、 カウンターのディレクトリで initcounter.pl というスクリプトを実行するだけです。例えば main、hobby、profile という3つのカウンターを作りたければ

~isaacrc$cd html/anicounter ←既にカウンタのディレクトリに移っていれば必要なし
~isaacrc/html/anicounter$initcounter.pl main hobby profile

を実行すれば良いのです。

 今まで別のカウンターを使っていて、 そのカウント数を引き継ぎたいときは、id の後に =カウント数 を付ければ OK です。 その数からカウントします。

 例えば、main は 1000 から、hobby は 500 から、profile は 250 からカウントさせたければ、

(既にカウンタのディレクトリに移っているものとする)
~isaacrc/html/anicounter$initcounter.pl main=1000 hobby=500 profile=250

これで大丈夫です。main のページの次のアクセスは 1001 になります。

 さて、データファイルが出来たら、自分のページにカウンターを貼り付けます。 例えば main.html に main という id のカウンターを取り付けたいときは、main.html の適当な位置に

<!--#include virtual="/~isaacrc/anicounter/ctdrive.cgi?id=main"-->

という記述を加えます。青字の "/~isaacrc/anicounter" の部分は実際には4. の CGI directory : の項目で入力したカウンター設置ディレクトリの URL の /~user 以降を入れます。 緑字の "main" はカウンターの id です。

 この <!--....--> の記述は SSI によってカウンターの画像を貼りつける <img> タグに置き換えられます。ですから、<!--....--> の部分を <img> タグであるかのように考えて、うまくレイアウトされるような場所に記述してください。

より進んだ使用法
1. オプション
anicounter には、というより SSI スクリプトの ctdrive.cgi にはさまざまなオプションがあります。例えば、先ほどの例、

<!--#include virtual="/~isaacrc/anicounter/ctdrive.cgi?id=main"-->

に mode=hidden というオプションを加えて

<!--#include virtual="/~isaacrc/anicounter/ctdrive.cgi?id=main&mode=hidden"-->

とすると、このカウンターは表示されない隠しカウンターになります。 表示はされませんが、アクセスログはとられていて、ログビュアーで見ることができます。

 このようにオプションは

&オプションの名=オプションの値
という形をしていて、必要に応じていくつでもくっつけることができます。
2. オプション一覧
mode animation、
text、
hidden
カウンターの表示モードを指定します。
mode=animation でアニメ GIF による表示になります。
mode=text でテキスト(普通の数字による)表示になります
mode=hidden で表示しなくなりますが、アクセス記録はとっています(隠しカウンター)。

指定しなければ、ブラウザの種類に応じて text または animation が選ばれます。
具体的には Netscape2.0 以上、もしくは Internet Explorer 3.0 以上だと animation、 それ以外で text になります。

log on、off アクセスログをとるかどうかを指定します。

log=on でログをとり、
log=off ならとりません。

指定しなければ on です。

igreload on、off 同じ人による連続アクセスを無視するかどうかを指定します。

igreload=on で連続アクセスを無視します。
igreload=off で連続アクセスも無視せず、カウントします。

指定しないときは on になっています

columns 5〜8の数字 カウンターの桁数を指定します。 指定しなければカウント数に応じて自動的に桁数が変わります。
browser、
referer、
remote
--- テスト用のオプションです。実際に使うことはまずないでしょう。
 anicounter の <!--#...--> の記述は通常、<img> タグに置き換えられます。 以下のオプションは <img> に付けるオプションを指定します。

 <img> タグのオプションについては HTML の解説書などをお読みください。

align right、left、top、middle、bottom <img> タグに align= オプションを付けます。

指定しない場合は align= option は付けません。

border カウンター画像の周りの枠の幅 <img> タグに border= オプションを付けます。

指定しない場合は border= オプションは付けません。

width、
height
カウンター画像の幅、高さ <img> タグに width=、height= オプションでサイズを指定します。

指定しない場合は桁数に応じて自動的に適切な width=、height= オプションがつきます。