Windows版 の Data Feed Query Explorer

これは、昔作ったGAのデータ抽出ツールで、新しくつくりなおしたものは、
自作ツールの紹介になります。こちらをお使い下さい(あと、windows xpだと動かないかも、、、)

Data-Feeds-Query-Explorer-in-windows-application

Google Analyticsの Data Export APIからデータを引っ張るソフトを作った。

Visual Studio 2008 express editionのPublish機能を使って、パッケージ化した。.Net Framework 3.1 SP が必要。ただ、SetUp中にDownloadされるはず。

作った動機

1. なぜか、web上の Data Feed Query Explorer で、日本語が文字化けするようになった。 フォーラムに投稿したけど、英語力の問題もあって、上手くasset出来なかった

2. .NETの ライブラリーが更新されたのとのニュースがあった。

ので、今まで、ruby や pythonapps script で やってたけど、GUIで使えるソフトにも挑戦しようとして、やってみた。 ちなみに、windowsソフト( visual Studioを使って作る)のは、ほぼ初めてなので、UI、機能、エラー処理とかは、プリミティブです。検索や2chなどを見ながら、コピペなどをしながら作ったものです。

出来ないこと

Data Feeds の方のデータを引っ張ってこれるようにしただけです。 Account Feedsの方は、profileを引っ張れるだけです。本当は、Account Feedsの方で、ゴールの設定やら カスタム変数、アドバンスセグメントの設定などが、引っ張れるれのですが、やってません。

できる事は、profileIDを指定して、そのprofileのデータを取得するだけです。 用途としては、データをコピーして、エクセルに貼り付けるといいと思います。(unicodeテキストの貼付けを選ぶと文字化けしないはずです)

注意

Data Export APIの制限に注意して下さい。たくさん使うと制限に引っかかるようです。

あと、Dimensionは7つ、Metricsは10が一度に取れる上限項目数です。また、Dimension, Metircsの組み合わせで、データ取得不可のものがあります。これらの場合は、このソフトの上のテキストボックスにある、Error Messageに、そのようなメーセージが出るはずです。

僕の事を悪意を持ってない人だと信頼できて、ソフトの不出来を許容できる方に使ってもらうのが望ましいです。ただ、いろいろ感想を言ってもらえれば、改善へのモチベーションになるので、なにかあれば、@phar までおっしゃって下さい。

使い方

メールアドレスとパスワードを入れて、GetProfiles ボタンを押すと、自分の管理・閲覧できるprofilesがでます。

その後で、データが欲しいProfileのIDをクリックして、選択した状態にして、getDataを押すと、データ取得です。 下の GridDataViewという所にデータが出力されます。 後は、全選択してコピーして、エクセルで、形式を選択して貼付け- unicodeテキストでの貼付け を選ぶと、日本語の問題なくペーストできると思います。

あと、記録するにcheckを入れると、メールアドレスとパスワードを保存します。逆に、空欄にしてからcheckを入れれば、以前に記憶されたものが、空白で上書き(消去)されます。

実際に使っているキャプチャーは、wikiの方に上げるつもりです。

trackEventとpageViews、bounceRateの関係

Google Analytics(GA)でのtrackEventの使用は、PageviewsとBounceRateに変化を与える。その影響についての理解と疑問を書きます。

直帰率とEventTrackの関係で理解の混乱が起こっている。

http://padicode.com/blog/analytics/the-real-bounce-rate/ この記事で、10秒以上ページが開かれていれば、engagementとして、BounceRateの集計から外す提案・コードの紹介があった。さらに、この記事ではPageviewsの数値は、TrackEventの影響を受けないと記述されており、グラフも付けられている。しかし、、、

実際に試してみると、pageviewsの数値にtrackEventが加わってるように見える

また、計測のためのコードの書き方に依存して、出る数値が異なってくる。pageviews=(trackPageviewの行使数+ユニークイベント数何かのイベント数?(上限が1?))のような気もするが、はっきり分からない。

* ユニークイベント数は、カテゴリー+アクションで分類されるイベントの種類数。labelの違いはユニークを産まない。記述自体は間違ってないようだけど、話の筋とは関係ないですね。

下図は、僕のレポート(昔のだけど、10秒後にeventを出すようにしてた頃とその前のものを比較)1ページビューがほとんどのサイトだったのが、2ページビューがほとんどになってしまった。

image

googleの説明を探す

BounceRateは、gifリクエストが一つしか発行されなかったvisit(session) という解説もある。

pageviewは、あるディメンジョンに沿って集計されたpageview数という循環説明で不満が残る。

よくわからない、、、

昨年来から、いろいろ悩んできたんだけど、上手く書けないし、先に進む為にもとりあえず、この件は一旦忘れる事にします。疑問は棚上げ。

