ETLツールを活用したOpen LRWへのCaliper標準形式によるデータ集積の拡張の試み
6
0
0
全文
(2) Vol.2019-CLE-27 No.16 2019/3/21. 情報処理学会研究報告 IPSJ SIG Technical Report. 開発した。ETL2 は、夜間バッチで、Moodle の内部デー. s e l e c t a . i d u s e r i d , a . username , a . f i r s t n a m e ,. タベース (MariaDB) から変換に必要なデータのみをロ. a . lastname , x . i d c o u r s e i d ,. グサーバ上のローカルデータベース (MariaDB) に同期. y . f u l l n a m e , y . shortname , y . idnumber. している。ETL1 は、Moodle のプラグイン Caliper log. from m d l u s e r s u b a , ( s e l e c t c u s t o m i n t 1 a s i d from m d l e n r o l s u b b. store [4] から OpenLRW に成り代わって Caliper データ. left. を WebAPI(REST) で受け、その JSON データ内にある. on b . c u s t o m i n t 1=c . i n s t a n c e i d. Moodle の学生や科目を識別する内部コードから、ローカル 「データベース参照により実際の学生番号や科目コードを導. left. 科目コード等を追加された形で Caliper データを蓄積する. join. mdl role assignments sub d. on c . i d=d . c o n t e x t i d where b . c o u r s e i d ={ c i d } and c . c o n t e x t l e v e l =50. 出し、Caliper 規格の extension として追加し、OpenLRW の WebAPI に渡すことで、OpenLRW は本来の学生番号、. join mdl context sub c. and d . m o d i f i e r i d =2 and d . u s e r i d ={u i d } union select. i d from m d l c o u r s e s u b where i d ={ c i d }. ことができる。. ) x. 2. 動作環境. where a . i d ={u i d }. left. ここでは、利用した Moodle サーバと ETL ツール及び. OpenLRW を導入したログサーバのスペック等を示す。. 図 2. j o i n m d l c o u r s e s u b y on y . i d = x . i d. 学生番号、科目コード等を導出する SQL。(ただし、{uid}、. {cid} は、各々、Moodle 内部のユーザ ID、科目 ID). Caliper log store と OpenLRW 導入時と既存部分も弱冠異 なるが、詳細は [6] を参照して欲しい。. mdl course テーブルで科目コード等の科目情報を取得でき る (もちろん登録してあればであるが)。ただし、一つの科. 2.1 Moodle サーバ. 目を複数科目として扱うことのできるコースメタリンクを. • CentOS Version 7.6. 使用していると、どの子科目にユーザが所属しているかに. • Moodle Version 3.4.7. よって科目名や科目コード等の情報が変化する。この機能. • Caliper log store 3.2.3. は場合によっては非常に便利なこともあり、今回対象とし. – Event Store URL: http(s)://ログサーバ名:9965/key/caliper – API key :. ている本学の Moodle サーバではかなり使われている。 そこで、今回はコースメタリンクに対応することとし た。そのためには、Moodle の mdl enrol、mdl context、. db.mongoOrg.find().pretty() で得られた apiKey. mdl role assignments の各テーブルの一部が必要になる。. – Send statements immediately to event store? : Yes. よって、Moodle から一部カラムを同期する必要のあるテー. – Batch size : 200. ブルは 5 つで、そのテーブルと必要なカラムを表 1 に示す。 また、これらのテーブルから、学生番号や科目コード等. 2.2 ログサーバ. の情報を取り出す SQL を図 2 に示す。コースメタリンク. ここでは ETL ツールとして、オープンソースで利用で. を使用する場合とそうでない場合では導出方法が異なるた. きる Talend Open Studio [8, 10] の ESB 版を使っており、. め、union 結合を用いている。caliper の extensions への追. GUI エディタ上で処理ブロックの組み合わせで機能を確認. 加の際の基本となる SQL コードではあるが、詳細は後述. しながら Java アプリケーションを構築できる。. する。. • CentOS Version 7.5. Moodle のデータベースとログサーバのデータベースを. • ETL ツール: Talend Open Studio ESB Version 7.1.1. 同期するということは、Moodle のデータベースからデー. • OpenLRW Version. タを読み込み、ログサーバのデータベースを更新するとい. • MongoDB Version 3.6.3. うことになる。このプロセスを ETL ツールの Talend で行. 3. システム構築と動作検証 3.1 Moodle データベース部分同期 (ETL2). うには、tDBInput モジュールと tDBOutput モジュールを. Flow(row) で接続するだけで実現できる。これを、図 3 に 示すように、5 つ作成することで全てのデータベースの同. Moodle の内部 ID から学生番号や科目コードを導出する. 期をとるアプリケーションを作成できる [10]。このままだ. ために、Moodle のデータベースの一部データが必要にな. と、1 個 1 個順番にテーブルを同期することになるが、並. るため、図 1 の ETL2 にあたるアプリケーションを ETL. 列で処理することも可能である。今回は、深夜に一度では. ツールで開発した。. あるが、動作中の Moodle サーバへの負荷を考え、並列に. コースメタリンクを使用していない場合は、基本的に. はしなかった。なお、tLogRow モジュールは、途中のデー. Moodle の mdl user テーブルで学生番号等 user 情報を、. タを確認するために設置しているが、図のように無効化す. ⓒ 2019 Information Processing Society of Japan. 2.
(3) Vol.2019-CLE-27 No.16 2019/3/21. 情報処理学会研究報告 IPSJ SIG Technical Report 表 1 Moodle と同期するテーブル Moodle 上のテーブル名. ログサーバ上のテーブル名. mdl user. mdl user sub. 同期するカラム名. mdl course. mdl course sub. mdl enrol. mdl enrol sub. mdl context. mdl context sub. mdl role assignments. mdl role assignments sub. username, firstname, lastname id, fullname, shortname, idnumber id, courseid, customint1 id, contextlevel, instanceid id, contextid, userid, modifierid. Moodle 内部 ID を用いたデータベースクエリができない。 そこで、一旦、tFlowToIterate ブロックを用いて、それま でのスキーマとして保存されていたデータを一旦、global 変数に保存した上で、ローカルデータベースへのクエリを 行った。 少しトリッキーではあるが、図 7 に示すような SQL を 用いることで、学生番号等の問合せを行うと同時に global 変数に保存された変数もスキーマにコピーすることがで きた。. “select” 以下、最初の 3 行は、global 変数をスキーマに 保存するためで、その後の 3 行は、新たに問合せて得た 学生番号等の情報で、最後の方は、SQL の where 句に、. Moodle の内部 ID を使っているところである。ここも弱冠 図 3 ETL2(Moodle のデーベースの一部を同期する) のブロック編 集画面. 問題があり、REST で送られてきた「https://{Moodle の. FQDN}/user/XXXXX」の「XXXXX」を取り出すために MySQL の substr と instr コマンドを用いている。最後の. ることも可能である。. limit 1 は、コースメタリンクを利用した場合、学生には 1 つの科目だが、担当教員には複数の科目が表示されてしま. 3.2 WebAPI の中継と extension の追加 (ETL1) Moodle の Caliper log store から REST でデータ受信. うため、今回は、学生番号等も同時に取得しているため、 表示科目コードを 1 つに絞っている。. し、対応する学生番号等データを追加して Open LRW に. ここで得られた学生番号や科目コードを extensions とし. REST でデータを渡すために、図 1 の ETL1 にあたるアプ. て加えて、Caliper 形式の JSON テキストに再構成するの. リケーションを ETL ツール Talend で開発した。Talend. が、tWriteJSONField ブロックで、その設定の一部を図 8. 上のブロックダイアグラムを図 4 に示す。. に示す。. tLogRow モジュールは途中のデータを確認するために. 最後の tReplace ブロックは、上記 tWriteJSONField ブ. 設置しているものなので動作には無関係だが、それを除い. ロックは「@」の含まれる変数名が使えないため、代わり. ても結構な処理ブロックの連結となった。主な処理ブロッ. に「 AT 」としておき、このブロックで「@」に戻して. クの役割を図 5 に示す。. いる。. Talend の処理ブロックの接続方法には数通りあるが、. 以上のように extensions に学生番号や科目コード等の付. データを渡したい場合、スキーマとよばれるデータ構造. 加情報を加えた JSON テキストを、最後の tRESTClient ブ. を渡すことができる flow 接続 (row) を用いる。tExtractJ-. ロックで、OpenLRW の 9966 ポートに REST 形式で送っ. SONFields ブロックでは、指定従って JSON の各オブジェ. ている。. クトをスキーマに変換し、次のブロックに渡す。変換設定. 4. 動作検証と考察. の様子を図 6 に示す。 読み込んだ JSON データには、Moodle のユーザ、科目. 本システムで extension に学生番号や科目コード等を. を表す内部 ID が含まれ、前のステップでデータとして利. extensions に追加した例の一部を図 9 に示す。この JSON. 用可能となった。ここで、前節で示した ETL2 で同期した. を OpenLRW に渡したものを MongoDB から読み出すと、. ローカルデータベースにその ID を問い合わせて、学生番. extensions が加わった形で蓄積されていることも確認した. 号や科目コード等を取得したいのであるが、データベー. (図は省略)。. スからデータを読み込むブロック tDBInput は flow 接続 ができないようであり、このままでは、REST で取得した ⓒ 2019 Information Processing Society of Japan. ただし、実行速度等に関してはまだ測定しておらず、今 後の課題としたい。. 3.
(4) Vol.2019-CLE-27 No.16 2019/3/21. 情報処理学会研究報告 IPSJ SIG Technical Report. 図 4 ETL1WebAPI の中継と extension の追加する) の Talend 上のブロック編集画面. 図 6 tExtractFields の変換設定の一部. を減らす効果等を総合的に考えると、かなり効果的なツー ルであるといえるのかもしれない。 また、一つの目的のために設計、構築されたシステムで 図 5. ETL1(Moodle の Caliper log store から REST でデータ受. はないので、修正や変更が容易な点もあげられる。例えば、. 信し、対応する学生番号等データを追加して Open LRW に. 今回のシステムの入力部分を REST ではなく、別の LMS. REST でデータを渡す) 仕組み. や e ポートフォリオのデータベースからの入力に変更する だけで、それらのシステムの学習履歴を Caliper に準拠し. ETL ツール Talend を使ってみた印象であるが、WebAPI. た形式で蓄積できそうである。このような柔軟性があると. の中継を行い、その途中で他のデータベースに問合せて得. ころも利点であろう。今後、他のシステムの Caliper 形式. た項目を追加するといった処理を、プログラムのソース. によるデータ蓄積にも挑戦したい。. コードを全く書かずに実現できるところは十分評価できる と思う。ただし、初めて利用したことも原因として考えら れるだろうが、ツール自体の使い方がわからなかったり、. 謝辞 本研究は JSPS 科研費 15H02795 の助成を受けたもので. どのような処理ブロックがあるのか、どのような組み合. す。また、ETL ツールのアイデアをいただいた京都工芸繊. わせでできるのか等、それなりに悩む時間も多く、場合に. 維大学情報科学センターの永井孝幸先生に深く感謝します。. よってはプログラムを書いたほうが早いかもと思えること もあった。しかし、ブロックダイアグラムによる処理の見 える化、明確化、ソースコードをなくすことによる属人性 ⓒ 2019 Information Processing Society of Japan. 4.
(5) Vol.2019-CLE-27 No.16 2019/3/21. 情報処理学会研究報告 IPSJ SIG Technical Report ”select ” +” ’”+( S t r i n g ) globalMap . g e t ( ” row4 . s e n s o r ” ) +” ’ a s s e n s o r , ” +” ’”+( S t r i n g ) globalMap . g e t ( ” row4 . sendTime ” ) +” ’ a s sendTime , ” +” ’”+( S t r i n g ) globalMap . g e t ( ” row4 . d a t a A T c o n t e x t ” ) +” ’ a s data ATcontext , ” ..... +”a . username a s d a t a a c t o r e x t e n s i o n s u s e r n a m e , ” +”a . f i r s t n a m e a s d a t a a c t o r e x t e n s i o n s f i r s t n a m e , ” +”a . l a s t n a m e a s d a t a a c t o r e x t e n s i o n s l a s t n a m e , ” ...... +” where a . i d=s u b s t r ( ’ ” + ( S t r i n g ) globalMap . g e t ( ” row4 . d a t a a c t o r A T i d ” ) +” ’ , i n s t r ( ’ ” + ( S t r i n g ) globalMap . g e t ( ” row4 . d a t a a c t o r A T i d ” ) + ” ’ , ’ u s e r / ’ ) +5 , c h a r l e n g t h ( ’ ” + ( S t r i n g ) globalMap . g e t ( ” row4 . d a t a a c t o r A T i d ” ) +” ’) ) ” +” l i m i t 1”. 図 7 tDBInput ブロックの SQL(一部). 図 8. 参考文献 [1] [2]. [3]. [4]. [5]. [6]. [7]. tExtractFields の変換設定の一部. [8]. N Sclater, A Peasgood, J Mullan : Learning analytics in higher education, Jisc. Accessed February, 2016. 緒方 広明, 殷 成久, 毛利 考佑, 大井 京, 島田 敬士, 大久 [9] 保 文哉, 山田 政寛, 小島 健太郎 : 教育ビッグデータの利 活用に向けた学習ログの蓄積と分析, 教育システム情報学 会誌, vol. 33, no. 2, pp. 58—66 (2016). IMS Caliper : https://www.imsglobal.org/activity/caliper [10] (2019 年 2 月確認) Caliper log store : https://moodle.org/plugins/logstore_caliper (2019 年 2 月確認) OpenLRW : https://github.com/Apereo-Learning-Analytics-Initiative/ OpenLRW (2019 年 2 月確認) 中野 裕司, 槙原 竜之輔, 喜多 敏博, 戸田 真志, 久保田 真 一郎, 右田 雅裕, 杉谷 賢一 : Caliper log store と Open LRW を用いた Moodle 上の学習履歴のログサーバへの Caliper 標準形式による集積の取り組み. 情報処理学会研 究会報告, Vol.2018-CLE-25, No.11, 北海道大学, pp.1–5 (2018). 田中 哲雄, 湯本 真樹, 齋 礼 : 企業情報システムにおける連 携技術, 電気学会論文誌C, Vol. 124, No. 5, pp. 1051–1057 (2004).. ⓒ 2019 Information Processing Society of Japan. 永井 孝幸, 山岡 裕美, 桝田 秀夫 : , 京都工芸繊維大学に おける利用者原簿管理基盤の強化と連携サービスの構築, 情報処理学会研究会報告, Vol.2018-CLE-25, No.9, 北海道 大学, pp.1–8 (2018). 淺原 彰規, 森田 秀和, 海野 英一郎, 池本 理, 小野 寛太 : 非順序実行型データベースにより多次元配列データを管理 するマテリアルズ・インフォマティクス・プラットフォー ムの開発, 情報処理学会 デジタルプラクティス, Vol. 10, No. 1, pp. 224–243 (2019). Talend, Inc. : Talend Components Reference Guide 7.1.1 (Creative Commons Public License), November 12, 2018.. 5.
(6) Vol.2019-CLE-27 No.16 2019/3/21. 情報処理学会研究報告 IPSJ SIG Technical Report. { ” s e n s o r ” : ” h t t p s : / /md . kumamoto−u . ac . j p ” , ” sendTime ” : ”2019−02−25T02 : 3 4 : 3 6 . 5 1 8 Z ” , ” data ” :. [. { ” @context ” : ” h t t p : / / p u r l . i m s g l o b a l . o r g / c t x / c a l i p e r / v1 / Context ” , ” @type ” : ” h t t p : / / p u r l . i m s g l o b a l . o r g / c a l i p e r / v1 / ViewEvent ” , ” actor ”: { ” @id ” : ” h t t p s : / /md . kumamoto−u . ac . j p / u s e r / 8 8 8 8 8 ” , ” @context ” : ” h t t p : / / p u r l . i m s g l o b a l . o r g / c t x / c a l i p e r / v1 / Context ” , ” @type ” : ” h t t p : / / p u r l . i m s g l o b a l . o r g / c a l i p e r / v1 / l i s / P e r s o n ” , ”name ” : 太郎 ” 熊本 ” , ” d e s c r i p t i o n ” : ”No NULL! ” , ” extensions ”: { ” username ” : ” 1 2 3 4 5 6 7 8 ” , ” f i r s t n a m e ” : 太郎 ” ” , ” l a s t n a m e ” : 熊本 ”” } }, ..... ” group ” : { ” @id ” : ” h t t p s : / /md . kumamoto−u . ac . j p / c o u r s e / 9 9 9 9 9 ” , ” @context ” : ” h t t p : / / p u r l . i m s g l o b a l . o r g / c t x / c a l i p e r / v1 / Context ” , ” @type ” : ” h t t p : / / p u r l . i m s g l o b a l . o r g / c a l i p e r / v1 / l i s / C o u r s e S e c t i o n ” , ”name ” : 情報基礎 ” B2018 ” , ” d e s c r i p t i o n ” : ”A Moodle c o u r s e ” , ” extensions ”: { ” f u l l n a m e ” : 情報基礎 ”B 17(2018 −58 − A0157 ) ” , ” shortname ” : ”2018−58−A0157 ” , ” idnumber ” : ”2018−58−A0157 ” }, ...... 図 9 最終的に得られた Caliper データ (一部, 氏名、学生番号、内部 ID 等は仮名). ⓒ 2019 Information Processing Society of Japan. 6.
(7)
図
関連したドキュメント
目指す資格 推奨 Microsoft 社の Access を用い、データベースの設計・完成までを目標 授業概要.. とする。
1 モデル検査ツール UPPAAL の概要 モデル検査ツール UPPAAL [19] はクライアント サーバアーキテクチャで実装されており,様々なプ ラットフォーム (Linux, windows,
に転換し、残りの50~70%のヘミセルロースやリグニンなどの有用な物質が廃液になる。パ
に転換し、残りの50~70%のヘミセルロースやリグニンなどの有用な物質が廃液になる。パ
Maurer )は,ゴルダンと私が以前 に証明した不変式論の有限性定理を,普通の不変式論
Bluetooth® Low Energy プロトコルスタック GUI ツールは、Microsoft Visual Studio 2012 でビルドされた C++アプリケーションです。GUI
① Google Chromeを開き,画面右上の「Google Chromeの設定」ボタンから,「その他のツール」→ 「閲覧履歴を消去」の順に選択してください。.
(今後の展望 1) 苦情解決の仕組みの活用.