人気記事の一覧を Google Analytics から取得する:GADGET

Posted by
ぴろり
Posted at
2012/05/10 10:46
Trackbacks
関連記事 (2)
Comments
コメント (1)
Post Comment
コメントできます
Category
ソフトウェア カテゴリ
カバーイメージ
  • gadgets
  • Photo by Jos Maria Silveira Neto
    • Attribution
    • ShareAlike

 以前に人気記事のランキングを表示する PHP スクリプトを公開しましたが、これは MovableType で運用されているサイトでしか機能しないという制限がありました。今日、多くのサイトでは Google Analytics が導入されていることと思いますが、この Google Analytics が集計したデータを利用して人気記事のランキングを生成できるようにすれば、MovableType や WordPress などの CMS で運用されているサイトのみならず、完全手作業で更新を行っているようなサイトにも適用可能です。
 そこで、Google Analytics からデータ(Data)を取得して(Getting)、任意の変換(Encoding)や集計(Totalize)を行えるようなプログラムを書いてみました。略して GADGET(ガジェット)。無理矢理とか気にしない。

このエントリーをはてなブックマークに追加  

特徴

  • MovableType プラグインではないので、WordPress などの様々な CMS や HTML を手動で更新しているサイトでも利用可能です
  • Google Analytics の集計データを利用するので、Apache サーバのアクセス ログが利用できない環境にも設置できます
  • Google Analytics の強力な集計機能を利用できます
  • 集計は Google Analytics が全てやってくれるので、ページビューが非常に多いサイトでも安心して集計できます

動作の流れ

  1. 設定ファイルを読み込みます。集計処理ごとに設定ファイルを作成しておき、プログラムの起動時に設定ファイルを指定することができます。
  2. 設定ファイルに指定されたアカウントで Google Analytics にログインします
  3. 設定ファイルに指定されたリクエストを行います。リクエスト内容は、設定ファイルに直接書くこともできますし、また Perl の関数として書くこともできます。例えば、毎日のアクセス ランキングを生成したい場合では、集計する日付範囲が毎日変化しますので、Perl の関数としてリクエストを動的に生成します。
  4. 返されたレスポンスに対して処理を行います。レスポンスに対して、Perl で書かれた独自の関数を適用することもできます。また、Google Analytics のレスポンスは XML ドキュメントなので、独自の XSLT ファイルを指定するだけで XML+XSLT 変換が行えるようになっています。アクセス ランキングを (X)HTML で出力したい場合などには、この方法が簡単です。
  5. ファイルに出力します。一般的には処理結果をファイルに書き出しますが、標準出力に捨てることもできます。

 一応、汎用的に使えるようにしていますが、元がアクセス ランキングを生成するためだけに作ったものに肉付けをしていったので、それ以外の機能がまだ弱いところがあります。

ダウンロード

動作環境

  • Perl 5.8 で動作確認済み
  • KWP::UserAgent + SSLeay
  • XML::LibXML
  • XML::LibXSLT

 さくらインターネットのレンタルサーバ(スタンダード プラン)では、必要なモジュールやライブラリは全てインストール済みです。

使い方

gadget.pl [設定ファイル名]

 設定ファイル名を省略した場合には、自動的に config.yaml が指定されたものとします。

 毎日のアクセス ランキングを作るには、cron などを用いて、上記のスクリプトが定期的に実行されるようにしておきます。設定ファイルには、Google Analytics のアカウント情報がそのまま記述されているので、スクリプトは Web 公開ディレクトリ以外に置くのが賢明です。

設定ファイルの例

---
name: 最近の人気記事
account:
    Email: your.name@gmail.com
    Passwd: You.Password
process:
    name: Open MagicVox.net
    request: >
        sub {
            my $get_date = sub {
                sprintf ('%04d-%02d-%02d',
                    sub {($_[5]+1900, $_[4]+1, $_[3])}->(localtime $_[0]));
            };
            return {
                'ids' =>            'ga:3857126',
                'dimensions' =>     'ga:pagePath,ga:pageTitle',
                'filters' =>        'ga:pagePath=~^/archive/\\d+/\\d+/',
                'metrics' =>        'ga:pageviews',
                'sort' =>           '-ga:pageviews',
                'max-results' =>    5,
                'start-date' =>     $get_date->(time - 60 * 60 * 24 * 7),
                'end-date' =>       $get_date->(time),
            };
        }
    apply: /home/www/magicvox/include/hottopic.xsl
    output: /home/www/magicvox/include/hottopic.inc.php

 EmailPasswd で指定されたアカウントを用いて Google Analytics にログインを試みます。その後、request に指定されたリクエストを行います。この例では、今日(end-date)から 1 週間分(start-date)のアクセス数(metrics)を集計して、アクセスの多かった記事のうち上位 5 件(sortmax-results)を取得しています。トップページや記事一覧ページなどを除いた個別記事へのアクセス数だけを集計したいので、個別記事のパーマリンクだけを集計するように filters を指定しています。
 次に、Google Analytics から返ってきた集計結果に対して、hottopic.xsl を適用し、その結果を /home/www/magicvox/include/hottopic.inc.php に書き出しています。

 Google Analytics から取得したデータから任意の出力を生成する方法で悩んだ挙句、XSLT を利用する方法に落ち着きました。XSLT がなかなかクセのあるので、学習コストが少し高いかもしれませんが、まぁ後々、他のところでも色々と使えると思いますので頑張ってください(汗)

いろいろ

  • ライセンスは GPL とします
  • 商用目的または法人利用については 1 つの MovableType につき 1 ライセンスの購入をお願いしております。
    ライセンス料金: ¥1,000 JPY (税込み) 
    一言どうぞ:
  • 商用目的でない個人利用(アフィリエイトを含む)については無償でご利用頂けますが、よろしければ継続開発のためのライセンス購入(任意)をお願いしております。
    お気持ち:  
    一言どうぞ:

 ところで、小粋空間さまで、Google Analytics APIでブログのアクセスランキングを作る方法が昨日の今日に公開されていて焦りました(´д`;) GADGET の場合、CPAN モジュールの要求が高いので、小粋空間さまで公開されている PHP 版の方が動作する環境が多いと思われます。

このエントリーをはてなブックマークに追加  



関連記事/トラックバック (全 2 件中、最新 5 件まで表示しています)

Open MagicVox.net のスクリーンショット
タイトル
GADGET 応用 ~ この記事を読んだ人はこんな記事も読んでいます
Trackbacked at
2012/05/12 15:10
from
Open MagicVox.net
概要
「この記事を読んだ人はこんな記事も読んでいます」な感じに、オススメ記事を紹介する MovableType プラグインというのを以前に公開しましたが、当然...

Open MagicVox.net のスクリーンショット
タイトル
GADGET 応用 ~ よくクリックされた商品ランキング
Trackbacked at
2012/05/12 15:07
from
Open MagicVox.net
概要
Google Analytics で収集されているデータであれば、GADGET を用いて自由にランキングを生成することが可能です。以前、アフィリエイト ...

この記事にトラックバックを送るには?

寄せられたコメント (全 1 件中、最新 5 件まで表示しています)

Posted by
ぴろり ◆OLEEi.VOX.ぴろり ◆OLEEi.VOX.
at
2015/05/28 08:54
ID
y8S3tH36
以前からサポートが終了していましたが、2015/05/27 から、いよいよログインできなくなってしまいました(´・ω・`)
https://developers.google.com/identity/protocols/AuthForInstalledApps

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。