※2011-01-12:FAQ2件、追記しました。
au、SOFTBANK機種名も表示できます。
昨年から、マルチデバイス対応を進めてきましたが、ようやく形になりましたので、公開します。なお、この手法はGoogle公開のga.phpをhackしていますので、あくまで自己責任で。
この記事の目次
1.Google Analytics for Mobile Hack の特徴
本改造により、グーグルアナリティクスで以下の携帯アクセス解析が出来るようになります。・・・というか、現在のGoogle Analytics 携帯版では出来ないんですね。
・SOFTBANK機種名取得
・auデバイス名/機種名変換
(現在取れている機種名はデバイスIDで商品名とは違う)
・ページタイトル取得 ※参考URL手法により
・Android機種名取得
・iPad、iPhone、iPodTouchのOSバージョン (not set) を修正
・iPhone、AndroidのOperaMini対応(UAが変わる)
・Androidタブレットなど新分類を追加
以上の実装により、計測後はアドバンス セグメントで、タブレット端末の絞り込みが出来るようになります(今まではiPadとGalaxyTabなどAndroidタブレットとの混在分析は不可能でした)。
一方、デメリットとして今回はホスト名と画面の色深度の値を犠牲にしています。その項目に取得した機種名や、分類を入れることで実現をしています。したがって、それらが解析上重要な指標である方は、決して本手法は真似しないで下さい。
2.携帯トラッキングの準備物
・Google提供のga.php
https://ssl.gstatic.com/analytics/20101130/mobile/ga.php
以下のエントリーを事前に読んでおくと良いでしょう(参考にさせて頂きました、ありがとうございます)。なお、ページタイトル取得等は以下をご参照下さい。
・トラッキング コードのトラブルシューティング – Google Analytics – Google Code
・eクッキー(cookie) – Google Analytics Wiki
・Google Analyticsでアンドロイド(Android)の機種名を取得 | 晄夏ノート -hicage no oto-
・携帯でアクセスするとga.phpから出力される1×1の画像がリンク切れ表示になる – ウェブマスター 公式ヘルプフォーラム
・Google Analytics for Mobile(携帯用)でページタイトル取得 | 晄夏ノート -hicage no oto-
・PakuReserve( パクレゼルヴ ) R&D Laboratory » Google Analytics を携帯から使う
・PHP:au携帯のデバイスIDと機種名称(モデル名)のリストを配列で作ってみました KAKIMASSE
・KDDI au: そのほかの技術情報 > ユーザーエージェント
・まだ実端末持っていないけどAndroid端末のUser-Agentは得られるのだ « 色々やってみてはみる
3.モバイル計測のソースコード
ga.phpに以下のコードを追加し設置して下さい。131行目の$account = $_GET[“utmac”];にまず追加します(コード1)。
// au デバイスID>機種名 10-12-30現在 $aulist = array( "CA3J"=>"CA006","TS3W"=>"XRAY_iida","SN3R"=>"URBANO_MOND" ,"KC3Z"=>"K006","SH3I"=>"SH008","TS3S"=>"T004" ,"CA3H"=>"CA005","CA3I"=>"GzOne_TYPEX","SN3Q"=>"S005" ,"KC41"=>"K006_noncamera","TS3U"=>"LIGHT POOL_iida","SN3O"=>"S003" ,"SN3P"=>"S004","SH3H"=>"SH007","SH3K"=>"SH010" ,"TS3V"=>"T005","SH3J"=>"SH009","KC3Y"=>"K005" ,"KC3X"=>"SA002","HI3H"=>"beskey","KC3W"=>"mamorino" ,"SH3G"=>"SH006","KC3V"=>"lotta[iida]","KC3U"=>"K004" ,"SN3N"=>"URBANO BARONE","SH3F"=>"SH005","SN3L"=>"BRAVIAR_Phone_U1" ,"SH3E"=>"SH004","KC3S"=>"PRISMOID_iida","TS3R"=>"T003" ,"SH3D"=>"SH003","CA3G"=>"CA004","SN3M"=>"S002" ,"KC3R"=>"SA001","CA3F"=>"CA003","TS3Q"=>"PLY_iida" ,"KC3P"=>"K003","HI3G"=>"Mobile_Hi_Vision_CAM_Wooo","KC3Q"=>"misora_iida" ,"TS3O"=>"biblio","TS3P"=>"T002","SH3B"=>"SH002" ,"KC3O"=>"K002","SH3C"=>"Sportio_waterbeat","CA3E"=>"CA002" ,"SN3K"=>"G9_iida","SN3J"=>"S001","PT35"=>"NS02" ,"MA35"=>"P001","TS3N"=>"T001","HI3F"=>"H001" ,"SH38"=>"SH001","CA3D"=>"CA001","SN3I"=>"Premier3" ,"KC3N"=>"NS01","KC3M"=>"K001","SN3H"=>"Xmini" ,"HI3E"=>"W63H","TS3M"=>"W65T","CA3C"=>"W63CA" ,"SH37"=>"W64SH","KC3I"=>"W65K","SN3G"=>"W64S" ,"MA34"=>"W62P","TS3L"=>"W64T","KC3K"=>"W63K_noncamera" ,"SH36"=>"URBANO","PT34"=>"W62PT","SA3E"=>"W64SA" ,"CA3B"=>"W62CA","HI3D"=>"W62H","SH35"=>"W62SH" ,"SN3F"=>"re","KC3H"=>"W63K","TS3K"=>"Sportio" ,"TS3J"=>"W62T","SA3D"=>"W63SA","KC3G"=>"W62K" ,"SN3D"=>"W61S","SA3C"=>"W61SA","SN3E"=>"W62S" ,"TS3I"=>"W61T","HI3C"=>"W61H","ST34"=>"W62SA" ,"PT33"=>"W61PT","MA33"=>"W61P","CA3A"=>"W61CA" ,"KC3D"=>"W61K","SA3B"=>"W54SA","SH34"=>"W61SH" ,"SN3C"=>"W54S","TS3H"=>"W56T","TS3G"=>"W55T" ,"HI3B"=>"W53H","KC3B"=>"W53K_W64K","ST33"=>"INFOBAR2" ,"KC3E"=>"W44K_noncamera","SN3B"=>"W53S","CA39"=>"W53CA" ,"ST32"=>"W53SA","TS3E"=>"W54T","SH33"=>"W52SH" ,"CA38"=>"W52CA","MA32"=>"W52P","SN3A"=>"W52S" ,"TS3D"=>"W53T","SA3A"=>"W52SA","HI3A"=>"W52H" ,"KC3A"=>"MEDIA SKIN","SH32"=>"W51SH","SN39"=>"W51S" ,"TS3C"=>"W52T","TS3B"=>"W51T","SA39"=>"W51SA" ,"HI39"=>"W51H","CA37"=>"W51CA","MA31"=>"W51P" ,"KC39"=>"W51K","TS39"=>"DRAPE","TS3A"=>"W47T" ,"SN38"=>"W44S","KC38"=>"W44K_K II","SA38"=>"W43SA" ,"TS38"=>"W45T","CA35"=>"W43CA","HI38"=>"W43H_H_II" ,"SN37"=>"W43S","KC37"=>"W43K","ST31"=>"W42SA" ,"SH31"=>"W41SH","CA34"=>"W42CA","HI37"=>"W42H" ,"TS37"=>"W44T_II_III","TS35"=>"neon","TS36"=>"W43T" ,"SN36"=>"W42S","KC36"=>"W42K","KC35"=>"W41K" ,"SA36"=>"W41SA","TS34"=>"W41T","HI36"=>"W41H" ,"CA33"=>"W41CA","SN34"=>"W41S","HI34"=>"PENCK" ,"SA35"=>"W33SA_SA II","TS33"=>"W32T","SA34"=>"W32SA" ,"KC34"=>"W32K","HI35"=>"W32H","SN33/SN35"=>"W32S" ,"CA32"=>"W31CA","TS32"=>"W31T","SN32"=>"W31S" ,"KC33"=>"W31K_II","SA33"=>"W31SA_II","SA32"=>"W22SA" ,"HI33"=>"W22H","CA31"=>"W21CA_II","TS31"=>"W21T" ,"SA31"=>"W21SA","SN31"=>"W21S","KC32"=>"W21K" ,"HI32"=>"W21H","KC31"=>"W11K","HI31"=>"W11H" ,"TS3T"=>"E08T","KC3T"=>"E07K","SH3A"=>"E06SH" ,"SH39"=>"E05SH","CA36"=>"E03CA","SA37"=>"E02SA" ,"ST2C"=>"Sweets_cute","ST29"=>"Sweets_pure","CA28"=>"GzOne_TYPER" ,"ST26"=>"Sweets","ST25"=>"talby","ST22"=>"INFOBAR" ,"TS2E"=>"A5529T","KC2A"=>"A5528K","SA2A"=>"A5527SA" ,"KC29"=>"A5526K","ST2D"=>"A5525SA","TS2D"=>"A5523T" ,"SA29"=>"A5522SA","KC28"=>"A5521K","ST2A"=>"A5520SA_II" ,"ST28"=>"A5518SA","TS2C"=>"A5517T","TS2B"=>"A5516T" ,"KC27"=>"A5515K","ST27"=>"A5514SA","CA27"=>"A5512CA" ,"TS2A"=>"A5511T","TS29"=>"A5509T","ST24"=>"A5507SA" ,"TS28"=>"A5506T","SA27"=>"A5505SA","TS27"=>"A5504T" ,"SA26"=>"A5503SA","KC24/KC25"=>"A5502K","TS26"=>"A5501T" ,"CA26"=>"A5407CA","CA25"=>"A5406CA","ST23"=>"A5405SA" ,"SN25"=>"A5404S","CA24"=>"A5403CA","SN24"=>"A5402S" ,"CA23"=>"A5401CA II","CA23"=>"A5401CA","ST21"=>"A5306ST" ,"KC22"=>"A5305K","TS24"=>"A5304T","HI24"=>"A5303H II" ,"HI23"=>"A5303H","CA22"=>"A5302CA","TS23"=>"A5301T" ,"SA22"=>"A3015SA","PT23"=>"A1407PT","PT22"=>"A1406PT" ,"PT21"=>"A1405PT","SN29"=>"A1404S_II","KC26"=>"A1403K" ,"SN27"=>"A1402S_II","SN28"=>"A1402S_II_noncamera","SN26"=>"A1402S" ,"KC23"=>"A1401K","SA28"=>"A1305SA","TS25"=>"A1304T_II" ,"TS25"=>"A1304T","TS25"=>"A1304T_noncamera","SA25"=>"A1303SA" ,"SA24"=>"A1302SA","SN23"=>"A1301S","KC26"=>"B01K" ,"SN21"=>"A3014S","TS22"=>"A3013T","CA21"=>"A3012CA" ,"SA21"=>"A3011SA","SN22"=>"A1101S","TS21"=>"C5001T" ,"MA21"=>"C3003P","KC21"=>"C3002K","HI21"=>"C3001H" ); $ua = $userAgent; $aa = array("/","+","(",")",";","KDDI-"); $bb = array(" "," "," "," "," ",""); $cc = str_replace($aa, $bb, $ua); $a1 = spliti( " " , $cc ); if(strpos($ua,"iPod")) { $ua1 = $a1[3]; $ua2="iPhone";} elseif(strpos($ua,"iPad")) { $ua1 = $a1[3]; $ua2 = "Tablet";} elseif(strpos($a,"Mini")) { $ua1 = $a1[6]; if(strpos($_SERVER['HTTP_X_OPERAMINI_PHONE_UA'],"iPhone")){$ua2 = "iPhone";} elseif(strpos($_SERVER['HTTP_X_OPERAMINI_PHONE_UA'],"Android")){$ua2 = "Android";} else{$ua2 = "Other";} } elseif(strpos($a,"MSIEMobile")) { $ua1 = $a1[17]; $ua2 = "Windows_Mobile";} elseif(strpos($ua,"001DL")) { $ua1 = $a1[12]; $ua2 = "Tablet";} elseif(strpos($ua,"TOSHIBA_AC_AND_AZ")) { $ua1 = $a1[12]; $ua2 = "Tablet";} elseif(strpos($ua,"SH-10B")) { $ua1 = $a1[12]; $ua2 ="Tablet"; } elseif(strpos($ua,"IS01")) { $ua1 = $a1[12]; $ua2 = "Tablet";} elseif(strpos($ua,"SC-01C")) { $ua1 = $a1[12]; $ua2 = "Tablet";} elseif(strpos($ua,"N08B")) { $ua1 = $a1[3]; $ua2 ="Tablet";} elseif(strpos($ua,"SH03B")) { $ua1 = $a1[2]; $ua2 = "Tablet"; } elseif(strpos($ua,"Berry")) { $ua1 = $a1[0]; $ua2 ="Other"; } elseif(strpos($ua,"HT-03A")) { $ua1 = $a1[13]; $ua2 = "NTT_Docomo";} elseif(strpos($ua,"Android")) { $ua1 = $a1[12]; $ua2 = "Android";} elseif(strpos($ua,"DDI")) { $ua1 = $aulist[$a1[0]]; $ua2 = "EZweb_Device";} elseif(strpos($ua,"oftBank")) { $ua1 = $a1[2]; $ua2 = "SoftBank";} elseif(strpos($ua,"oCoMo")) { $ua1 = $a1[2]; $ua2 = "NTT_DoCoMo";} elseif(strpos($ua,"iPhone")) { $ua1 = $a1[10]; $ua2 ="iPhone"; } else{ $ua1 = $ua; $ua2 ="(unKwon)"; }
それから、166行目あたりの「”&utmhn=” . urlencode($domainName) .」を、以下(コード2)のように修正&追加(※この修正でホスト名、画面の色深度が取得出来なくなるので注意!)。
"&utmhn=" . urlencode($ua1) . "&utmsc=" . urlencode($ua2) .
実際には、こんな感じにしています。画像では、いちおうUSERAGENTまるまる取得する記述も入れています。
これで、トップ画像のようにau機種名が変換されるなど、タブレット・モバイルおおよその国内流通端末の機種名取得が出来るようになります。
4.応用編〜アドバンス セグメントやOSのバージョンにちゃんと表記させる
1.従来通りOSのバージョンに表示させる
カスタムフィルタを使い、OSのバージョンに転記しましょう。以下に、タブレット端末と思われる機種名を正規表現で示します(|は「または」という意味です。勿論正規表現でなくともアドバンス セグメントで複数端末名を設定してもOKです)。
SC-01C|iPad|TOSHIBA_AC_AND_AZ|001DL|IS01|N08B|SH03B
(左から、ギャラクシータブ、iPad、ダイナブックAZ、IS01、NECの小型PCみたいな端末、LYNX)
こんな感じに表示されます。わーい。
2.カスタムフィルターで転記する
以前紹介しましたように、別途プロファイルを作っておき(原本のプロファイルはとっておきましょう!)、そこで、ホスト名からOSのバージョンに転記するカスタムフィルタを作っておけば大丈夫です。
このように、Google Analytics のモバイル>携帯端末から一覧出来ます。
なお、セカンダリーディメンションを拡張するのに、以下をブラウザに組み込んでいます。
5.携帯アクセス解析HackのFAQ
Q: 負荷高いんじゃないの?
A: 当サイトが携帯アクセス少ないせいもありますが、WP自体の動的ページ生成よりは負荷は少ないと思います。以下に、昨日ブックマークされアクセス増したときのCPU、メモリー状況を掲げます。目立った負荷にはなってないと感じます。
Q: 面倒なんだけど・・・。
A: 修正箇所は2箇所だけです。用途に合わせて上記カスタムフィルターやアドバンス セグメントを使用すると良いでしょう。ライブラリ化できれば理想なのですが、現状では修正に留まっています。
Q: どうしてユーザー定義やカスタム変数に代入しなかったの?
A: 私がわからなかったこととw、トラッキング精度により判断。
まずユーザー定義ですが、グーグルアナリティクス公式のヘルプを見ますと、これは廃止が決定しています。したがって、まず除外しました。
トラッキング コード: 基本設定 – Google Analytics – Google Code
カスタム変数ですが、当方の環境だけかもしれませんが、どうも計測反映が1〜2日遅れます。あとカスタムフィルタにその項目が無いので、後々使い辛いと判断しました。
Q: ホスト名は重要指標なんだけど・・・
A: ホスト名・画面の色以外でも、代入が可能です。
当方で確認しているのは、フラッシュのバージョン(utmfl)、画面の解像度(utmsr)、ブラウザ言語(utmul)、です。ソース中のutmhnやutm何とかを変えてみて下さい。本来はキャンペーンまわりのcookieを使うのが良いのかもしれません。たまたま当方であまり活用していなかった項目がそれらだった、というだけです。
Q: PHP版しか無いの?
A: すみません、PHP版しか対応していません。実際のテストはWordPress&ktai-styleで行いました。
Q: うまく動かないんだけど・・・
A: 問題を切り分け、以下をお試し下さい。
・そもそも、携帯トラッキングが出来ていない(とくに以下エントリー中にあります「ga.phpに直接アクセス」はぜひお試し下さい)>>
携帯版Google Analytics設置でよくあるつまづき5つ | カグア!
ゼロから学ぶGoogle Analytics 携帯版 | カグア!
・モバイル計測は出来ているが、思った通りの値になっていない>>
ソースコード中の半角文字やくぉてーションの閉じ忘れ等、コード中の不備をチェックして下さい。
また、新しい端末や当方で未知の機種名はUSERAGENTからの抽出にうまくイカナイ場合があります。そのときは@kagua_bizまでご報告頂けるとありがたいです。
Q: とりあえず機種名だけ取れればいいんだけど。
A: tabletなどの分類をカットしましょう。$ua2という変数です。
ソース中の$ua2に絡む部分を削除して下さい。とりあえず、機種名のみ取得となり犠牲にする項目を減らせます。分析するときだけ、上記アドバンス セグメントでタブレットのみに絞り込むと良いでしょう。
Q: タブレット分類って?
A: iPadのみならず、auのIS01など横幅が広くPCサイト閲覧に適していると思われる端末を、そう分類しています。
iPad以外では、以下の端末をtablet分類しています。今後もAndroidタブレットは増えてくると思われますので、定期的に見直していきたいと考えています。
・ドコモ Galaxy Tab(Android)、N08B、SH03B、LYNX
・au IS01
・SOFTBANK デル・ストリーク
・TOSHIBA ダイナブックAZ(Androidノートブック)
Q: auの機種名が微妙に違うんだけど・・・
A: グーグルアナリティクスで使用不可の文字を置換しているからです。
Google Analytics では「半角スペース」を自動的に「+」に置き換えるなど、独特の仕様があります。そのため、リスクがあると思われる特殊文字などは当方の判断で、元の機種名を損なわない程度に修正しています。
Q: 今後の開発予定は?
A: au機種名とタブレットまわりを追跡していく予定です。
勿論、Google Analytics 公式のVUPも定期チェックしていくつもりです。ご質問などは@kagua_bizまでお気軽にどうぞ。
最後に:マルチデバイス時代に向けてアクセス解析に思うこと〜CVもマルチデバイス対応を確認しよう
CESでも続々と新型Androidタブレットが発表されてますね。タブレット端末はまだまだ増えそうですねえ。
[CES2011]Googleがタブレット端末向けの「Android 3.0」のUIを公開 – ニュース:ITpro
Insight for WebAnalytics: 米タブレットPC売上、2011年は倍増の2,410万台に
アップルも今年はiPad2でしたっけ?携帯を含め、私たちの身の回りに、ますますビューワーが増えていきそうですね。
そういえば週末、近所のPCショップでも、高校生とお母さん、そして別コーナーでも息子と父親、といった人がiPadを前に相談している風景を見かけました。初めてのPCがタブレットになるんでしょうか。カメラ付きであれば、ブログ更新くらいなら出来そうですよね。ガラケーなどでも端末ごとに検索キーワードにも特徴が見られるなど、それぞれ訪問者のニーズも細分化してくるかも。
昨年、マルチデバイス対応をして、ホント新たな発見ばかりです。中でも危機感をもったことは、コンバージョンもきちんとマルチデバイス対応しているか、です。
申し込みフォームやCV手前のページ等がガラケー、タブレット最適化されてないと・・・。恐いですね。
勿論、ひとつのプロファイルで何でもかんでも見るのがいいのか、という議論もありますが、今回は挑戦ということでいろいろとやってみました。完成までにいろいろな方にTwitterなどで教えて頂きました!この場を借りてお礼申し上げます。
新トラッキングコードもひっそりとトライアウトされてるみたいですね。公開が待ち遠しい。
Chrome紹介ページに隠された、イケてるHTMLコーディングテクニックとGAの最新版コードみたいなの – Web Analytics Latte
2011年も、当ブログはGoogle Analytics 愛でいきますよ〜。
ではでは。
ソフトバンククリエイティブ
売り上げランキング: 426980