IDとユーザー定義の連動 on Google Analytics

IDとユーザー定義の連動 on Google Analytics

- SUMI Seijiro の投稿
返信数: 17
はじめて投稿します。先日,Moodle 1.9.8+をインストールしました。
あわせて Google Analyticsをインストールし,ログ解析を行っています。

フォーラム違いの投稿であればお許しください。

もしどなたか,Moodleのログイン情報(ID)と,Google Analyticsのユーザー定義を,連動させる方法を御存知の方がいらっしゃいましたら,教えて頂けますでしょうか?

または,ユーザーごとに,Google Analyticsを使ってログをソートする方法をご存知の方がいらっしゃれば教えて頂けますでしょうか?

おそらくMoodleログインのイベントと,Google Analyticsのユーザー定義を直接連動することは難しく,
Moodle上に別ページを作成し,そこにユーザー定義をセットするための「セレクトボックス」のようなものを設定して,そのイベントでGoogle Analyticsのユーザー定義をソートするような形になるのではないかと見積もっています。

どうぞよろしくお願いします。
SUMI Seijiro への返信

Re: IDとユーザー定義の連動 on Google Analytics

- Tatsuya Shirai の投稿

 Google Analyticsが何か,実は私,知りません^^;

 もしよろしければ,どのような機能/構成のシステムであり,現在,Moodleと連動することで何が実現できているのか.そもそも何を目指して導入を決めたのか.そしてログイン情報と関連付けることで何ができるようになるのかを教えて頂けないでしょうか?

Tatsuya Shirai への返信

Re: IDとユーザー定義の連動 on Google Analytics

- SUMI Seijiro の投稿
お世話になります。
すみません,説明が不足していました。

Google Analyticsとは,Googleが無償で提供するログ解析のサービスです。
詳細は以下を御覧下さい。
http://www.google.com/intl/ja/analytics/

上記のツールをMoodleと連動させることによって,Moodle統計だけでは得られない,より詳細なログ情報を取得することができます。

この情報を利用することによって,サイトのSEOだけではなく,例えば,コースによる利用状況の違いなどを把握することができます。
また,メールや動的コンテンツにタグを埋め込むことによって,反応情報なども取得することができます。

しかし,Google AnalyticsのタグをMoodleに埋め込んだだけでは,個々人のサイト上での動向を把握することができません。

私は,学習者によるサイトの利用状況の違いを把握したいと考えております。このデータを取得することによって,例えば上位層の学習者は,~~~のようなサイトの使い方をしている,こういう手順を踏むことによって問題解決をしている,という特徴をつかみ,教育的示唆を得ることはできないかと考えています。

同様の議論は,以下のフォーラムでもされています。
しかし,解決にいたらずスレッドが切れております。
http://moodle.org/mod/forum/discuss.php?d=86223

そのため新規にスレッドを立て,現在反応をまっています。
http://moodle.org/mod/forum/discuss.php?d=150541

もし何かアドバイス頂ければ幸いです。
説明が不足しており,申し訳ありませんでした。
評点平均: お役立ち度: ★★★★★★★ (1)
SUMI Seijiro への返信

Re: IDとユーザー定義の連動 on Google Analytics

- SUMI Seijiro の投稿
すみません。自己レスです。
Google Analyticsは,ログ解析ツールではなく,
正しくは,アクセス解析ツールです。
修正してお詫び申し上げます。
SUMI Seijiro への返信

Re: IDとユーザー定義の連動 on Google Analytics

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
下記の例のように、MoodleのユーザIDをGoogle Analytics用のJavaスクリプトに引数として渡すことは可能かと思います。笑顔

[PHPで定義した変数を引数としてJvaScrptに渡す方法 - MSN相談箱]
http://questionbox.jp.msn.com/qa5270810.html
Mitsuhiro Yoshida への返信

Re: IDとユーザー定義の連動 on Google Analytics

- SUMI Seijiro の投稿
返信,ありがとうございます。

ただ,Google Analyticsのjava(.jsファイル)を直接書き換えることはできないので,
「このIDでログインしましたよ」という通知をGoogle Analytics側にする処理になると思いました。
何か私が勘違いしていればお許しください。

現在,以下のGoogle Analytics サポートの「選択したフォームに基づいてセグメントを割り当てる」という項目を参考に,代替案を検討中です。
http://www.google.com/support/googleanalytics/bin/answer.py?answer=57045

