|
以降の手順を実行する前に初期設定を行うこと。 |
ℹ️
|
Caliperステートメントは未対応 |
Sakaiの学習ログ分析基盤を構築する。
項目 |
名称 |
コンテナ名 |
学習管理システム |
Sakai(Web) |
sakai |
Sakai(DB) |
sakai-db |
|
学習活動のデータストア |
Learning Locker(Web) |
learninglocker |
Learning Locker(DB) |
learninglocker-mongo |
|
learninglocker-redis |
||
分析システム |
Superset(Web) |
superset |
Superset(DB) |
superset-db |
|
JupyterHub(Web/DB) |
jupyterhub |
|
ツール |
ダミーステートメント生成 |
sakai-dummy-xapi |
graph TB
ST([生徒]) -- 学習活動 --> SA[Sakai]
SA -- xAPIステートメント --> L[(Learning Locker)]
D[[ダミーステートメント生成]] -. ダミーステートメント .-> L
L --> S[Superset]
L --> J[JupyterHub]
S -- 可視化 --> T([教師])
J -- 分析結果 --> T
J -. 分析結果 .-> S
T == 教育方法とコース設計の改善 ==> SA
SA == 学習体験と成果の向上 ==> ST
compose.yml
で sakai
の環境変数 LRS_USERNAME
および LRS_PASSWORD
に作成したLRSクライアントの Key
と Secret
をそれぞれ設定する。
Sakaiが提供するデモデータを起動時に登録する場合には JAVA_OPTS
で -Dsakai.demo=true
を指定する。
sakai: ... environment: + JAVA_OPTS: ... -Dsakai.demo=true ... + LRS_USERNAME: ... // (1) + LRS_PASSWORD: ... // (1)
-
LRSクライアントの
Key
とSecret
Sakaiのステートメントを取り扱うため、外部テーブルを変更し、カラムを追加・リネームする。
docker compose exec superset-db psql -U superset learninglocker -c ' ALTER FOREIGN TABLE xapi_statements RENAME "statement.object.definition.description.en" TO "statement.object.definition.description.en-US"; ALTER FOREIGN TABLE xapi_statements RENAME "statement.object.definition.name.en" TO "statement.object.definition.name.en-US"; ALTER FOREIGN TABLE xapi_statements ADD "statement.result.extensions" VARCHAR;'
Supersetからデータセット xapi_statements
を編集し、 SYNC COLUMNS FROM SOURCE
で変更を反映する。
SakaiのMySQLデータベースを起動する。
docker compose up -d sakai-db
MySQLの起動完了を確認する。
docker logs -f sakai-db ...mysqld: ready for connections.
Sakaiコンテナを起動する。
docker compose up -d sakai --no-build // (1)
-
イメージをビルドする場合は
--no-build
の代わりに--build
オプションを指定
Sakai( http://localhost:8888/portal )で学習活動を行う。
💡
|
操作方法の詳細は ユーザガイド - Creating Charts and Dashboards を参照すること。 |
Superset( http://localhost:8088 )にAdminユーザでログインする。
[Data] > [Datasets]
で選択した xapi_statements
を以下の条件で可視化する。
大項目 |
小項目 |
設定値 |
Visualization Type |
|
|
Time |
TIME COLUMN |
|
Query |
METRIC |
|
Display settings |
SUBHEADER |
|
大項目 |
小項目 |
設定値 |
Visualization Type |
|
|
Time |
TIME COLUMN |
|
TIME GRAIN |
|
|
Query |
METRICS |
|
FILTERS |
|
大項目 |
小項目 |
設定値 |
Visualization Type |
|
|
Time |
TIME COLUMN |
|
TIME GRAIN |
|
|
TIME RANGE |
|
|
Query |
METRICS |
|
FILTERS |
|
大項目 |
小項目 |
設定値 |
Visualization Type |
|
|
Time |
TIME COLUMN |
|
TIME GRAIN |
|
|
Query |
METRICS |
|
DIMENSIONS |
|
大項目 |
小項目 |
設定値 |
Visualization Type |
|
|
Time |
TIME COLUMN |
|
TIME RANGE |
|
|
Query |
DOMAIN |
|
SUBDOMAIN |
|
|
METRICS |
|
大項目 |
小項目 |
設定値 |
Visualization Type |
|
|
Time |
TIME COLUMN |
|
Query |
DIMENSIONS |
|
METRICS |
|
大項目 |
小項目 |
設定値 |
Visualization Type |
|
|
Time |
Time Column |
|
Query |
METRICS |
|
FILTERS |
|
|
DIMENSIONS |
|
分析に使用するノートブックを読み込むため、コンテナを再起動する。
docker compose up -d jupyterhub --no-build
JupyterHub( http://localhost:8001 )に jupyter
ユーザ(パスワード: jupyter
)でログインする。
以下の処理を行うanalyze-xapi-statements.ipynbにノートブックの利用例を示す。
詳細はノートブック内の説明を参照すること。
-
Learning LockerのAggregation APIを使用したステートメントの取得
-
Seabornを使用した集計結果の可視化
-
Assignmentsの採点(
asn.grade.submission
)をより詳細にSupersetで可視化するためのステートメント加工-
分析対象項目の絞り込み
-
Grade ScaleがLetter Grade、Pass or Fail、またはCheckmarkである場合の評点(A+、Pass、Checkedなど)の抽出
-
採点されたAssignmentの名前を項目化
-
-
Supersetへのノートブック実行結果の登録
ノートブックで追加した項目 result.extensions.classification.definition.name.en-US
の件数を円グラフで描画する。
大項目 |
小項目 |
設定値 |
Visualization Type |
|
|
Time |
TIME COLUMN |
|
Query |
DIMENSIONS |
|
METRICS |
|
|
FILTERS |
|
ステートメントの可視化・分析を例示・動作確認する目的において、
Sakaiで実際に操作することなく、 仕様に則したダミーステートメントを生成するサービス sakai-dummy-xapi
を提供する。
compose.yaml
の sakai-dummy-xapi
で以下に示す環境変数を編集し、ダミーステートメントの生成方法およびステートメントを保存するLRSに関する情報を設定する。
sakai-dummy-xapi:
...
environment:
TZ: Asia/Tokyo
STATEMENT_NUM: 300 // (1)
TIMESTAMP_MIN: "2021-04-01T00:00:00+00:00" // (2)
TIMESTAMP_MAX: "2021-10-01T00:00:00+00:00" // (3)
LRS_URL: http://learninglocker:8081/data/xAPI/
LRS_USERNAME: ... // (4)
LRS_PASSWORD: ... // (4)
-
登録するダミーステートメントの数
-
ステートメントに設定するタイムスタンプの最小値
-
ステートメントに設定するタイムスタンプの最大値
-
LRSクライアントの
Key
とSecret
次のコマンドを実行し、LRSにステートメントを登録する。
docker compose up -d sakai-dummy-xapi --no-build docker compose exec sakai-dummy-xapi npm start