Skip to content

Latest commit

 

History

History
197 lines (163 loc) · 7 KB

README.adoc

File metadata and controls

197 lines (163 loc) · 7 KB

GakuNinLMS-LTI-MCの視聴ログ分析

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

GakuNinLMS-LTI-MC (CHiBi-CHiLO互換) の 視聴ログ分析基盤を構築する。

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

表 1. システム構成

項目

名称

コンテナ名

前処理

ログフォーマット変換・加工

lti-mc-log-processor

ステートメント変換

xAPIステートメント変換

lti-mc-xapi

Caliperステートメント変換

lti-mc-caliper

学習活動のデータストア

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([生徒])     -- 学習活動                   --> LMS[LMS]         --> VL[/視聴ログ/]
  subgraph 本システムの対象
    VL           .-> P[[前処理]]
    P            -.  学習ログ                  .-> X[[xAPI変換]]    --  xAPIステートメント    --> L[(Learning Locker)]
    P            -.  学習ログ                  .-> C[[Caliper変換]] --  Caliperステートメント --> O[(OpenLRW)]
    L            --> S[Superset]
    L            --> J[JupyterHub]
    O            --> S
    O            --> J
    S            --  可視化                    --> T([教師])
    J            --  分析結果                  --> T
    J            -.  分析結果                  .-> S
  end
  T              == 教育方法とコース設計の改善 ==> LMS
  LMS            == 学習体験と成果の向上       ==> ST
Loading

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

1.1. 初期設定

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

xapi/src/config/app.js
const config = {
  LRS:{
    url:'http://<learninglocker-ip-address>:8081/data/xAPI/', // (1)
    clients:{
      'default':{
        user:'<lrs-client-username>', // (2)
        pass:'<lrs-client-password>' // (2)
      }
    }
  },
...
  1. Learning LockerのIPアドレスを設定

  2. クライアントの設定 で確認したLRSのクライアント情報を設定

docker compose up -d lti-mc-xapi --force-recreate

1.2. ステートメント変換

視聴ログをxAPIステートメントに変換する。
<CONSUMER_KEY> にはLMSから取得する情報に付与される oauth_consumer_key を指定する。

./run xapi /path/to/logfile <CONSUMER_KEY>

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

xapi statements

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

2.1. 初期設定

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

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'
)

sed -i -e "s/OPENLRW_APIKEY=.*/OPENLRW_APIKEY=${API_KEY}/" caliper/.env

docker compose up -d lti-mc-caliper # 変更を反映
  1. OpenLRWの設定 を参照

2.2. ステートメント変換

学習ログをCaliperステートメントに変換する。
<CONSUMER_KEY> にはLMSから取得する情報に付与される oauth_consumer_key を指定する。

./run caliper /path/to/logfile <CONSUMER_KEY>

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

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

3. Superset

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

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

3.1. xAPIステートメント

[Data] > [Datasets] で選択した xapi_statements を以下の条件で可視化する。

表 2. ユーザの行動毎の件数を円グラフで可視化する例

大項目

小項目

設定値

Visualization Type

Pie Chart

Time

TIME COLUMN

timestamp

Query

DIMENSIONS

statement.verb.display.ja

METRIC

COUNT(*)

superset xapi

3.2. Caliperステートメント

[Data] > [Datasets] で選択した caliper_statements を以下の条件で可視化する。

表 3. ユーザの行動毎の件数を円グラフで可視化する例

大項目

小項目

設定値

Visualization Type

Pie Chart

Time

TIME COLUMN

event.eventTime

Query

DIMENSIONS

event.action

METRIC

COUNT(*)

superset caliper

4. JupyterHub

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

4.1. xAPIステートメント

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

jupyterhub xapi

4.2. Caliperステートメント

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

jupyterhub caliper