スマートではありませんが,上記を参考に,ログインの前にセグメントを割り当てることを試しています。
http://lang-tech.net/moodle/id/

ただ,この方法では,ファイルの設置場所が悪いのか,今現在のところ上手くいっていないようです。
データがGoogle Analytics側に反映されるのに多少時間がかかるようなので,明日までこのまま待ってみるつもりです。
もしかしたら,ログインした後に,上記のようなページをコースに割りつけておいたいいのかとも思いました。
素人考えです。
(どちらにしろあまりスマートな解決策になるとは思えませんが。。。汗)

何かよい方法があれば,さらにMoodleの利便性を向上できる思っています。
SUMI Seijiro への返信

Re: IDとユーザー定義の連動 on Google Analytics

- SUMI Seijiro の投稿
すみません。私が勘違いしておりました。

PHPで定義された,ログイン時のusernameの変数を,Google Analytics用のJavaスクリプトに渡す作業が必要と理解しました。

具体的には,moodle/login/index.php ファイルの
一部の書き換えが必要と理解していますが,よろしいでしょうか?

書き換えに関しては,以下のサイトが参考になるかと思ったのですが,
何分PHPに関する知識がないので検討がつきませんでした。
http://d.hatena.ne.jp/ilo/20100218/1266473248

上記のサイトを参考に変更したPHPをアップロードするものの,画面が真っ白に。。。

どなたかアドバイスを頂戴できれば幸いです。
SUMI Seijiro への返信

Re: IDとユーザー定義の連動 on Google Analytics

- Tatsuya Shirai の投稿

なんらかのPHPのエラーが発生しています(処理が中断).

PHPのエラーを表示するように変更して下さい.Moodle上から設定変更できたはずです.
(問題解決後は戻すことを薦めます)

Tatsuya Shirai への返信

Re: IDとユーザー定義の連動 on Google Analytics

- SUMI Seijiro の投稿
>なんらかのPHPのエラーが発生しています(処理が中断)
はい。ログイン画面で発生しているので,なんともし難い状況です。
index.phpをオリジナルで上書きして,復帰はしました。

もう少しがんばってみます。
SUMI Seijiro への返信

Re: IDとユーザー定義の連動 on Google Analytics

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
moodle/login/index.phpではなく、例えば、スタンダードテーマを選択した場合、すべてのページで表示されるmoodle/theme/standard/header.htmlを修正されてはいかがでしょうか。

下記のように修正することで、テスト的にユーザ名をページ上部左側に表示することができます。

修正対象: /theme/standard/header.html
修正箇所: 16行目

[ 修正前 ]
<body<?php
echo " $bodytags";
if ($focus) {
echo " onload=\"setfocus()\"";
}
?>>

<div id="page">

[ 修正後 ]
<body<?php
echo " $bodytags";
if ($focus) {
echo " onload=\"setfocus()\"";
}
?>>

<?php echo 'username=' . $USER->username; ?>

<div id="page">
Mitsuhiro Yoshida への返信

Re: IDとユーザー定義の連動 on Google Analytics

- SUMI Seijiro の投稿

返信,ありがとうございます。目からウロコの解決の方向性でした。

ご指摘頂きましたとおりの修正で,各ページにusernameを表示することができるようになりました。

しかし,このままでは,Moodle上のusernameの変数を,Google Analytics側で読み込むことができないのではないかと思いました。

Google Analyticsの方で何か定義をする方法があるのかと思い(例えば,「画面にusernameが表示されたユーザとする」とか)探したのですが見つけることができませんでした。

他の例ですが,このユーザーは,「用語集」のページを閲覧したユーザである,という定義の仕方は以下になります。

<body XonLoad="javascript:pageTracker._setVar('用語集');">

上記の考え方を利用して,上記の _setVar 以下の変数が PHP で指定している $USER->username; あればいいのだから,ご指摘頂きました header.html の16行目に

<XonLoad="javascript:pageTracker._setVar($USER->username);">

と記述するのではいかがでしょうか?

*なぜかコメントを書き込むとonLoadの前にXが入ってしまいます。

SUMI Seijiro への返信

Re: IDとユーザー定義の連動 on Google Analytics

- SUMI Seijiro の投稿

