このクイズ学習システムのしくみ

─ どうやって「覚えた」「忘れた」を判断して、次に出す問題を決めているの? ─

1. 目的

このシステムは「長期的に覚える」ことを目的にしています。
ただ点数をつけるだけのミニテストではなく、 その子が今いちばん復習した方がいい問題を自動で30問集めてくる のが特徴です。

生徒はゲームみたいに遊ぶだけで、実はかなりガチの記憶サポート理論が裏で動いています。

2. 出題は「3つのグループ」から作られる

A. 復習タイムが“今ちょうど来た”問題

B. まだ見ていない新しい問題

C. ちょっと怪しい問題(弱点・危ないやつ)

1回で出す数は合計30問。
A(復習)を最大15問くらいまで、B(新規)を10問以上入れるのが基本。
残りをC(弱点)で埋める。

※この配分ロジックは next.php 側で制御しています。 「毎日Aばっかりでしんどい」「新しいのが全然出てこない」みたいな片寄りを防ぐためです。

3. 回答すると何が記録されるの?

1問ごとに、サーバーに次の情報が送られます:

その結果は user_progress というテーブル(学習記録)に入ります。
ここにはそのカードの「覚えやすさ」「次に出すべき日時」なども保存されます。

生徒の本名・住所などは保存しません。
IDはニックネーム方式です。先生側も「誰がどれを覚えてるか」の参考にはできるけど、個人情報とは分離できます。

4. 忘れるタイミングを自動で予測する(間隔反復)

このシステムは「間隔反復(spaced repetition)」という学習法を採用しています。 これは、覚えてからちょうど忘れそうな瞬間にもう一度出すと、記憶が一番定着する という考え方です。

裏でやってることを、ざっくりいうと:

逆に、間違えると 「またすぐ出すね(数分〜1日以内)」 みたいな短いスパンに戻ります。

要するに:
・よくできた問題 → しばらく出ない(飽きない)
・苦手な問題 → すぐまた出る(忘れにくい)
これをカードごとに自動で調整してる。

5. どうやって「次に出す日」を決めてるの?

各カードには「次に出す予定日時(due_at)」がついています。これは FSRS系アルゴリズム (忘却曲線ベースのスケジューラ)で計算されます。

ざっくりした流れ

それを使って「次は何日後にもう一回出すべきか?」を決めます。 めちゃ簡単に言えば、 たやすく正解できたカードは次の復習まで間隔が長くなるし、 怪しかったカードはすぐ戻ってくる

技術的には、recallProb() で「今、思い出せる確率R」を推定し、 updateSD() で S/D を更新し、 nextIntervalDays() で「じゃ次は○日後」を決め、 それを due_at に保存しています。

6. 休んだ日も大丈夫?

たとえば1日サボると、復習タイミング(Aグループ)の問題がたまります。 でもこのシステムは 「今日いきなり200問」みたいな地獄にならないように、Aの出題数に上限をかけます。

つまり、次にログインしたときは 「絶対やらなきゃいけない復習」と「新しい問題」をほどよくミックスして30問だけ出します。 キャパオーバーにならないように設計してあります。

7. IDとプライバシー

先生が「このID(ニックネーム)=だれ」かをひもづけることは不可能です。わかる名前をつけるとバレる可能性もありますが、基本的にはデータベースの名前を見ることはありません。パスワードも暗号管理を機械的にしているので、見れません。責任は取れないので、人にわかるIDやバレたら困るパスワードは設定しないようにしてください。

8. この方式の根拠(なぜ効くの?)

忘却曲線

人の記憶は、覚えてすぐはよく覚えているけど、時間がたつと急に落ちます。 でも「忘れかけたタイミングでちょうど復習」すると、落ち方がゆっくりになっていきます。 これをくり返すと、同じ内容でもより長い間キープできるようになります。

間隔反復(Spaced Repetition)

これは医学・語学学習・資格試験などでよく使われていて、 「一気に100回見る」より「忘れそうな頃に数回見る」ほうが定着しやすい、という考え方です。 有名な単語帳アプリ(Ankiなど)と同じ系統の考え方です。

個別最適化

クラス全員に同じプリントを配って同じペースで復習させるのではなく、 生徒ごとに“必要そうなタイミング”だけを出すので、ムダ打ちが減ります。 これは家庭学習・すきま時間で特に効果があります。

9. まとめ

つまりこれは「宿題チェッカー」じゃなくて
あなたの脳みその専属コーチです。