ちなみに、セッションの滞在時間は、pageviewsの時間間隔を足し上げた時間量指標と思われる。なので、pageviewsという指標(eventの取り扱い)がはっきりしないと、ぼんやりとしたイメージしか浮かんでこない、、、orz.   そして、その平均である平均滞在時間もぼんやりとなる。さらに、直帰のものは抜くという仕様らしい。(過去には違う扱いだったらしい) Googleの肩に乗って生活してるけど、この辺りのごまかし方には不満が溜まる。

サイト及びドメインの移転とGoogle Analtyics

レンタルサーバー選び を日常blogで書いた。

実際の作業では、多少Google Analtyicsの話も書きたいので、こちらに。

引っ越し作業(データ、ファイルの移動)を終えても、いろいろと手続きが残る。

  • webmaster tools, Yahoo SiteExplorerの変更、登録
  • 以前のserverには、301でredirect設定
  • robots.txtの書き換え
  • FeedBurnerを作り直し。(Feedにも更新通知を出しておく)
  • Adwordsの設定替え(放置してるので、放置続行)
  • Adsenseに新規サイトの設定
  • Google カスタム検索の入れ替え
  • wordpressのwidgetで、情報がupdateされてない部分の書き直し
  • Google Analyticsの設定変更、、、

と、いろいろあるんだけど、

実は、最後の Google Analyticsはドメインを変えても、設定を変える必要がないようにも見える。(移転前のドメインも生かしてる、redirectしてる場合)

(2010/01/06)

よく考えたら、cookieは変わってしまうわけで、returnユーザがいなくなってしまう。

データはとれても、継続性に大いに問題ありですね。

ここから下の記述も勘違いした状態での記述になります。

問題は、データの受信の確認の所なんだけど、前のサイトも生きていて、redirectで新規のサイトにリクエストが行くと考えると、データ受信はそのままでもOKなような気がする。 ステータス確認ボタンを押しても、受信マークはそのままだし。

Google Analtyics status

データとしては、下図のようにホスト名のところにデータを送ったドメインが出る。

Google Analtyics hosts

上から、前のドメイン、Googleのキャッシュ、新規のドメイン、209..もgoogleなのでigoogleとかかな。最後は翻訳。

でも、どっかでプロファイルを切り替えるのが妥当な運用方法だろう、そのうちステータスが何か言うかもしれん。

SEOを強化する技術の本は役に立った。情報が薄い分野で、教えてくれる人があまりいない。イチからスタートして、いまだ外野にいる人には有り難い内容。ドメイン、サイト移転でやるべき事が整理された。書いてある手続きを全部はできないけど、頭の中にはindexが張られたような、、、ネットを徘徊するより時間の節約になった。

ただ本の想定読者は、データベースの設計やら、URLの設計などもあり、個人レベルを超える内容。主に企業で運用する人向けの本。Fiddler2もFirebugなんかよりも高機能すぎて戸惑う。

安川 洋¥ 1,890
SEOを強化する技術を詳しく書いた本
クリティカルで「失敗しないSEO」
データベース:1位 (2010.01.01)

GoogleCSE 検索窓と結果の分割表示が可能に

このサイトでも使っているGoogle カスタム検索だけど、いろいろ変化があった。

英語版にすると、こんな感じで、Two Columnで表示できるようになった。

WS000004

今までは、検索ボックス直下に結果が表示されていた。

これで、サイト内での配置の自由度が増すと思う。

このサイトでも、検索ボックスはheader部分、結果はコンテンツ部分に表示するようにした。

効果としては、見た目がすっきりした。

また、情報量が増えてくれば、検索の恩恵も受けやすくなる。

自分でも、過去の記事の検索に便利に使っている。

問題は、サイドバーの情報なんかを拾ってしまうところだけど、

  • サーバーへの負荷がない。
  • 結果表示の速さ。
  • スニペット(検索画面での説明文)の作成表示

という利点を考えると、検索部分も、googleにアウトソースするのが現実的な選択になってきた。

closureの利用を考える

closure_memo_001
javascriptの高度なtopicといえば、closureだと思う。
理解が難しいと思う。カウンターを作ってみた時は感動したけど、なかなか理解が汎化していかない。それで、まとめを書いて見ることにした。
他にも、いろんなサイトを見て回った。
下のコードの例は、上の記事のものと全然違うものもあります。信頼性を求める人は上のリンクを辿って下さい。

setTimeoutでの関数の参照で使う

setTimeoutには、関数オブジェクトの参照か無名関数の定義式を入れる事になっている。setTimeout(ref_func_obj, seconds)

