小テストモジュールの機能追加について

小テストモジュールの機能追加について

- Kyohei U の投稿
返信数: 5

現在、大学研究としてmoodleの中の小テスト(quiz)モジュールの機能追加を行おうと考えています。
その機能が実装可能なのかどうか、学生1人で作ることが現実的なのかをお聞きしたいです。

実装する機能としては、

・問題を解答した瞬間(選択問題の場合には選択肢にチェックを入れたとき)に解答情報の保存と解答時間の保存
・テスト中に解答画面が常にアクティブかを判別する
・教師がレビューを行う際に、解答履歴として解答の遷移と回答時間を確認できる

の3つです。

機能の目的としては、生徒が各問題にどれだけ時間をかけ選択肢を変更したか、問題をどういう順番で解答したのかを明らかにすることで、解答行為の特徴を見つけることができると考えています。また、オンライン上で不正行為を行った場合に解答情報に特徴が出るのか検証を行いたいです。

現在あるquizモジュールの問題作成等の機能はそのままで、解答する際の処理とレビューを行う際の処理の部分を修正しようと考えています。

言語に関して一通り勉強しましたが、基本的なことのみでmoodleのプログラムがどういう動きをしているのか見てすぐにわかるレベルではないです。
実装するのであれば、どういうことをする必要があるか教えてもらえると幸いです。


moodleのバージョンは、Moodle 3.5.5+ (Build: 20190328) を使用しています。


Kyohei U への返信

Re: 小テストモジュールの機能追加について

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

> その機能が実装可能なのかどうか、

不可能ではないと思います。

> 学生1人で作ることが現実的なのかをお聞きしたいです。

こちらこも、非現実的ではないと思います。

> 実装するのであれば、どういうことをする必要があるか教えてもらえると幸いです。

まず、実際に小テストを受験しながら、phpMyAdmin等のツールで以下のテーブルの変化を確認した方が良いと思います。

  • mdl_question
  • mdl_question_answers
  • mdl_question_attempts
  • mdl_question_attempt_steps
  • mdl_question_attempt_step_data

また、以下のMoodleオンラインドキュメントおよびページが研究の参考になるのではと思います。

[Development - MoodleDocs]
https://docs.moodle.org/dev/

[html - Inserting data into database using AJAX-php using onclick - Stack Overflow]
https://stackoverflow.com/questions/55085900/inserting-data-into-database-using-ajax-php-using-onclick

[javascript - Insert MySQL record with PHP and AJAX - Stack Overflow]
https://stackoverflow.com/questions/10130192/insert-mysql-record-with-php-and-ajax

[How to Detect Browser Window is Active or not - JavaScript by Yogesh Singh]
https://makitweb.com/how-to-detect-browser-window-active-or-not-javascript/

[Insert and load records using Jquery, Ajax and Php without refreshing page - tutorialsmint.com]
http://tutorialsmint.com/tutorial/insert-and-load-records-using-jquery-ajax-and-php-without-refreshing-page-1546928925

添付 mdl_question_tables.png
Mitsuhiro Yoshida への返信

Re: 小テストモジュールの機能追加について

- Kyohei U の投稿
Mitsuhiro Yoshidaさん、ありがとうございます

紹介してもらったツール、サイトを利用して頑張ってみようと思います。
どうしてもわからないことがあった場合にはまた質問しますので、
お時間ありましたら助言いただけると幸いです。
Mitsuhiro Yoshida への返信

Re: 小テストモジュールの機能追加について

- Kyohei U の投稿
Mitsuhiro Yoshidaさん
前回の質問と概要は変わらないため返信という形で質問出せていただきます。

前回教えていただいたように、phpmyadminを使ってテーブルの変化や何が保存されているのか理解はできたつもりなのですが、
肝心のどこをいじるべきなのかわからない状態です。

解答履歴画面から、クイズの保存された時刻が1ページのクイズ内で同じであったため「次ページ」「テスト終了」ボタンによる保存処理がされているだろうと考えています。
ブラウザ上に表示されたページから検証を使ってファイルごとの役割などを調べようとしたのですがうまくいきませんでした。

クイズモジュール内で、クイズの解答、クイズの保存の処理がどこで行われているか教えていただきたいです。
お時間ありましたらご教授よろしくお願いいたします。
Kyohei U への返信

Re: 小テストモジュールの機能追加について

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

> クイズモジュール内で、クイズの解答、クイズの保存の処理がどこで行われているか教えていただきたいです。

大まかに確認したところでは以下3つのプログラムファイル内で処理されているように思えます。

  • mod/quiz/attemptlib.php
  • mod/quiz/autosave.ajax.php
  • mod/quiz/attempt.php

すでにお使いかもしれませんが、私はサクラエディタのGrep機能を使ってMoodleのプログラムファイルを読んでいます。例えばキーワード「save」を使って小テストモジュール関連プログラムファイル群 (mod/quiz/*) をサクラエディタのGrep機能で検索した場合、Moodle 3.5.16 (Build: 20210118) では194件の該当箇所が表示されます。194箇所すべてを確認する必要はありませんが、小テスト受験結果を保存しているだろうと思われる部分を確認することで目的の場所にたどりつけるのではないでしょうか。

現在のところ、小テストモジュールでは小テスト受験者が問題の選択肢を選択 (クリックまたはタップ) するたびに当該データが保存されることはありませんので、小テスト受験時の行動記録用データベーステーブルを新たに作成して、Ajax等でリアルタイム処理※1する必要があると思います。

参考資料:
[サクラエディタ]
https://sakura-editor.github.io/

[※1 Ajax処理とMySQLを使って、ページを更新せずにデータべ―スの読み書き - Qiita]
https://qiita.com/yukako_nishimura/items/cdb82a3b83c98dc3975e

添付 SAKURA editor.png
Mitsuhiro Yoshida への返信

Re: 小テストモジュールの機能追加について

- Kyohei U の投稿
返信ありがとうございます。

自分はVScodeを使っているので同様の機能を使用してみたいと思います。
頑張ってみます。