Skip to content

Latest commit

 

History

History
256 lines (204 loc) · 8.62 KB

README.adoc

File metadata and controls

256 lines (204 loc) · 8.62 KB

Moodleの学習ログ分析

⚠️
以降の手順を実行する前に初期設定を行うこと。

Moodleの学習ログ分析基盤を構築する。

docker compose up -d --no-build // (1)
  1. イメージをビルドする場合は --no-build の代わりに --build オプションを指定

表 1. システム構成

項目

名称

コンテナ名

学習管理システム

Moodle(Web)

moodle

Moodle(DB)

moodle-db

ステートメント変換

xAPIステートメント変換

moodle-xapi

Caliperステートメント変換

moodle-caliper

Caliperステートメント変換(DB)

caliper-log-db

Learning Analytics DB

learning-analytics-db

学習活動のデータストア

Learning Locker(Web)

learninglocker

Learning Locker(DB)

learninglocker-mongo

learninglocker-redis

OpenLRW(Web)

openlrw

OpenLRW(DB)

openlrw-mongo

分析システム

Superset(Web)

superset

Superset(DB)

superset-db

JupyterHub(Web/DB)

jupyterhub

graph TB
  ST([生徒])   -- 学習活動                   --> M[Moodle]
  M            -. 学習ログ                   .-> X[[xAPI変換]]    -- xAPIステートメント    --> L[(Learning Locker)]
  M            -. 学習ログ                   .-> C[[Caliper変換]] -- Caliperステートメント --> O[(OpenLRW)]
  L            --> S[Superset]
  L            --> J[JupyterHub]
  O            --> S
  O            --> J
  S            -- 可視化                     --> T([教師])
  J            -- 分析結果                   --> T
  J            -. 分析結果                   .-> S
  T            == 教育方法とコース設計の改善 ==> M
  M            == 学習体験と成果の向上       ==> ST
Loading

1. Moodle

Moodle( http://localhost:8000 )で学習活動を行う。

2. xAPIステートメント変換

2.1. 初期設定

スクリプトの設定ファイルを編集する。

xapi/src/config/app.js
const config = {

  LRS: {
    ...
    client: {
      key: '<xapi-store-client-key>', // (1)
      secret: '<xapi-store-client-secret>' // (1)
    },
  1. クライアントの設定 で確認したLRSのクライアント情報を設定

docker compose up -d moodle-xapi --force-recreate

2.2. ステートメント変換

学習ログをxAPIステートメントに変換する。

docker exec moodle-xapi npm start

Learning Lockerにステートメントが登録されていることを確認する。

source
💡

変換が完了したログの件数を取得する場合は以下のコマンドを実行する。

docker exec learning-analytics-db \
  psql -U learning_analytics learning_analytics \
  -c "SELECT count(*) FROM xapi_records_processed;"

ログを再変換したい場合は、以下のコマンドで変換処理の実行履歴を削除する。

docker exec learning-analytics-db \
  psql -U learning_analytics learning_analytics \
  -c "DELETE FROM xapi_records_processed;"

3. Caliperステートメント変換

3.1. 初期設定

OpenLRWから取得したAPIキー( mongoOrg.apiKey )を lrw.php に設定する。

OPENLRW_DATABASE=caliper // (1)
OPENLRW_USERNAME=caliper // (1)
OPENLRW_PASSWORD=caliper // (1)
API_KEY=$(
  docker exec openlrw-mongo \
  mongo --quiet ${OPENLRW_DATABASE} \
    -u ${OPENLRW_USERNAME} \
    -p ${OPENLRW_PASSWORD} \
    --eval 'db.mongoOrg.findOne({"org.name": "DEFAULT_ORG"}, {_id:0,apiKey:1}).apiKey'
)

cat <<EOF > ./caliper/config/lrw.php
<?php

return [
    "tenants" => [
        "default" => "${API_KEY}"
    ]
];
EOF
  1. OpenLRWの設定 を参照

3.2. ステートメント変換

学習ログをCaliperステートメントに変換する。

docker compose run --rm moodle-caliper

OpenLRWにステートメントが登録されていることを確認する。

docker exec openlrw-mongo \
  mongo --quiet ${OPENLRW_DATABASE} \
    -u ${OPENLRW_USERNAME} \
    -p ${OPENLRW_PASSWORD} \
    --eval 'db.mongoEvent.find().pretty()'

4. Superset

💡
操作方法の詳細は ユーザガイド - Creating Charts and Dashboards を参照すること。

Superset( http://localhost:8088 )にAdminユーザでログインする。

4.1. xAPIステートメント

[Data] > [Datasets] から xapi_statements を選択する。

datasets

「DATA」および「CUSTOMIZE」タブからチャートの設定を行い、「CREATE CHART」でステートメントを可視化する。

表 2. ユーザの行動(ログイン、閲覧等)毎の件数を円グラフで可視化する例

大項目

小項目

設定値

Visualization Type

Pie Chart

Time

TIME COLUMN

timestamp

Query

DIMENSIONS

statement.verb.display.en

METRIC

COUNT(*)

xapi statements

4.2. Caliperステートメント

[Data] > [Datasets] から caliper_statements を選択する。

datasets

「DATA」および「CUSTOMIZE」タブからチャートの設定を行い、「CREATE CHART」でステートメントを可視化する。

表 3. ユーザの行動(ログイン、閲覧等)毎の件数を円グラフで可視化する例

大項目

小項目

設定値

Visualization Type

Pie Chart

Time

TIME COLUMN

event.eventTime

Query

DIMENSIONS

event.action

METRIC

COUNT(*)

caliper statements

5. JupyterHub

JupyterHub( http://localhost:8001 )に jupyter ユーザ(パスワード: jupyter )でログインする。

notebooks

5.1. xAPIステートメント

xAPI_statements.ipynbを使用して、xAPIステートメントを可視化する例を示す。

xapi statements

5.2. Caliperステートメント

Caliper_statements.ipynbを使用して、Caliperステートメントを可視化する例を示す。

caliper statements

6. JupyterHub-Superset連携

6.1. ノートブック実行結果の登録

Import_to_Superset.ipynbに示す例に従って、ノートブックで加工したログをSupersetに登録する。

import to superset

6.2. ノートブック実行結果の可視化

Supersetの [Data] > [Datasets] から登録したデータセットにアクセスする。

datasets

チャートの設定を行い、ノートブックの実行結果を可視化する。

表 4. ノートブックの実行結果を可視化する例

大項目

小項目

設定値

Visualization Type

Pie Chart

Time

TIME COLUMN

timestamp

Query

DIMENSIONS

object.definition.description.en

METRIC

COUNT(*)

visualize notebook results