自己レス+追加です。

現在,以下,2箇所(変更A&B)に変更を加え様子を見ています。
変更作業の際には,以下のGoogle Analyticsのサポートページも参考にしました。
http://www.google.com/support/googleanalytics/bin/answer.py?answer=57045

変更A
修正対象: /theme/standard/header.html
修正箇所: 11行目
--------------------------
<body onLoad="javascript:pageTracker._setVar(<?php echo $USER->username; ?>);"
<?php
    echo " $bodytags";
    if ($focus) {
        echo " onload=\"setfocus()\"";
    }
    ?>>

<div id="page">
--------------------------

変更B
修正対象: /theme/standard/footer.html
修正箇所:ページ末</body>の直前
--------------------------
<script type="text/javascript">pageTracker._setVar(<?php echo $USER->username; ?>);</script>

</body>
</html>
----------------------------

変更Aによって,ページのヘッダーソースには常に学生のusernameが表示されるようになりました。
これをGoogle Analyticsの方にちゃんと引き渡せていればいいのですが。。。
やっぱり何か違うのかな。これで一晩寝かせてみます。

またお気づきの点などございましたら,アドバイスを頂戴できれば幸いです。

SUMI Seijiro への返信

Re: IDとユーザー定義の連動 on Google Analytics

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
> ご指摘頂きましたとおりの修正で,各ページにusernameを表示することができるようになりました。

大変失礼致しました。
これは、ユーザ名を取得できるかどうか確認するためだけのテスト用修正です。

> *なぜかコメントを書き込むとonLoadの前にXが入ってしまいます。

以下のように、/lib/weblib.phpの2041行目で「on」を「Xon」に変えているようですね。

/// Remove potential script events - some extra protection for undiscovered bugs in our code
$text = eregi_replace("([^a-z])language(:space:*)=", "\\1Xlanguage=", $text);
$text = eregi_replace("([^a-z])on([a-z]+)(:space:*)=", "\\1Xon\\2=", $text);


SUMI Seijiro への返信

Re: IDとユーザー定義の連動 on Google Analytics

- Takayuki ISHIKAWA の投稿
画像 Developers

本筋からずれた話になりますが、Google Analytics を利用することに問題はないでしょうか。2点ほど気になります。

  • 学習者の PC はみな Google Analytics を受け入れる設定になっていますでしょうか。例えば、もし私が学習者でしたら、*.google-analytics.com からの cookie や script は全て拒否する設定にしてありますので、私の行動は Google Analytics には全く残りません。Google Analytics によって得られる情報の精度がかなり落ちてしまうように思います。
  • Google Analytics を利用した場合、privacy は守られますでしょうか。大学などの場合、*.ac.jp という学内 cookie によって学習者の履歴を管理することは問題ないと思いますが、学外 cookie を利用する場合は、学内での学習者の履歴・行動が学外に漏れないことを大学が担保しなくてはいけません。(Google Analytics がこれに該当するかどうかは知らずに書いているので、もし該当しないのでしたらすみません。)
Takayuki ISHIKAWA への返信

Re: IDとユーザー定義の連動 on Google Analytics

- SUMI Seijiro の投稿

ご指摘ありがとうございました。また,ご説明が不足していたことをお詫び申し上げます。

ご質問1:PCの設定について
----
はい,なっております。学生が使うパソコンの環境は揃えてあります。

ご質問2:privacyに関して
----
今回のものは1月半の実験であり,また,Moodle上での特定科目の利用状況のログを収集するものです。学生の日常的なインターネットの利用状況のデータを収集するものではありません。Google Analyticsでは,そうしたこともできません。収集されるログのレベルでいえば,Moodleがすでに収集しているログ(統計)データとそんなに変わるものではありません。Google Analyticsを使うことによって,コンテンツ利用に関するより詳細なデータ(例えば,離脱率,直帰率,その他)を収集することができます。加えて,実験の開始時には,実験に関する説明を行い,倫理同意書へ学生のサインをもらい実験を開始します。

SUMI Seijiro への返信

Re: IDとユーザー定義の連動 on Google Analytics

- Takayuki ISHIKAWA の投稿
画像 Developers
なるほど、実験であり、またそれだけ準備されていれば、何も問題ないですね。余計な口出しをしてすみません。
SUMI Seijiro への返信

