Page Index
日付 題名 記事の要約
2005.7.11 集計CGI就役 いわゆるダウンロードカウンタ
2005.7.13 10000カウント記念 10000アクセス突破
2005.7.30 転送量限界突破 アクセス増えすぎ
2005.7.31 画像ポップアップ機能導入 負荷軽減対策の一環

集計CGI就役

2005.7.11.Mon

 やるべきことを放っといて全然関係ないことをやるのは楽しいですね。背徳の快楽的。
 良い出来です。ダウンロード数集計CGI。掲示板CGIを作ってたはずなんだけども。

 どうもアクセス数が日増しに伸びてってるようでですね、つい1週間前に9000を超えたと思ってたカウンタがもうすぐ10000なんですよ。1日10カウントだったサイトが、地球防衛軍の攻略サイト作っただけでコレですよ。
 まぁそれだけなら歓迎なんですけども、このコンテンツはデモムービーという爆弾を抱えてるわけです。サーバーの転送量がすごいことになってます。マジでいつクレームがつくか冷や冷やの毎日です。できたらZIP型式の方をダウンロードしていただきたくお願い申し上げる所存でございます。

 こんな状況ですから、どのムービーがどれくらいダウンロードされてるか、ちゃんと把握しておく必要があるんです。数さえ拾えれば自動的に転送量が出ますからね。
 今までもごく簡単なログは取ってたんですが、なにせ集計は手作業であり、とても追いつかないんです。俺は1日数件くらいを想定していたのに、10倍以上なんだもの。

[ 集計結果のサンプル画面 / 43KB ]
※テスト用ログでの表示なのでデータは適当。

 公開コンテンツではないし、配布ものですませようかなぁとも思ってたんですが、どうも俺好みのがなくて結局自分で作っちゃいました。なんというか、CGIがどれだけ機能豊富でも、HTMLがね…。<center> とかいいかげんやめようよみたいな…。

 やっぱ自分で作ると勝手が違いますね。(あたり前)
 デモムービーは0.7Mbps版と2.0Mbps版、さらにWMV版とZIP版で、4つのパターンがあります。これらを別々にカウントしてしまうと、どのムービーが人気あるのかわかりにくくなってしまいます。別々にカウントしつつも、まとめて集計することもできれば理想的です。そういうピンポイントな希望にも柔軟に対応できるのが自作の強みです。

 さらに、呼び出しCGIと本体CGIを分けてモジュール化することで、本体CGIひとつで集計対象をいくつも作れます。デモムービーはデモムービーで集計し、CGコーナーではCGコーナーで集計みたいな。
 今は合計数の集計しかできないけど、日別・月別での集計もできるようにしたいところですねぇ。


10000カウント記念

2005.7.13.Wed

[ 10001ヒット / 15KB ]

 足かけ4年半、アクセスカウンタがついに10000を突破しました。おめでとう俺。ぱふぱふ。

 siteCTSのアクセスカウンタは、一般のレンタルカウンタとは違って専用設計です。トップページに限らず、どのページに入ってもカウントされます。カウンタを気にするあまり「リンクはトップページに」とか言ってる人には夢みたいなカウンタです。

 このカウンタは、毎月1日と毎週月曜日に現時点でのカウントをログに取っていきます。(最初の頃は手動でしたが)
 2001年1月9日にサイトを開設してからの、1年ごとの記録を見てみましょう。

1年ごとのカウント数
日付カウント数前回比
2001.01.090
2002.01.011710+1710
2003.01.013895+2185
2004.01.015186+1291
2005.01.017082+1896

 こんな感じです。間違えちゃいけません。「前回比」は1年分の合計アクセス数です。このサイトがどれだけ閑散としてたかがわかりますね。2003年にレンタルカウンタから専用設計カウンタにしたので数字は増えるはずなんですが、逆に減ってます。面白いですね。

 次に、今年に入ってから6月になるまでの記録です。

1ヵ月ごとのカウント数
日付カウント数前回比
2005.01.017082
2005.02.017272+190
2005.03.017420+148
2005.04.017637+217
2005.05.017804+167
2005.06.018010+206

 わりと安定してるのがわかると思います。その内訳は、数人の友人の定期アクセスが10%、彼らが張ってるリンクから来るわずかな人が1%、残り全部は検索からお越しの人です。JavaScriptで調べごとすると、わりとヒットするんですよね。

 そして、6月1日に地球防衛軍 攻略指令支部を公開してからの、1週間ごとの記録です。

