かえラボBlog

かえラボBlogはラナデザインアソシエイツのテクニカルチームが運営する技術系ラボプロジェクトです

RaNa design associates, inc.

Naoki Sekiguchi :: Recent Entries

December 28, 2011

Ajax遷移するページのページビューをGoogle Analyticsで計測する

Category :

Ajaxで他のページを取ってきて、コンテンツをガリガリ書き換えてしまうようなサイトを先日案件で作ったのですが、従来の方法ではGoogle Analyticsで遷移先のページビューを取得できないことに気づいて、実験を行ってみました。

20111228_googleanalytics.png

実験のために作成したデモがこちらです。

Google Analytics Demo

何をやっているかを解説していきます。

以下のような部分がAjaxでページを書き換える処理の例です。
今回はjQuery 1.7.1を使うことを前提にしてコードを書いています。"ul a"セレクタ(いかにもやっつけですが。。)で選択されたa要素をクリックすると、href属性値で指定されたURLをAjaxリクエストし、その内容で <div id="contents"/> の中身を書き換えちゃうよ、というものです。

$(function() {
    $(document).on('click', 'ul a', function (e) {
        if (this.href) {
            $.ajax(this.href, {
                dataType: 'html',
                success: function(data) {
                    $('#contents').empty().html(data);
                }
            });
        }
        e.preventDefault();
    });
}); 

Google Analyticsの設定を行っていきましょう。
まずはhead要素内で普通にトラッキングコードを埋め込みます。

<script>
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-TRACKINGID']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>

UA-TRACKINGIDの部分は適切なトラッキングIDに置き換えてください。

さて、本題です。
Ajaxで読むページのページビューを取るには、_trackPageview()という機能を使います。リンクをクリックしたイベントをトリガーに、このコードを呼び出してやればOK。
それが以下のコードです。

$(function() {
  $(document).on('click', 'a', function () {
    if (_gaq && this.href) {
      _gaq.push(['_trackPageview', this.href]);
    }
    return true;
  });
});

.on()というメソッドはjQuery 1.7の新機能なので、古いバージョンのjQueryを使わなければいけない場合、.live()とか使えばいいと思います。

