アクセスのデータをgoogleに見てもらう。

このサマリー部分のアカウント設定を編集を押す。

tmp11E5


で、下の画面。データを他のサービスに使うかのオプトイン?の説明

tmp11D4 

例としては、optimizerとか、と書いてあるけど、、個別にオプトインできるようにはなっていないのかな?

第三者に渡す事はないので、気にしなくてもいいのかもしれないが。

 

で、いつものようにwebをあさってたら、

googleは、”人間のアクセス解析の理解力不足”を解析・提案してくれるという事もあるのかな。

という記事を見た。(英語なので、理解が変だけど)

社長さんに見せるweb解析という商品もあるようだけど、担当者でも???な分野だろうし。

はやく、おせっかいを焼いて欲しい。僕に。

データマンより、先生のがいいに決まってる。

再)ga.jsのコードを見てみる。

ga-js-の勉強の時より、多少理解が進んだ。まだまだだけど。

コードは、http://www.google-analytics.com/ga.js

まずは、整形する。
http://jsbeautifier.org/
ファイルに保存。以後の行数は、この整形されたファイルの行数を使用。

全体の構成

このga.jsは、文字数を少なく書く事が目標となっており、一文字変数が多い。
false,trueも、一文字の変数に代入している。

4-134行 window._gat={}
オブジェクトリテラルで_gatが定義されている。
いろいろな、文字列が一文字・二文字の変数に代入され、文字列処理utilityメソッドが定義されている。

135行 var F = window._gat 変数Fに入れている

136-1669行 Fのプロパティの設定が延々と続いて終わる。

コードとしては、これだけ。
実際に、利用する場合には、pageTracker=_gat.getTracker("UA-XXXXX-Y")と呼ぶのだが、
この_gat.getTrackerは、最後行あたりの F._getTracker=function(g,l){return new F.qc(g,l)}
で定義されており、このreturn値が、pageTracker変数に入る。

F.qc

1070-1666行
a=thisとして、その後、延々とaにプロパティ追加されている。
この中のプロパティで、_がprefixされているものが、Google AnalyticsのAPI。

なので、APIを調べる時は、ここが出発点になる。
また、重要な変数として、aの他に, fがある。
f=new F.lcと代入される変数

F.lc

136-188行にある
g=thisしたあとに、gにいろいろ詰め込んでいる。
g.bはdocument, g.cはwindow,g.Laは検索エンジン名のオブジェクト
ga.jsの設定値に関わる部分になる。

もう一度, F.qcで出来るオブジェクトについて書くと、
fは、new F.lc()で作成されるオブジェクト、f.bはdocument, f.cはwindow。
a=this で、aに設定していってる。

a._trackPageview

aのプロパティを全部見るのは難しいので、主要APIのa._trackPageviewの所だけ見る。
行番号付きで表示すると、

1365         a._trackPageview = function (b) {
1366             if (t()) {
1367                 a._initData();
1368                 f.H && a.od();
1369                 a.td(b);
1370                 a.T = E
1371             }
1372         };

この処理を順番にみる。

t() 1127-1129行

ドメインが、正常な物かどうかを判別する?

定義は、function t(){ return "file:" != f.b.location.protocol && i()}

f.bはdocument。

i()は

<pre>

1110      function i() {

1111             var b = f.e,

1112             h = r(b, "www.google.") * r(b, ".google.") * r(b, "google.");

1113             return h || "/" != f.n || r(b, "google.org") > -1

1114      }

</pre>

ちなみに、f.eはデファルトでは、"auto"(_setDomainName()のデフォルト値)

* r=function(g,l){return g.indexOf(l)}

fileではなく、domainにgoogleがなければ、trackPageviewは処理に入る。

a._initData() 1292-1321行

少し長いが抜き出す。

