Google Analyticsのモバイル版を使うときの注意点
- 2010年02月03日
- category:Perl
- Comment(0)
- Trackback(0)
先日ついにモバイル向けのGoogle Analyticsが正式に発表されましたね。
Analytics 日本版 公式ブログ: モバイル向け Google Analytics がすべてのアカウントでご利用可能になりました
僕も導入してみようと思ってやってみたんですけど、ちょっとはまったとこを紹介しておきます。
PHPとかはたぶんそのまま貼っつければそのまま動くと思うんですけど、PerlをCatalyst+fcgiとかで動かしてるときはそのままというわけにはいきません。
下記のコードをコピーして、解析するすべてのページの最初の <html> タグの直前に貼り付けてください。
# Copyright 2009 Google Inc. All Rights Reserved.
use URI::Escape;
use constant GA_ACCOUNT => 'MO-xxxxxx-xx';
use constant GA_PIXEL => '/ga.pl';
sub google_analytics_get_image_url {
my $url = '';
$url .= GA_PIXEL . '?';
$url .= 'utmac=' . GA_ACCOUNT;
$url .= '&utmn=' . int(rand(0x7fffffff));
my $referer = $ENV{'HTTP_REFERER'};
my $query = $ENV{'QUERY_STRING'};
my $path = $ENV{'REQUEST_URI'};
if ($referer eq "") {
$referer = '-';
}
$url .= '&utmr=' . uri_escape($referer);
$url .= '&utmp=' . uri_escape($path);
$url .= '&guid=ON';
$url =~ s/&/&/g;
$url;
}
さすがに言われた通りにこれをテンプレートに書くわけにもいきません。
そこで例えばCatalystとかで使うときは$cにメソッド生やすかたちにしてテンプレートで
<img src="[% c.google_analytics_get_image_url %]" />
こんな感じにするのがいいと思います。
でもこれこのままじゃ動きません。このままだと%ENVがfcgiの環境変数になるので$ENV{’HTTP_REFERER’}とかはとれないんですね。なのでこれは$c->reqからとらないといけません。直したのが以下。
sub google_analytics_get_image_url {
my $c = shift;
my $url = '';
$url .= GA_PIXEL . '?';
$url .= 'utmac=' . GA_ACCOUNT;
$url .= '&utmn=' . int(rand(0x7fffffff));
my $referer = $c->req->referer;
my $query = $c->req->uri->query;
my $path = $c->req->uri->path_query;
if ($referer eq "") {
$referer = '-';
}
$url .= '&utmr=' . uri_escape($referer);
$url .= '&utmp=' . uri_escape($path);
$url .= '&guid=ON';
$url =~ s/&/&/g;
$url;
}
これで元のコードと等価になってるはずです。ちなみに$ENV{’QUERY_STRING’}はどうみても使ってないんで、いらない子な気がしてなりません。
一個懸念してるのはは、リクエストを飛ばすga.plをcgiで動かさないといけないんでアクセス増えたときにこいつがボトルネックになる可能性があるんじゃないかってことです。どうにかならんかな。