$('a').live('click', function() { ...

という感じに。
なお、今回はhref属性値に目的のURLがセットされているのが前提のコードになっています。もし特定のページを計測したい場合、this.hrefの部分は特定の文字列に置き換えても問題ないです。

_gaq.push(['_trackPageview', '/contact/email.html']);

というようになりますね。

リアルタイムレポートでページビューを確認する

Google Analyticsはリアルタイムなレポート機能を実装してきました。ログインして、リニューアルされたUIになっていたら、その機能が使えます。(まだ使えない人はここから申し込めるみたいですね)

20111228_googleanalytics2.jpg

メニューの「リアルタイム」→「コンテンツ」を選択し、ページ中央の「ページビュー数(直前の30分間)」をクリックします。これで、直近30分間のページビュー数をリアルタイムにウォッチしている状態になるので、先ほどのデモなどをいじくってこちらで確認する、ということができます。Ajaxで読むページのURLが、ページビュー数としてカウントされているかどうかを確認しましょう。

弊社は本日が仕事納めです。
今年は震災などがあり大変な年になりましたが、来年はよりよい年となるよう、この場を借りてお祈り申し上げます。
来年もどうぞよろしくお願いいたします。

December 9, 2011

『WebデザイナーのためのjQuery入門』を献本いただきました

Category :

WebデザイナーのためのjQuery入門

出版されたばかりのjQuery本を著者の高津戸さん(@Takazudo)より献本いただきました。ありがとうございます! タイトルの通り、本書はWebデザイナーなどのプログラミング初心者のための本であり、著者曰く

本書は、「自分でコードを書けるようになる人」がひとりでも増えるように配慮して書いたつもりです。

というわけで、非プログラマのjQuery/JavaScript入門書としては強力な一冊となっています。

手にとって思ったのは、とにかく親しみやすい文体と図解でわかりやすく書かれている、ということ。
書籍なので丁寧な文体で書かれてはいますが、文章のもって行き方や言い回し、作例などはユニークで「プログラミングを理解する」という複雑なテーマに挑む読者に対して、著者がとてもフレンドリーに向き合っている印象を受けました。

私はJavaScriptをちゃんと学び始めて4年くらいが経ちますが、私にとっての入門書は「WebクリエイティブのためのDOM Scripting」でした。
当時は今ほどブラウザが優秀ではありませんでしたし、JavaScriptライブラリなどもそれほど強力ではありませんでしたから、本書のようにフレームワークに特化した日本語書籍は当時なかったと記憶しています。しかしもし自分が今JavaScript入門者であったら、まさに本書は読みたい内容であるなあと感じました。

April 7, 2011

RaNa design WEBSITE RENEWAL PROJECTのネタばらし その2

Category :

昨年末に公開したRaNa design WEBSITE RENEWAL PROJECTの舞台裏エントリーその2です。その1の後に読んでいただくとよりお楽しみいただけます。

今回からはJavaScriptの実装についてより深く踏み込んでいきますが、全体のコードは長大なので、要点と思える部分だけ切り取っていく感じでお話できればと思っています。

April 4, 2011

RaNa design WEBSITE RENEWAL PROJECTのネタばらし その1

Category :

昨年末に公開したRaNa design WEBSITE RENEWAL PROJECTですが、どんな仕組みでできているのかネタばらしをしておきたいと思います。

企画とデザイン

サイトのトップが工事現場になって、そこにカエルの作業員が動き回る。Twitterとも連動する、というものでした。
最初に受け取ったデザインはこんな感じ。

Renewal Project ネタばらし その1(1)

February 21, 2011

Android 1.6で背景画像の表示が乱れる現象

Category :

Android 1.6(アップデートしていないExperia等)において、CSS Spriteで設定した画像の表示がボヤーッとボケたようになる現象を確認しました。
結論から言うと、これは背景に指定した画像の縦横サイズが一定以上の大きさになった際に起こります。つまり、縦横が大きすぎる背景画像は正しくロードされないよ、ということです。
検証のためにデモを作成しました。(CSS Spriteではありませんが)

EXPERIA(SO-01B)でのスクリーンショット
EXPERIA(SO-01B)でのスクリーンショット

デモでは以下の4つのサイズのJPEG画像を背景に指定してみました。

  • 768×480px
  • 1024×640px
  • 1280×800px
  • 1680×1050px

EXPERIAのスクリーンショットで分かるように、1680×1050pxではかなり画像が乱れています。仕様書を確認できたわけではないので詳細な仕様は分かりませんが、どうやら縦1000pxを超えた辺りから怪しくなるようです。また雰囲気的に、ファイルサイズは関係ないように思います。

もうお気づきかと思いますが対策はシンプルで、画像の縦横サイズを小さくするだけです。CSS Sprite画像の場合は2つに分割するなどして、ファイル1つ辺りの縦横サイズを小さくします。
EXPERIAなどはAndroid 2.1へのアップデートが公開されていますので、Android 1.6のデバイスはこれから減少していくとは思いますが、auのIS01などは依然Android 1.6のままですのでこれからも検証の際にこのような現象にでくわす機会があるかもしれません。

February 17, 2011

Sassのデフォルトのオプションを変更する(Windows)

Category :

最近ようやくSassを使い始めたわけですが、いちいちコマンドラインでオプションを設定するのがめんどくさい・・・と思い、デフォルトのオプションを変更する方法を試行錯誤してみた結果、できました。

例えば、オプション --style のデフォルトは nested ですが、これを --expanded に変更してみます。
まずディレクトリ C:\Ruby\lib\ruby\gems\1.9.1\gems\haml-3.0.25\lib\sass\plugin にある configuration.rb をテキストエディタで開きます。ディレクトリについてはRubyをインストールしたディレクトリに合わせて各自読み替えてください。

Windows環境でのconfiguration.rbの場所

configuration.rb の末尾に以下のようにオプションを追加し、保存します。

Sass::Plugin.options[:style] = :expanded

configuration.rbを編集する

既にコマンドラインでSassを使っている状況でしたら、一旦シェルを閉じて、再起動しましょう。もうこれで、デフォルトのオプションが変更されています。

以下、参考リンクです。
Windows環境でのSassの導入については@hamashunさんの記事が大変参考になります。

January 25, 2011

タイマー表示のようなものをcanvasで

Category :

特定のものが次々に切り替わっていくコンテンツがあるとして、それぞれに対応したタイマー表示のようなものがあれば切り替わりのタイミングを直感的にユーザーに知らせることができるでしょう。
このタイマー表示を実現するデザインが今回のお題で、「正円の面積が扇形にだんだん減っていく」というもの。これをcanvasを使って実装してみました。

デモ

November 1, 2010

iPhoneに最適化したモーダルウィンドウを表示するjQueryプラグイン

Category :

スマートフォン対応サイトではよく見られるのが、Ajaxによるコンテンツの切り替えです。ページ遷移によるユーザーのストレスを軽減を図る手法として利用されているものと思われます。この手法でたまに見られるのがモーダルウィンドウ(通称Lightbox。モーダルボックスとも呼ばれる)です。

今回はスマートフォン(主にiPhone Safari)に最適化したモーダルウィンドウを表示するjQueryプラグインを作りました。デモや使い方など、詳しくは以下の解説ページにて。

"smartModalWindow" jQuery plugin - 解説ページ

スマートフォン端末ではiPhone 3GS Safari、iPhone 4 Safariで動作確認しています。PCのブラウザでも動作しますが、WebKit系以外はアニメーションしません。

October 1, 2010

デモを埋め込むためのシンプルなjQueryプラグイン

Category :

iframe要素を書き出して指定したHTMLを埋め込むだけのjQueryプラグインを書きました。

デモ - jquery.demoEmbedder.js

使用例

使い方

このスクリプトはjQueryプラグインです。
jQuery.jsの後に以下のように読み込ませてください。

<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/jquery.demoEmbedder.js"></script>

ラッパーとなるdiv要素を準備し、その後にjQueryセレクタでそのラッパーを指定して実行します。引数に渡せるパラメータは今のところ4つで、それがそのままiframe要素の属性になります。

<div id="demo"></div>
<script type="text/javascript">
$("#demoWrapper").demoEmbedder({
    src: "dir/somedemo.html",   // iframe URL
    width: 500,                 // iframe width
    height: 280                 // iframe height
    title: "Some Demonstration" // iframe title
});
</script>
たすけあいジャパン
ラナデザインアソシエイツは、「助けあいジャパン」に協力しています。