1292         a._initData = function () {
1293             var b;
1294             if (!s) {
1295                 if (!a.N) {
1296                     a.N = new F.kc(f);
1297                     a.N.Kc()
1298                 }
1299                 a.f = a.Oc();
1300                 a.o = new F.ra(f);
1301                 a.k = new F.da;
1302                 B = new F.nc(f, a.f, a.o, a.k);
1303                 a.$c()
1304             }
1305             if (t()) {
1306                 a.Yc();
1307                 B.bd()
1308             }
1309             if (!s) {
1310                 if (t()) {
1311                     a.ya = a.Fc(a.Cb, f.b.domain);
1312                     if (f.ta) {
1313                         b = new F.w(a.f, a.ya, a.D, f);
1314                         a.ub = b.Lc(a.o, a.T)
1315                     }
1316                 }
1317                 a.Eb = new F.da;
1318                 s = c
1319             }
1320             F.Lb || a.ad()
1321         };

sは、_gat={s=E}と、設定されており、false。

t()は、(上に書いた,protocol,domainチェック)。trueなら、処理に入る。

a.N=kで、k=F.aで、たぶん?7行目のa:undefinedになっている。

1296-1297 a.N = new F.kc(f);

a.N.Kc()の部分は、

    581-650 F.kc

    l=g, a=l.c(window), k=thisと変数に入れ、

    その後、browserやosの値を取得している

    640のk.qdは、でそれらの値の文字出力メソッド。

    645のk.Icでは、

    history-object(https://developer.mozilla.org/ja/DOM/window.history)

    F.sはHashを作るメソッドか、(31-45)

    this.Kc()も設定値を返している。詳細は追わない。

1299  a.Oc()

これは、domainハッシュを返す関数(setDomain()した場合は1を返す形

1300 new F.ra(f)のcalleeは、278-439行

…疲れたので、飛ばす。

その後も、aのプロパティに値を設定する処理が続いている。

まとめとしては、a._initData()は、データの初期化部分、、、_Pageview()時に取得できる情報をsetしてる。

_initDataは、他の 部分でも、呼ばれてる。データを送る際に、前処理として呼ばれる。下はoccur a._initDataした結果。

1291:        a._initData = function () {

  1323:            a._initData();

  1329:            a._initData();

  1368:                a._initData();

  1380:            a._initData();

  1394:            a._initData();

  1420:                a._initData();

  1426:            a._initData();

  1430:            a._initData();

  1434:            a.initData();

  1442:                a._initData();

  1448:                a._initData();

  1471:            a._initData();

  1476:            a._initData();

  1483:            a._initData();

  1496:            a._initData();


F.qc部分に戻る。

f.H && a.od()

f.Hは、undefinedになっているので、次の行へ。

a.td(b)

a.tdの定義部分の抜き出す。

1185       a.td = function (b) {
1186             if (a.X()) {
1187                 var h = "";
1188                 if (a.k != k && a.k.U().length > 0) h += "&utme=" + x(a.k.U());
1189                 h += a.Oa(b);
1190                 y.V(h, a.F, a.f)
1191             }
1192         }; 

yは、F.pcの値が入っている。

(a.initDaataの中の1303行目で、a.$c()をcallしている。a.$c=function(){y= new F.pc(f)}

F.pc(f)

440-506行にある。

y.V(a.tdの中では、l.V)は、455-475で定義されている。

リクエスト文字列が作られれ、l.Bbをcallする。

l.Bbは、479-486行

<img>タグを作り、onloadメソッドを定義。リクエストが走る。

a.T=E

そのまま、falseを指定してるだけ?

—————————

終了

—————————

尻切れトンボになったが、これが、pageTrackerを作り、 trackPageviewメソッドを行う、なかの流れ。

ちなみに、APIのなかには、これから使用予定のものも、顔を出している。

http://www.google.com/support/forum/p/Google+Analytics/thread?tid=3dfa688533e09141&hl=en

1. _setAutoTrackOutbound,

2. _setTrackOutboundSubdomain,

3. _setHreExamineLimit

4. _setRefferOverride

あまり、実際のアクセス解析には役に立たないかな。

http://www.analyticsmarket.com/

このサイトを見てたら、GAの情報を自分のサーバーにも飛ばしていた。

GAの研究をするなら、こういうのが必要なのかな。

今の俺には、無理だ。

GA reportのURI表示の文字化けを直す

2009年10月7日、少し訂正(load時にdecodeしてたのを、mouse-clickでdecodeする用にした、pull-downで日本語に変換する場面が多々あるので)

コンテンツのページで、URIに日本語を含むようにしていると、日本語部分の表示が、

google-analytics-%e3%82%ab%e3%82%b9%e3%82%bf%e3%83%a0%e3%83%ac%e3%83%9d%ef%bc%8d%e3%83%88%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e8%a6%8b%e3%82%8b%e3%80%82

と、URIencodeされたままになっていて、せっかく直感的理解の為のツールであるGoogle Analyticsの意義を損なっている。

解決方法は、安直だけど、firefoxのgreasemonkeyで、かたっぱしから、decodeURI(“hogehoge”)とするしか思いつかない。

該当しそうなのは、<a>タグと、<div>タグで、classがdetail, text_wrapperのものっぽいので、それをdecodeURIした。

as = document.getElementsByTagName("a");
ds = document.getElementsByClassName("detail");
ts = document.getElementsByClassName("text_wrapper");
f =function(g){Array.forEach(g, function(e){
                                          text = e.textContent;
                                          if(text.indexOf("%") != -1){
                                             e.textContent = decodeURI(text);
                                          }
	                            if(e.title && e.title.indexOf("%") != -1){
		                 e.title = decodeURI(e.title);
		              }
});};
Array.forEach([as,ds,ts], f);
window.addEventListener("click", function(){Array.forEach([as,ds,ts], f)},false);

http://d.hatena.ne.jp/javascripter/20080501/1209624240 を見たら、配列のように扱う方法を知った。

google analytics というより、javascriptの配列処理の Array.forEachの練習の記事になってしまった。firefoxにしか使えないみたいなので、greasemonkeyぐらいにしか使い道がなさそうだけど。

Google suggestでみる日本への関心

[錐] Google Suggest で世界各国にまつわる FAQ が出てくる

を見てたら、おもしろかったので、

why, how, what, 過去形、現在形、 be動詞、do動詞でやってみた。

why is japaneseで、文化、食物への関心になっている。

weird は奇妙?という意味?

0-412663db06a9264e

why are で性質に関する疑問。

変態で、細くて、奇妙で、背が低くて、賢くて、健康的。

14565-412663db06c16c17

why does で、国という単位への疑問

鯨をとり、ボーナストラック(日本だけなのか、)、地震があり、犯罪率が低い、(真珠湾は過去形との混同か)

14565-412663db06f1f7a8

why do で、日本人の性質への疑問

歯並びが悪く、ピースサインをし、さん付けで呼び、目が細く、写真を撮りまくる

マスクは、インフルエンザ騒動の時の印象かな?

14565-412663db071f7a80

why did japanで、過去の行為への疑問

真珠湾、南京虐殺、戦争終結への疑問

(学校の調べ物需要などもあるんだろうけど、このtopicに検索数は多いんだな)

14565-412663db074e81b5

why did japanese peopleで、日本人としての行為に焦点が当たる

移民、おはぐろとかは学校とかの調べ物か?

14565-412663db0ff56178

how did japan で、日本人的なやり方に焦点

経済成功、名前に付け方、近隣外交?、明治維新、第二次世界大戦

formっていうのは、根源的ななにかかな?

14565-412663db07d27d28

how are japaneseで、日本人、日本の物の成り立ちみたいなもの?

のこぎり?、表札とか、男性、女性、着物。

14565-412663db08444444

what are japaneseで、日本ってどうよ?みたいな感じ?

カブトムシ? 強制収容所、車、学校、男性、女性。

14565-412663db08ee2cc1

what were japanese。

internment campsは、他の所でも良く出てくる。調べ物か?

14565-412663db090aff9f

what does japaneseで、日本のもの、これってどうなの?みたいな感じ?

お金(旅行下調べ?)、なす?、カブトムシ(日本産のカブトが流行ってるのか?と思ったら、そういう害虫がいるみたい)

14565-412663db094ab6ce

what did japaneseで、internment camps 強制収容所

14565-412663db09c28f5c

are japaneseで、日本人ってこうなの?という疑問か?

circumcisedは割礼、人種差別とかは、なんかあったのかな?

14565-412663db09ee8dd8

did japaneseで、日本人、これ本当か?というものか?

warterboard: 水責め

あとは、オーストラリア侵攻。本土まで到達したかどうかなど。

14565-412663db0a81b4e8

google susggestはおもしろい。

ajaxが原因のindex漏れを修正

* index : ここでは、googleの検索に引っかかる(indexされる)ようになる事。webmaster-toolを使うと確認でかきる。(もしくは、site: abc-analytics.com みたいな形で検索する、両者は一致しない事もあるが)

このwordpressは、carrington-blogというthemaを使わせてもらっているのだが、bloggerから移転してきたときに、上手くリンクをredirectさせずにいたせいか、個別記事がindexされずに、webmaster-toolを見ながら、悶々としてた。

categoryや月、日にちではindexされるのに、個別記事がindexされなかった。apacheのlogをみても、googlebotは頻繁にくるんだけど、すぐに帰って行く。

時間が経てばそのうち拾うかなと思っていたんだけど、だめ。sitemap.xmlには個別記事のurlは入っているので、bloggerからの移転や、subdomainを作ったり、redirectしたので、ペナルティなのかなと、想像を巡らせていた。

で、なぜカテゴリだけindexされるんだろうと、カテゴリを示すURLを入れると、そこで示されていた個別記事のリンクは、ajax読み込みになっていて、urlが変化しないようになっていた。

ユーザーによっては便利なのかもしれないけど、検索エンジンに優しくないので、ajaxを停止した。設定画面をよく見たら、ajax機能はon-off できるようになっていた。 offにした。

しばらくしたら、3つほどindexされていた。ただ、どのurlがindexされたのかが、よくわからない(見る方法はあるのかな?)。site: abc-analytics.com だと、以前から30ほど検索されている。(上手く、リンクがわたせず、404を表示してしまったのもあった。ほとんど修正された(googleに)が、まだあるかもしれない)

ブラックボックスな部分も多い仕組みなので、時間をかけて見るしかないのだろう。

Visualilze機能を使う google analytics

 

上の動画は、一年前に作られたものらしい。

日本語版では気がつかなかったけど、英語版にするとVisualize機能が使える。

1.

Google Analytics Blogに、紹介されていた例(How to Use Google Analytics Motion Charts to Maximize Results)があるので、まねてみる。

KPIの最大化?

最大化のための方策の一つに、キーワードの発掘、再発見があるとする。(この場合のKPIは、revenue手前の数字になりそう)

アクセス解析を通じたサイト運営とは、KPIを設定して、その数値向上に必要な分析をし、行動につなげることらしい。kPIには、キーワードが直接入る事はないみたいだが、顧客の潜在ニーズは、キーワードに現れる。潜在ニーズを見るにはキーワードをどれだけ細かく拾えるかが重要になる。(KPIとキーワードを結びつけた文にしたかったが、変なロジックになった)

Google Analytics 経営戦略(権成俊、村上佐央里)にも、ECサイトを4つのタイプ(wants/needs, multi/singleで十字に切って4つ)に分けて、それぞれにアクセス対策・KPIの例を紹介しているが、wants型サイトへの施策では、アクセス対策として、まずキーワードの発掘から入っている。

ECタイプ以外のサイトなら、よりwants型に近いはずで、よりキーワードの発掘が重要になる。(ニュース掲載型なら、縦断爆撃で関係ないかもしれないが)

なので、キーワード。で、キーワードをMotionチャートで見る。

が、実はキーワードに日本語が入っていると、今の所、MotionChartが上手く動かない。(後、advance-segmentsを使っても動かない。

とりあえず、日本語を正規表現で消しとく。exclude [^a-zA-Zs] (実用から離れてしまうが)

2

上に上げた記事では、

  • Improve SEO keyword targeting
  • Expand PPC keyword targeting
  • Analyze PPC keyword performance

と書かれている。

何を示すのか?

Motion chartは、5つの軸で目的物を表現できる。

  • バブルの大きさで目的物のでかさ
  • バブルの色で、目的物の種類(細かくやれば、group分けにも使えそうではある)
  • バブルの動きで、時間経過(trailsをcheckすると、軌跡が残る)
  • X軸、Y軸で、目的物の属性(’でかさ’も属性なので、大きさ、X,Yは取り替え可能、選択が難しい)

また、analyticsのmetricにはmeticsが重ねられたものがある(bounce rate= bounce/visits)、metricsなmetircを軸に採用するということは、さらに表現するデータ要素を増やすという事になる。(人間が思考できるのは二次元データまでという意見の前には、これは無駄な努力になるが)

どうやって、データを選ぶのか?

記事では、

  • Keyword medium オーガニックかPPCか
  • Time range 日別なら最低8日,週別なら最低5週, 月別なら最低13月
  • 時間単位は、日なのか週なのか月なのか
  • 行の数(データレコードの数)、500まで取れるけど、キーワードを見るなら25を超えると、しんどい。
  • データの絞り混み。キーワードを選ぶ場合に、キーワードをある程度、グループに心の中で振り分けて、代表するようなキーワードを上手く選ぶ(正規表現で、exclude, includeできる)

と書いてあった。

ここで、ひとまず終わり。

ーーー区切りーーーー

自サイトのデータを見てみる

と、ここまで書いてきたけど、僕のsiteではデータが少なすぎる。

キーワードで日本語を除外しないと動かないので、日本語を含まないにすると、32visitsしかデータがない。記事の前半の内容とずれてしまうが、new visitorとreturning visitorを対象物として、色でこの二種類を、大きさでsession数、X軸にTime on Site, Y軸にpages/Visitを入れて、出してみた。9/15-9/24(wiki.slash-reader.com)

image

データがこれでも、53visitなので、なにか知見が沸くわけではない。

データとしては、単体のsessionのデータに近いものが出てる。

(一番小さい円は、データ数1か0だ。直線になるということは、データ無しを補正してるだけなはずだ)

これを見て、Actionに入れるわけでもないが、Time on Siteは300ぐらいにはしたい。

Non-bounce-visitなら、滞在時間は二倍ほどになる。advance-segmentsでデータ振り分けをすればいいが、それをするとMotion Chartがつかえない。

日本語対応も含めて、機能充実を待ちたい。

Google Analytics アドバンスセグメント

前回、カスタムレポートを試したので今回はデータfileringのアドバンスフィルターを使って見る。
2010/01/10 この頃は、よく分かってませんでした。フィルターではなく、セグメントですね。間違いの多いblogだ。

データは、僕のgoogle sitesのまとめを書いたsite

アドバンスセグメント、特定のデータに対して絞り込み(一致、上下などの条件)を行う。

google analytics には filterという名前の、データを絞ったり、データの文字列を置換する機能がある。しかし、filter は ipでの除外やdomain,direcotryでのデータ振り分けに使う用途と思われる。

通常のデータ振り分けには、アドバンスフィルターを使う方が柔軟なデータ分析ができる。

なので、使っておくと良い機能。

データの比較(セグメント間)の為のもので、複数のセグメントで、レポートが表示される。

下の例は、全体、conversion,  organic(検索エンジン)といった数字を同時に見ている。

image

デフォルトのセグメントとして

全セッション、新規ユーザー、リピーター、有料のトラフィック、無料のトラフィック、検索トラフィック、ノーレファラー、参照トラフィック、コンバージョンがしたセッション、iphoneからのセッション、直帰以外のセッション

と、ユーザー、トラッフィク、コンバージョン、デバイス、行動などの点から有用?と思われるデータ分け(セッションの)をしている。

image

カスタムセグメントも作成でき、

image

こんな感じで、ディメンジョンや指標を選択し、その値の上下や同値を比較してデータをfilterする。複数の条件が設定可能で、ORでもANDでも条件の重ね合わせが出来る。ディメンジョンだけでもOK(上の図は、セッションの継続時間>1000, direct以外の流入の二つのディメンジョン。)

条件を設定したら、通常のレポート表示画面に戻って、データを咀嚼する。

image

いずれにせよ、データが少ない。

意味のあるデータが取れたら、画像を乗せなくなるのかもしれないけど。