Re: IDとユーザー定義の連動 on Google Analytics

- SUMI Seijiro の投稿

自己レスです。以下の方法で,Google Analytics (以下GA) とMooldeを連携し,ログインIDで個別ユーザーのアクセス解析ができるようになったので書き込みました。

以下,Theme で Standard を選択していることを前提とします。

【修正対象】:/theme/standard/header.html
【修正箇所】:<head>~</head>

【修正前】
<head>
<?php echo $meta ?>
<meta name="keywords" content="moodle, <?php echo $title ?> " />
<title><?php echo $title ?></title>
<link rel="shortcut icon" href="<?php echo $CFG->themewww .'/'.current_theme() ?>/favicon.ico" />

<?php include("$CFG->javascript"); ?>

</head>

【修正後】
<head>
<?php echo $meta ?>
<meta name="keywords" content="moodle, <?php echo $title ?> " />
<title><?php echo $title ?></title>
<link rel="shortcut icon" href="<?php echo $CFG->themewww .'/'.current_theme() ?>/favicon.ico" />

<?php include("$CFG->javascript"); ?>

<script type="text/javascript">

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXXX']);
_gaq.push(['_setCustomVar',1,'<?php echo $USER->username; ?>','ID',2]);
_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>

</head>

スクリプトの修正は以上です。青字の部分は,GAが生成するタグになります。赤字のUA-XXXXXXXの部分は、各自のプロファイルを指定してください。

次に,GAにログインして,「アドバンスセグメントの新規作成」を行います。アドバンスドセグメントについては以下を参考にしてください。
「アドバンスドセグメントの使い方~特定ドメインで絞り込む」

【アドバンスドセグメントの新規作成】をクリックし,【ユーザー】>【カスタム変数(キー1)】を選択し,絞り込みたいユーザーのIDを「完全一致」で入力し,保存します。

設定作業は以上です。
最後にGAでレポートを表示させ,アドバンスセグメントから「全セッション」に加え,先程指定したユーザーのセッションを指定すれば,全体からより分けてユーザのセッションを表示するようになります。絞り込まれたデーターの解析の仕方については,まだまだこれからの課題かと思います。SEOの考え方を参考にしながらも,利用目的に沿った解析の仕方が今後でてくることを期待しています。

以下,スクリプト設置の詳細についてご紹介します。不必要な方は読み飛ばしてください。

_gaq.push(['_setCustomVar',1,'<?php echo $USER->username; ?>','ID',2]);

の部分がカスタム変数を指定して,GAが生成するタグに追加記述している部分になります。
_setCustomVarの中身の変数については以下のサイトを参照にしてください。
【マルチカスタム編集の書式】

<?php echo $USER->username; ?>の部分が,Moodle 個人IDのPHPの変数を取得する部分です。
これは, Mitsuhiro Yoshida さんからのアドバイスを参考にさせていただきました。ありがとうございました。

_gaq.pushとして記述するのは,5月17日に,GAが非同期トラッキングコードを標準設定にしたためです。
以下参照
【Google Analytics 非同期トラッキングが標準設定に】

英語サポートページ
【Tracking Sites with the Asynchronous Snippet】

この非同期トラッキングに関しては,ごく最近のアナウンスであったためにウェッブにもあまり情報がありません。
また,市販されている書籍では,古いユーザー定義関するの記述の仕方(<boy onLoad="javascript: pageTracker.setVar('*');">)しか載っていません。

(3冊も買ったのの,,,)

特に非同期トラッキングコードが標準設定になって大きく変わった点は,GAの生成するタグの設置場所です。
現在も,GAの日本語サポートページでは,トラッキングコードを</body>の直前にと書かれています。現在手に入る書籍にもそのように書かれています。しかし,非同期トラッキングコードが標準になってからは,</body>の直前ではなく,</head>の直前にタグを設置する必要があります。
【Goolge Analyticsインストールガイド】(ステップ4に設置場所は,</body>タグの直前と書かれている)

英文のサイトでは,"just before the closing </head> tagと書かれています。
【Tracking Sites with the Asynchronous Snippet】

いろいろ遠回りをしましたが,みなさまのアイデアと後押しで目的を達成することができました。
ありがとうございました。今後ともどうぞよろしくお願いします。

評点平均: お役立ち度: ★★★★★★★ (2)