[追記しました@20131117]
[追記しました@20131019]
最近、ちょっとブックマークレットやChrome拡張にハマッてますが、ついでにひとつ便利ツール(?)を作成しましたので、ここで公開します。
ブログやサイトの運営者の悩みはここから始まる!?
全世界のブログやサイトの運営者は、最近のビッグデータの話題もあり、自分のブログやサイトの利用分析をしています。逆に利用分析をしていないブログやサイトは、利用者のメリットを最大化できる強力なデータを取得できるにもかかわらず有効活用していないということでしょうか。
ブログやサイトの利用分析の最も強力なもののひとつがグーグルのGoogleAnalytics(以下GA)です。GAはサイト訪問の頻度や利用者のブラウザ種類などをサイト運営者にレポートしてくれます。サイト運営者はそのレポートを元に利用者のメリットを最大化するための施策を打ちます。
自サイトへの運営者や運営スタッフのアクセスはカウントしたくない!
こういった利用目的があるので、サイト訪問の頻度などはできるだけ正確に知りたいですよね。そうすると自サイトへの運営者や運営スタッフのアクセスはできるだけ無視できるようにしたい。一方でサイト運営するためのメンテナンスは大変なもので、結構な頻度でアクセスするしかありません。
サイト管理者ならご存知の方が殆どだと推察しますが、PCに特殊な設定を施すだけでそのPCからサイトへのアクセス情報をGAが無視してくれます。例えば、GoogleAnalytics Opt-Outというプラグインがあります(ChromeならChrome拡張)。
スマホ対応のブラウザにはOpt-Outプラグインが適用できない!
ところが、iPhoneやAndroidといったスマホにプレインストールされている、もしくは購入後にインストールして使うブラウザには、こうしたプラグインが使えない場合が殆どです。実際私が主に使っているiOS用ChromeもChrome for mobileも例外ではなくOpt-Out拡張機能がスマホでは設定できません。
これで何が困るかというと、スマホで自サイトにアクセスしてしまうとGAのアクセス対象になってしまい、それが分析結果に影響し、効果的な対策が打ちにくくなる、ということです。
そこで、スマホでもこうしたことへの解決策はないか調べ、コードを実装し、検証してみました。
解決のヒントはGoogleのサイトに!
するとありました。まるで、コロンブスの卵ですね。
最初、上記の(Chrome拡張や)プラグインと同じようなOpt-Out用コードを準備しておき、AndroidのWebVIewを使って、ターゲットのサイトを呼び出す寸前にコード挿入してやる、なんてややこしいことを考えていましたが、実はもっと簡単に実現できることがわかりました。
ヒントは、
Tracking Basics (Asynchronous Syntax) – Google Analytics — Google Developers
にありました。
たったひとつのWindow変数をGAのコードの実行前に設定すればいい、というものです。
具体的には、
window['ga-disable-UA-123456-1'] = true;
を設定する。これだけです。
具体的には集計対象ページに挿入していた従来のGA用コードを
var gaProperty = 'UA-123456-1'; var disableStr = 'ga-disable-' + gaProperty; if (document.cookie.indexOf(disableStr + '=true') > -1) { window[disableStr] = true; } var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-123456-1']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'https://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })();
に書き換えます。
このコードの後半部分はサイト管理者であれば馴染み深いものだと思います。前半部分にある、window変数の設定が重要なのですが、ここにはサイトやブログのコードをいちいち変えずにcookieの設定だけでwindow変数の設定を有効にしたり無効にしたりするテクニックが仕込まれています。
有効/無効のコントロールコマンドはブックマークレットに登録
Opt-Outを有効にするブックマークレットの例
javascript:(function(){document.cookie=disableStr+'=true;expires=Tue,1-Jan-2030 00:00:00 UTC;path=/';window[disableStr]=true;})()
Opt-Outを無効にするブックマークレットの例
javascript:(function(){document.cookie=disableStr+'=true;expires=Fri,31-Dec-1999 23:59:59 UTC;path=/';window[disableStr]=false;})()
これらをスマホのブックマークバー等に登録しておけばスマホ毎に簡単に「有効/無効」を切り替えることができ、元々のサイトのコードには触る必要がありません。
これで思う存分スマホで自サイトをいろいろいじくることができます
[追記:20131019]
AndroidアプリのWebView内での実装には、Cookieを有効にして変数をセットしてあげる必要がありますね。
また、iPhoneやiPadなどiOS系のSafariブラウザでも本ブックマークレットにより制御は応用可能です。ただし、ブックマーク時に「ホーム画面に追加」で作成すると、同じURLにアクセスするものでもSafariブラウザとは異なるCookieになるようです。「ホーム画面に追加」されたアイコン起動の場合ブックマークレットが使えない(ような?)ので、ご注意ください。現在のところ解決策や回避策は不明です。
[追記:20131117]
上記ブックマークレットを使用する場合、GoogleのChromeブラウザの場合、PC版だとターゲットなるページを出しておき登録したブックマークレットを選択すれば済みますが、AndroidOS系やiOS系のスマホのChromeブラウザではそう簡単ではないようです。ターゲットなるページを出したまま登録したブックマークレットを選択する芸当が使えないのですね。その場合には、オムニバー(URLを指定するところ)に登録ブックマークレット名を入れるとopt-out用のブックマークが現れますのでそれを選択すればよいようです。
お世話になったリンク
Tracking Basics (Asynchronous Syntax) – Google Analytics — Google Developers
以上です。