⚠️ 本検証はMoodle5.0+です。今後のバージョンアップ等により仕様が変更になる可能性がございます。


🎯 この機能とは?

Moodleでは、通常、受講者が小テスト(quiz)を開始した時点で「受験attempt」がリアルタイムでデータベースに作られます。

このとき、多少のサーバ負荷がかかるため、大人数が同時に小テストを受けるようなシチュエーションでは、深刻なサーバ負荷の不安が懸念されます。

この機能は、Moodleのパフォーマンス向上の試みとして、クイズの受験データ(attempts)を事前に生成しておくというものです。事前にattemptを作っておくことで、クイズ開始時の負荷を軽くし、アクセス集中によるトラブルを減らすことが期待されます。

【参考】Moodle用語での「attempt(アテンプト)」とは

Moodleではクイズの「受験の回数」や「1回の受験記録」のことを attempt と呼びます。

attemptを例えると、受験開始時点でMoodleが用意する、「回答が書かれる前の「受講者の名前記入済の問題文付き答案用紙」」 にあたります。



🔄 従来の動作 vs 事前作成受験機能

従来のMoodle動作

  1. 受講者Aがクイズをクリックして「開始」ボタンを押す
  2. Moodleがその瞬間に「受験attempt」を生成(データベースに記録)する
    • ※ここでシステムに負荷がかかる(特に同時アクセスが多い場合)

事前作成受験機能を有効にする場合

  1. 小テスト作成者(通常は教師)が事前に「このクイズは受講者が開始する前にattemptを作っておこう」と設定
  2. Moodleは、受講者のクイズ受験情報をバックグラウンドで先に生成しておく
  3. 受講者がクイズを開始する時は、その既に用意されたデータを使うだけなので、高速かつ軽負荷で開始される

✅ こんな時に便利!

  • 同時アクセスが多い大規模なサイト&コース
  • 試験開始時に一斉にアクセスが集中するような状況(例:中間試験、期末試験)
  • サーバーリソースが限られているMoodle環境
Warning

これは機能的な違いではなく、性能向上(パフォーマンス最適化)のための仕組みのため、受講者から見れば見た目や操作は変わりません。 事前生成のために多少のストレージやDB容量を使うことに変わりはないため、無制限に有効化するのではなく、必要性を考慮して的確に利用しましょう。



🛠️ 設定方法

サイト全体で機能を有効化

1-1.サイト管理 > プラグイン > 活動モジュール > 小テスト > 事前作成受験(quiz | precreateattempts) にチェックをつけます

💡 ヒント
オプションの「高度」と「ロック」は運用に直接的な影響はないため、チェックは外しておきましょう。

1-2. サイト管理 > プラグイン > 活動モジュール > 小テスト > 事前作成期間(quiz | precreateperiod)を設定します。これは、クイズの「受験attempt(受験データ)」を事前にいつ作成するかを決めるための設定です。

Information
  • すべてのクイズで共通して適用され、コース単位やクイズ単位で個別に変更することはできません
  • 最短で**「1時間前」**から設定可能です
  • 事前作成の実行はスケジュールタスクになっているため、cron処理に依存します
  • (受験を事前作成する \mod_quiz\task\precreate_attempts のデフォルトは59分毎です)
STEP
1

小テスト活動に適用

  1. 小テストを作成します
  2. 「小テスト受験可能期間の開始日時」を設定すると「事前作成受験」の設定が可能になります
    • ⚠️ 「小テスト受験可能期間の開始日時」を設定しないと、「事前作成受験」の設定項目は表示されません
  3. 「小テスト開始時間の〇時間前」を選択します
    • ※〇時間前はサイト全体で定義されています
  4. 他の設定項目に関しては通常の小テストと同様です
  5. 「問題を追加する」から通常どおり問題を設置します

これで準備は完了です。cron処理により「受験attempt」が生成されます。

STEP
2

確認方法

なお、生成された旨が明示的に見えるわけではありませんが、処理されたかの判別はタスクログからある程度可能です。
「サイト管理 > サーバ > タスクログ」


❓ よくある質問

小テストの開始予定を、作成時点から1時間未満に設定した場合、事前作成受験(Pre-create attempts)はどうなるの?

小テスト設定時に特に警告やエラーは表示されず、設定自体は保存されます。

ただし、「事前作成受験(Pre-create attempts)」機能は Moodle のスケジュールタスク(mod_quiz\task\precreate_attempts)によって定期的(通常59分毎)に実行されるため、以下のような動作になります。

▼実際の挙動(想定される流れ)

  • 開始時刻までにスケジュールタスクが実行されなかった場合 → 受験者が小テストを開始しようとすると、その場で通常どおり受験が生成されます(Pre-create の恩恵は受けない
  • スケジュールタスクが間に合った場合(たとえば作成後30分でタスク実行があったなど) → 事前作成された受験が存在し、該当ユーザーは即座にそのセッションを使って小テストを開始できます

補足

  • 「1時間未満」などの具体的な時間に関する制約や警告は現在のMoodle UI上には表示されませんが、スケジュールタスクの特性を理解していないと「Pre-create の設定が効いていないのでは?」という誤解を招く可能性があります
  • 受験開始タイミングとタスク実行タイミングのズレによって、事前生成の恩恵があったりなかったりするため、確実な事前生成を求める場合は、開始時刻をある程度(最低でもタスク間隔より)先に設定しておきましょう

🎉 いかがでしたか?

本記事でご紹介した内容は、現時点での挙動や設定画面の仕様から読み取れる範囲での推察です。

公式ドキュメントで明確に定義されているわけではありませんので、今後のバージョン変更等により挙動が異なる可能性もあります。

とはいえ、こうした動作の背景を探っていくことで、運用の工夫や新たな使い方のヒントが見えてくることもあります。

ぜひみなさんもいろいろ試しながら、可能性を探ってみてくださいね。

Follow me!