ただ、関数オブジェクトではなく、実行式を書きたい時は多い。fun()といった後ろに () が付く形。

そこで、引数をくるんで、引数なしの関数オブジェクトを返すようにする。org_funcが与えられていた時、引数を定義式の中に組み込んでしまう形のnew_funcを作り(参照させ)、それをsetTimeoutに使う。

Function.prototype.curry = function(arg){
  var self = this;
  return function(){
    self.apply(this, [arg]);
  };
};
var org_func = function(a){
  console.log(a);
};
new_func = org_func.curry("konitiwa");
function a(arg){
  setTimeout(new_func, 2000);
}

こんな感じかな?これをカリー化と言うのはまずいのだろうか?

Functionクラス(Functionオブジェクトのprototype)をOpen Class?するのは汚い方法かもしれないけど、しょうがない。

リンク先の記事では、オブジェクト、メソッド、メソッドへの代入式の3つをclosureして?新しい関数を作っている。

動的に作成したDomのイベントに関数を定義

動的にDomを作るconstructor関数を作ってやる。その時に、イベントでtriggerされる関数をつけてやりたい。でも、その関数の定義は外に出しときたい?(ここら辺、よく分かってない、、、)

オブジェクトとメソッド名を与えると、そのオブジェクト[メソッド名]という関数名(メソッド名)で、イベントと新規に作ったDomオブジェクトを引数に取る関数を作るようにする。

function associateObjWithEvent(obj, methodName){
  return function(e){
    e = e || window.event;
    return obj[methodName](e);
  };
}

これを、Domを作るconstructor関数に組み込む。thisのメソッドという形になる。

function DhtmlObject(elementType, id){
  var el = document.createElement(elementType);
  this.ele = el;
  el.id = id;
  el.innerHTML = "New Div";
  document.body.appendChild(el);
  if(el){
    el.onmouseover = associateObjWithEvent(this, "doMouseOver");
  }
}

そして、インスタンスメソッドとして、doMouseOverを定義すれば、この例だと、mouseoverでtriggerされるeventになる。

DhtmlObject.prototype.doMouseOver = function(event){
  console.log(event, this.ele);
};
//それで、動的にDomを作る(タグ、IDを指定)
new DhtmlObject("div", "divId");

これで、Domを作成する定義式と、イベントが起きた時に実行される関数を分離できた。作ったdomをglobal変数に入れて、ごにょごにょする必要もなくなった。(ここら辺りは、理解が怪しい)

ローカル変数の作成の重複を避ける

関数を呼び出すたびに、その関数のローカル変数を作るのはさけたい。よく例題に出るカウンターの例と同じタイプ。

closureにすれば、そのローカル変数(closureされる変数)は共通化される。

divの中にimgタグをいれる形のdocument.elementを作る。この時に、文字列をinnerHTMLに突っ込む形にする。それで、共通部分をローカル変数に、変わる部分はパラメータとする。

closureを使うべきでない場合

内部関数を作る事による速度低下に気をつける。closureを作ったけど、利用時に、その環境を使わないのなら、closure を作らず、外側で関数を定義しておいて、それをassignしてもよい。

constructor関数内で、this.method1 = function(){….}と定義して、closureを作るのは、呼び出し回数が少ない場合に限定する。そのconstructorが何回も使われるものであれば、AConstructor.prototype.method1 = function(){….}と、constuctor関数の外で、定義していく。

wordpressにCSE。iframe編

このサイト(wordpressで作ってる)に、google custom search engineを組み込んだ。

pluginもいろいろあるようだけど、一度scratchで入れてみたいと思って調べてみた。参考サイト

参考サイトが書かれた時点では、結果を自分のサイト内で表示するものとして、iframeを使うパターンと、oevrlay(現在は web element)を使うパターンが用意されている。(サイト外での表示、google上での結果表示のパターンもある。これで特に不便ということはないかもしれない)

今回は、まずiframeを使うパターンをやってみる。(参考サイトもその形)

googleでの設定、フォームの設置、検索結果ページの設置の三段階。

まず、google の機能を使うので、当然ながらgoogleに行く。設定をする。

1google での設定

最初に名前やらを入れる。

image

control panelで設定をする。

indexで、on-demand indexができるようなので、設定する

左側に、いろいろ設定項目がある。indexingとかの項目もあるけど、今度検討することにする。

Get Codeを選んで、貼り付けるコードを作る。

WS000001

2.フォームを自分のサイトに貼り付け。

googleの設定画面で出来たコードを、