1週間ごとのカウント数
日付カウント数前回比
2005.06.018010
2005.06.068062+52
2005.06.138138+76
2005.06.208284+146
2005.06.278414+130
2005.07.048852+438
2005.07.119634+782

 リンクを張ってくださってる人もいますが、そこから来る人はほとんどいないようです。つまり検索での順位がアクセス数の伸び率に直結してます。してますんですが、6月と7月の境目になにがあったんでしょうか。(Googleで一気に5位くらいまで上がったんです)

 一番多い検索語はやっぱり「地球防衛軍 攻略」です。今月入ってからの半月だけで394人です。これはほぼ正確な数字です。次に「地球防衛軍2」で131人、それから「地球防衛軍」123人、「放尿」76人と続きます。最後のはなんなんですかね。去年夏の日記がかかってるようです)

 「地球防衛軍 攻略」が多いのは、理屈としてはわかります。インフェルノ烈火とか異常ですものね。このサイトがお役に立てれば幸いです。
 でも、2年前のゲームですよ? そんな古いゲームの攻略を探してる人がこんなにたくさんいるものなんでしょうか。

 で、俺の想像するプロセスがこうです。

  1. 地球防衛軍2が発表されて話題になる。
  2. 目にする機会が増える。
  3. 地球防衛軍を知らなかった人が興味を持つ。
  4. 1を買う。
  5. インフェルノ烈火でコントローラをぶっ壊す。
  6. おしっこに行きたくなる。
  7. 「放尿」で検索する。

 たぶんこんな感じで間違いないと思います。だとすれば、今さら攻略サイトを作った俺の労力も報われるというものです。(その労力は大変なものであり、同時に大変に楽しいものですが)

 地球防衛軍2が下火になるまでの命とはいえ、いったいどこまで伸びてってしまうんでしょうね。


転送量限界突破

2005.7.30.Sat

 たった半月で1万増えた…。
 いいかげん慣れなきゃと思いつつも、対策に追われてなかなかそうもいきません。

 先日、メインサーバーの転送量限界を1.5倍も突破してしまい、急遽分散先サーバーをひとつ増やしたものの、アクセス数の増加に対策が追いつきません。
 根本的な解決としては画像を減らすとかデモムービーをなくすとかですが、レンタルサーバーをもうひとつ借りるという手もあります。量を減らすか、限界を増やすか。
 でもレンタルサーバーもタダではないし、難しいところです。

 地球防衛軍2が落ちつくに従ってアクセス数も減ってくるはずなので、もう少し様子を見るとしましょうか…。その前にアカウント凍結とかいう最悪の事態が起きなければいいけど。


 地球防衛軍 攻略指令支部に、画像ポップアップ機能を取り入れました。今まではサムネイルとかをクリックするとページが移動してましたが、これによって新しいウィンドウで開くようになります。
 というのも、このコンテンツは画像が多く、画像をいちいち見てるとページへ戻る時に大量の再リクエストが発生してしまいます。(キャッシュが有効でも更新チェックとかするブラウザが多いです)
 また、ページが長いので再描画にかかるブラウザの負荷も馬鹿になりません。

 でも当サイトはXHTML1.1を採用してるので target="_blank" は使えず、JavaScriptでの実装です。例によって推奨ブラウザでのみ有効です。
 JavaScriptが無効になってる時や、ポップアップブロックを検出した時は、従来通り普通に移動します。Sleipnirをお使いの方は、許可リストに加えて頂けると(当方のサーバー負荷的に)助かります。

 ただ、これをやってしまうと、画像を見るたびにウィンドウ(またはタブ)を閉じないといけません。この手間を軽減するために「画像をクリックする、または Enter を押すと閉じる」という機能も付いてます。

 もちろん、これらも(例によって)本当はリニューアル版であるValid Editionのために用意してたもので、わざわざ輸入してきました。サイト設定に「画像は新しいウィンドウで開く」ってのがあるんですよね。
 一時的な縮小運営版であるはずのTransient Editionは、一体どこまで肥大してってしまうのでしょう。心配です。Valid Editionを食ってしまいやしないかと。

 以下、該当部分のソースです。

window.onload = function () {
  var tags = sakura.tags("a"), l = tags.length;
  while (--l != -1)
    if (tags[l].href)
      tags[l].onclick = navs.reference;
}

Navs.prototype =
  reference : function () {
    if (navs.contents.match(/^edf/) && this.href.match(/\.(jpg|png|gif)$/))
      return navs.imgView(this);
    return true;
  },

  imgView : function (a) {
    var win = window.open();
    if (win) {
      var title = a.className.exist("tmb") ? a.firstChild.alt : (a.title ? a.title : "画像");
      if (title.match(/^(\[ *)(.+)( *\])$/))
        title = RegExp.$2.replace(/ *$/, "");

      win.document.open();
      win.document.write(
        '<?xml version="1.0" encoding="EUC-JP"?>\n'+
        '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\n'+
        '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">\n'+
        '<head>\n'+
        '<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" />\n'+
        '<meta http-equiv="Content-Script-Type" content="text/javascript" />\n'+
        '<title>' + title + '</title>\n'+
        '<script type="text/javascript">\n'+
        'document.onkeypress = function (ev) {\n'+
        '  if ((ev && ev.keyCode === 13) || (window.event && window.event.keyCode === 13))\n'+
        '    window.close();\n'+
        '}\n'+
        '<\/script>\n'+
        '</head>\n'+
        '<body>\n'+
        '<p><img src="' + a.href + '" onclick="window.close()" title="クリックすると閉じます" alt="[ ' + title + ' ]" /></p>\n'+
        '<p>画像をクリックするか、Enter キーを押すと閉じます。</p>\n'+
        '</body>\n'+
        '</html>\n'
      );
      win.document.close();
      return false;

    } else { //ポップアップをブロックされた時はそのまま移動
      return true;
    }
  }
}