22:lang: ja
33:source-highlighter: rouge
44:author: 国立情報学研究所
5- :revdate: 2020年10月12日
6- :revnumber: 2 .0.0版
5+ :revdate: 2022年1月1日
6+ :revnumber: 3 .0.0版
77:doctype: book
88:version-label:
99:chapter-label:
@@ -39,7 +39,6 @@ $ git clone https://github.com/RCOSDP/LAaaS-docker.git
3939* `moodle-docker` の設定で `MOODLE_DOCKER_DBUSER` および `POSTGRES_USER` を `moodleuser` に変更( `moodle-docker/base.yml` )
4040* Moodleの設定でMoodleデータベースのテーブル名に付与する接頭辞を `mdl_` に変更( `moodle-docker/moodle/config.php` )
4141* Moodleのコンテナ群を起動
42- * xAPIステートメント変換スクリプトでイベントの処理状況を管理するためのテーブル( `xapi_records_processed` )を作成
4342
4443----
4544$ cd LAaaS-docker
@@ -69,18 +68,19 @@ image::moodle.png[align=center]
6968次のコンテナを起動する。
7069
7170|===
72- |項目 |名称 |コンテナ名
73- .5+|学習活動のデータストア|Learning Locker(Web) |learninglocker
74- .2+|Learning Locker(DB) |learninglocker_mongo
75- |learninglocker_redis
76- |OpenLRW(Web) |openlrw_web
77- |OpenLRW(DB) |openlrw_mongo
78- .3+|ステートメント変換 |xAPIステートメント変換 |xapi_stmt_gen
79- |Caliperステートメント変換 |caliper_stmt_gen
80- |Caliperステートメント変換(db) |caliper_log_db
81- .4+|分析システム |Superset(Web) |superset
82- |Superset(DB) |superset_db
83- |JupyterHub(Web/DB) |jupyterhub
71+ |項目 |名称 |コンテナ名
72+ .5+|学習活動のデータストア|Learning Locker(Web) |learninglocker
73+ .2+|Learning Locker(DB) |learninglocker_mongo
74+ |learninglocker_redis
75+ |OpenLRW(Web) |openlrw_web
76+ |OpenLRW(DB) |openlrw_mongo
77+ .4+|ステートメント変換 |xAPIステートメント変換 |xapi_stmt_gen
78+ |Caliperステートメント変換 |caliper_stmt_gen
79+ |Caliperステートメント変換(db) |caliper_log_db
80+ |Learning Analytics DB |learning_analytics_db
81+ .3+|分析システム |Superset(Web) |superset
82+ |Superset(DB) |superset-db
83+ |JupyterHub(Web/DB) |jupyterhub
8484|===
8585
8686----
@@ -137,21 +137,15 @@ image::learninglocker/add-new-lrs.png[align=center]
137137[[learninglocker_client_settings]]
138138==== クライアント情報の設定
139139サイドメニューの `Settings>Clients` から `New xAPI store client` を選択する。
140- `Overall Scopes` の `All` にチェックを入れ、LRSとして事前に作成したLRSを指定する 。
140+ `Overall Scopes` の `API All` にチェックを入れ、 `LRS (optional)` に上記で作成したLRSを指定する 。
141141
142142image::learninglocker/new-xapi-store-client.png[align=center]
143143
144144<<<
145145=== xAPIステートメント変換スクリプトの設定
146- `xapi_stmt_gen` コンテナに接続する。
147-
148- ----
149- $ docker exec -it xapi_stmt_gen bash
150- ----
151-
152146スクリプトの設定ファイルを編集する。
153147
154- ./usr/local/src /xapi_stmt_gen/config/app.js
148+ .xapi_stmt_gen /xapi_stmt_gen/config/app.js
155149[source, javascript]
156150----
157151const config = {
@@ -183,6 +177,13 @@ $ docker inspect learninglocker
183177...
184178----
185179
180+ 設定ファイルの変更を `xapi_stmt_gen` コンテナに反映する。
181+
182+ ----
183+ $ docker-compose build xapi_stmt_gen
184+ $ docker-compose up -d xapi_stmt_gen
185+ ----
186+
186187<<<
187188=== xAPIステートメントの生成
188189Moodle上での学習活動を実施した後、以下のコマンドでMoodleログをxAPIステートメントに変換する。
@@ -198,13 +199,13 @@ image::learninglocker/source.png[align=center]
198199なお、Moodleログの処理済み件数を算出する場合は以下のコマンドを実行する。
199200
200201----
201- $ docker exec -it moodle-docker_db_1 psql -U moodleuser moodle -c "SELECT count(*) FROM xapi_records_processed;"
202+ $ docker exec -it learning_analytics_db psql -U learning_analytics learning_analytics -c "SELECT count(*) FROM xapi_records_processed;"
202203----
203204
204205また、スクリプトのバージョンアップ等に伴い処理済みのMoodleログを再度処理したい場合は、以下のコマンドで変換処理の実行履歴を削除する。
205206
206207----
207- $ docker exec -it moodle-docker_db_1 psql -U moodleuser moodle -c "DELETE FROM xapi_records_processed;"
208+ $ docker exec -it learning_analytics_db psql -U learning_analytics learning_analytics -c "DELETE FROM xapi_records_processed;"
208209----
209210
210211<<<
@@ -328,6 +329,13 @@ $ docker-compose exec openlrw_mongo bash
328329
329330<<<
330331=== Supersetの設定
332+ ==== データベースの初期設定
333+ 以下のコマンドを実行し、データベースの初期設定を行う。
334+
335+ ----
336+ $ docker-compose exec superset /init.sh
337+ ----
338+
331339==== ログイン
332340Superset( http://localhost:8088 )にアクセスし、Adminユーザでログインする(Username: `admin` 、Password: `admin` )。
333341
@@ -353,7 +361,7 @@ image::superset/xapi/list-databases.png[align=center]
353361[%noheader, cols="1,3"]
354362|===
355363|Databases |learninglocker
356- |SQLAlchemy URI |postgresql://postgres@superset_db :5432/learninglocker
364+ |SQLAlchemy URI |postgresql://postgres@superset-db :5432/learninglocker
357365|Expose in SQL Lab|チェック
358366|===
359367
@@ -395,6 +403,17 @@ image::superset/xapi/added-xapi-statements.png[align=center]
395403<<<
396404`xapi_statements` テーブルを選択し、Learning Lockerに登録済みのステートメント件数が取得できることを確認する。
397405
406+ .xAPIステートメントの件数をカウントする例
407+ [cols="30%,30%,40%"]
408+ |===
409+ |大項目 |小項目 |設定値
410+ |Datasource & Chart Type |Visualization Type |`Table View`
411+ .3+|Time |Time Column |`stored`
412+ |Since |`∞` (指定なし)
413+ |Until |`∞` (指定なし)
414+ |GROUP BY |Metric |`COUNT(*)`
415+ |===
416+
398417image::superset/xapi/count-xapi-statements.png[align=center]
399418
400419<<<
@@ -412,7 +431,7 @@ image::superset/caliper/list-databases.png[align=center]
412431[%noheader, cols="1,3"]
413432|===
414433|Database |openlrw
415- |SQLAlchemy URI |postgresql://postgres@superset_db :5432/openlrw
434+ |SQLAlchemy URI |postgresql://postgres@superset-db :5432/openlrw
416435|Expose in SQL Lab|チェック
417436|===
418437
@@ -454,6 +473,17 @@ image::superset/caliper/added-caliper-statements.png[align=center]
454473<<<
455474`caliper_statements` テーブルを選択し、OpenLRWに登録済みのステートメント件数が取得できることを確認する。
456475
476+ .Caliperステートメントの件数をカウントする例
477+ [cols="30%,30%,40%"]
478+ |===
479+ |大項目 |小項目 |設定値
480+ |Datasource & Chart Type |Visualization Type |`Table View`
481+ .3+|Time |Time Column |`event.eventTime`
482+ |Since |`∞` (指定なし)
483+ |Until |`∞` (指定なし)
484+ |GROUP BY |Metric |`COUNT(*)`
485+ |===
486+
457487image::superset/caliper/count-caliper-statements.png[align=center]
458488
459489<<<
@@ -505,10 +535,10 @@ JupyterHubにログインし、ノートブック「link:jupyterhub/notebooks/im
505535image::jupyterhub/import-analysis-result-to-superset.png[align=center]
506536
507537<<<
508- `superset_db ` コンテナ上に登録された分析結果は以下のコマンドで参照することができる。
538+ `superset-db ` コンテナ上に登録された分析結果は以下のコマンドで参照することができる。
509539
510540----
511- $ docker exec -it superset_db psql jupyter -c "SELECT * FROM <tablename>;"
541+ $ docker exec -it superset-db psql jupyter -c "SELECT * FROM <tablename>;"
512542
513543index | object.definition.description.en |object.id | timestamp
514544--------+--------------------------------------------+------------------------------+---------------------------
@@ -523,7 +553,7 @@ Superset上で上記テーブルが格納されたjupyterデータベースを
523553[%noheader, cols="1,3"]
524554|===
525555|Database |jupyter
526- |SQLAlchemy URI |postgresql://postgres@superset_db :5432/jupyter
556+ |SQLAlchemy URI |postgresql://postgres@superset-db :5432/jupyter
527557|Expose in SQL Lab|チェック
528558|===
529559
@@ -541,11 +571,23 @@ image::superset/jupyter/add-jupyter-analysis-result.png[align=center]
541571
542572image::superset/jupyter/added-jupyter-analysis-result.png[align=center]
543573
544- グループ列、フィルター列、時刻列の指定などはテーブルの設定から必要に応じて行うこと 。
574+ グループ列、フィルター列、時刻列の指定などはテーブルの設定(テーブル名左横の `Edit record` から `List Columns` タブを選択)から必要に応じて行うこと 。
545575
546576image::superset/jupyter/edit-jupyter-analysis-result.png[align=center]
547577
548578<<<
549579JupyterHubで加工したステートメントが可視化できることを確認すること。
550580
551- image::superset/jupyter/visualize-jupyter-analysis-result.png[align=center]
581+ .ノートブックの実行結果を可視化する例
582+ [cols="30%,30%,40%"]
583+ |===
584+ |大項目 |小項目 |設定値
585+ |Datasource & Chart Type |Visualization Type |`Distribution - Bar Chart`
586+ .3+|Time |Time Column |`timestamp`
587+ |Since |`∞` (指定なし)
588+ |Until |`∞` (指定なし)
589+ .2+|Query |Metric |`COUNT(*)`
590+ |Series |`object.id`
591+ |===
592+
593+ image::superset/jupyter/visualize-jupyter-analysis-result.png[align=center, scaledwidth=90%]
0 commit comments