/テーマディレクトリ/forms/search.phpの該当コードと入れ替え。

 <div id="content">
   <!-- Google CSE Search Box Begins  -->
 <form action=" //abc-analytics.com/gsearch" id="cse-search-box">
   <div>
     <input type="hidden" name="cx" value="009712234193368133902:ejtrmhlu9sk" />
     <input type="hidden" name="cof" value="FORID:10" />
     <input type="hidden" name="ie" value="UTF-8" />
     <input type="text" name="q" size="31" />
     <input type="submit" name="sa" value="検索" />
   </div>
</form>
<script type="text/javascript" src="http://www.google.com/cse/brand?form=cse-search-box&lang=ja"></scri
    pt>
 <!-- Google CSE Search Box Ends -->

3.検索結果表示ページを作る。

新規に、gsearchというページを作る。(これは、管理画面からぺージ作成画面に行き、通常の投稿のように、HTMLを入れて作成。

<div id="cse-search-results"></div>
<script type="text/javascript">
  var googleSearchIframeName = "cse-search-results";
  var googleSearchFormName = "cse-search-box";
  var googleSearchFrameWidth = 600;
  var googleSearchDomain = "www.google.com";
  var googleSearchPath = "/cse";
</script>
<script type="text/javascript" src="http://www.google.com/afsonline/show_afs_search.js"></script>

結果は、こんな感じ。

image

(現在は、web elementsを利用した検索にしています。ページ上部にある検索窓を利用してください)

検索のURLは、//abc-analytics.com/gsearch?cx=009712234193368133902:ejtrmhlu9sk&cof=FORID:10&ie=UTF-8&q=python&sa=検索

cxは、作ったカスタム検索のIDみたいなもの。cofが表示数で、qが検索ワード。最後のsa=検索の意味することはよく分かりません。

僕のサイトが重いせいか、wordpress組込の検索より、スピードも早い!(もちろん、googleにコンテンツがindexされているのが、前提になる)

問題は、検索結果表示が、コンテンツ表示幅の510pxを超えてしまっている事。ユーザーに易しくない。ページ表示の時は、widgetを表示しないようにしたい。(ちょっと手間取ったので、今回は省略)

google に sidebarにあるfriendfeedなどの表示コンテンツもindexされてしまっていたので、sidebar 部分にno-followを付けたいのだが、noindexはページ単位にしか適用されない。回避方法は、見つかっていない。組込みの検索であれば、sidebarのコンテンツが掛かることはない。

googleを使うdrawbackはこの辺り。googleへのindexでの、how, when, whatなどをきちんと把握する必要があるかもしれないけど、表示速度による利便性のがポイント高い。

次は、web elementsを利用した形態を試す

羽田のD滑走路に見学に行ってきた。

アクセス解析とは関係なしで。

gview

http://docs.google.com/fileview?id=0B6kZxQAjlXMGMDlkZTE3ZDAtZTIyOC00ZDM4LWI2MzQtMzNlNGU0YzY1ZmE3&hl=en

来年の10月に運用が始めるらしい。

来年の夏に、一般の人が滑走路を見学する機会があるかもと、説明の人がいっていた。

 

羽田基本数値

1931年 民間飛行場として(日本初は、1911年の所沢)

現在の利用者数(6700万、国際線は180万)

年間発着数 30万(これを41万前後まで)

D滑走路ができる、4つめの滑走路(ちなみに同じくらいの利用者数のヒースローは3つ)

このD滑走路は、3年半の建設期間(24時間3交代で進められてるらしい)

 

D滑走路の特徴

埋め立て部分と桟橋があり、それをくっつけてる。(桟橋方式は太田川流域への水位上昇懸念、浮島方式は環境懸念(光が当たらなくて海が死ぬ)、運用懸念など)

総工費 6000億円(空港特別会計から出てる?)100年滑走路として使える?

 

聞いて、頭に残ってること(記憶間違えあり)

海岸の汚泥?みたいなものを、固定化された土壌にするために、管みたいなのをいれて、水分を吸い上げて、砂などをいれるらしい。

70mの杭を打ち込む。(これで岩盤まで届く、 ここらあたりは活断層はないらしい)

杭をうったあと、ジャケットと呼ばれるものをはめる。 レゴの組み立てみたいな感じ。

埋め立てすると、海は潤う。鉄分などが良い。埋め立ての土は、建設発生土や山からの採取(千葉の方の山)

この展望台は、一応3月で閉鎖予定。10月の運用開始になれば、確実にここら辺りに入れなくなる。

D滑走路の向かい側にケロシンのガスタンクが、できた。以前は、川崎の方から運んでたらしい。

空域がすごい混雑、限界に近い。(横田の問題にもつながる)

 

天気が良く、見晴らしが最高だった。モノレールからの眺めも、おもしろかった。広告が、お土産ものばっかだったのには納得。お土産は包装紙と砂糖で出来ている。