学習系統でいちばんつらいのは、「終わるのかどうか分からない」という状態です。やった量は記録されるのに、残りがどれだけかは誰も把握していない。この回では、残量を見えるようにし、テストから逆算し、復習のタイミングを機械に計算させるところまでを設計します。
1. 「やった量」ではなく「残った量」を見る
学習記録アプリの多くはやった量を可視化します。勉強時間、こなしたページ数、連続日数。モチベーションには効きますが、「間に合うのか」には答えてくれません。
見るべきは 、つまり残量の推移です。ソフトウェア開発の現場で使われる考え方ですが、期限が動かせない計画という点で受験と構造が同じです。
| 見方 | 分かること | 分からないこと |
|---|---|---|
| やった量(積み上げ) | 頑張ったかどうか | 間に合うかどうか |
| 残った量(バーンダウン) | このペースで終わるか | 頑張りの量 |
両方あってよいのですが、判断に使うのは後者です。そして残量は、課題を数えられる単位に分けておかないと計算できません。「算数の問題集」ではなく「第5章 全12題」まで割っておく。この分割だけは最初に人がやる必要があります。
この分割は面倒に感じますが、一度やれば以降ずっと効きます。しかも副産物があって、粒度が細かいほど「今日はここまで」が明確になり、本人が終わりを認識しやすくなります。「問題集をやる」と「第5章の12題のうち今日は3題」では、取りかかるまでの心理的な重さがまったく違う。残量管理は親のための道具に見えて、実は本人のための道具でもあります。
なお、目次を に読ませて分割の下書きを作らせることはできます。ただし単元の切り方は家庭ごとの都合で決まる(塾のカリキュラムに合わせるのか、本人の苦手に合わせるのか)ので、下書きを人が直す前提で使ってください。ここを全自動にしようとすると、かえって手戻りが増えます。
2. スキャンする範囲を決める
教材のスキャンは、全部やろうとすると必ず止まります。分厚い参考書を1冊撮り切るのに何時間かかるか考えれば明らかです。やらない範囲を決めるのが運用の要点です。対象さえ絞れば、 をかけて検索できる形で保管するところまで含めても、現実的な作業量に収まります。
| 対象 | スキャンする? | 理由 |
|---|---|---|
| 間違えた問題 | する | 最も再訪する。誤答ノートの代わりになる |
| 繰り返し参照する要点ページ | する | 公式・年号・用語。移動中に見返せる価値が高い |
| テストの結果票 | する | EP.4 の分析の入力になる |
| 参考書の全ページ | しない | 手元に本がある。時間対効果が合わない |
| 一度しか解かない演習 | しない | 再訪しないものを撮っても管理コストが増えるだけ |
教材のスキャンは、家庭内で本人が使うための私的複製の範囲に留めてください。塾の友人と共有する、SNS に載せるといった行為は扱いがまったく変わります。共有範囲を家庭内に閉じる設計にしておくのが安全です。あわせて、外部サービスへ画像を送らずに手元で処理できる構成も検討する価値があります。
3. テストから逆算する
定期考査も模試も、日付が動きません。したがって計画は積み上げではなく で組みます。「今日から何をやるか」ではなく「その日に仕上がっているために、いつ何が終わっている必要があるか」。
- テスト日を置く(動かない基準点)
- 総復習に必要な日数を確保する(直前に詰め込まない前提を作る)
- 範囲を分割し、逆向きに配る(残り日数 ÷ 単位数)
- バッファを1〜2日置く(体調不良は必ず起きるという前提で組む)
この計算自体は単純です。単純だからこそ機械にやらせる価値があります。予定が変わるたびに人が引き直すのは続きません。
from datetime import date
TASKS = [ {"name": "算数 第5章", "total": 12, "done": 4}, {"name": "理科 電気", "total": 20, "done": 3}, {"name": "漢字 まとめ", "total": 30, "done": 22},]
TEST_DAY = date(2026, 9, 20)BUFFER_DAYS = 2 # 体調不良は必ず起きる前提で確保する
def outlook(tasks, test_day, today=None): today = today or date.today() usable = (test_day - today).days - BUFFER_DAYS remaining = sum(t["total"] - t["done"] for t in tasks) if usable <= 0: return {"usable_days": usable, "remaining": remaining, "per_day": None} return { "usable_days": usable, "remaining": remaining, "per_day": round(remaining / usable, 1), }
o = outlook(TASKS, TEST_DAY)print(f"残り {o['remaining']} 題 / 使える日数 {o['usable_days']} 日")print(f"→ 1日あたり {o['per_day']} 題ペースが必要")
# 「遅れ」ではなく「あと何題」で見せると、受け取り方が変わるfor t in sorted(TASKS, key=lambda t: (t["total"] - t["done"]), reverse=True): print(f" {t['name']}: あと {t['total'] - t['done']} 題")4. 復習のタイミングを計算させる
、つまり間隔を空けて思い出す方が定着しやすいという性質はよく知られています。問題は、その計算を人間が管理できないことです。間違えた問題ごとに「次はいつ」を覚えていられる親はいません。
ただし受験期には制約があります。理想的な復習間隔より、テストまでの日数の方が短いことが普通に起きる。その場合は理想を諦めて、期限内に何周できるかを優先します。
from datetime import date, timedelta
# 間隔は広げていくが、テストまでに収まらなければ機械的に詰めるINTERVALS = [1, 3, 7, 16]
def review_days(first_wrong: date, deadline: date) -> list: days = [] for gap in INTERVALS: d = first_wrong + timedelta(days=gap) if d <= deadline: days.append(d) if days: return days
# 理想の間隔が1つも入らない場合は、残り日数を等分する span = (deadline - first_wrong).days if span <= 0: return [] step = max(1, span // 2) return [first_wrong + timedelta(days=i) for i in range(step, span + 1, step)]
for d in review_days(date(2026, 9, 1), date(2026, 9, 20)): print(f"復習日: {d}")5. 本人に渡す形
同じデータでも、渡し方で受け取り方が変わります。EP.1 で書いた「本人には加工して渡す」の具体です。この変換は に下書きさせて親が調整するのに向いた作業でもあります。
| 避けたい形 | 望ましい形 | 違い |
|---|---|---|
| 「3日遅れています」 | 「あと18題です」 | 責める形か、終わりが見える形か |
| 「正答率が低い」 | 「この3問をもう一度」 | 評価ではなく次の行動 |
| 全課題の一覧 | 今日やる分だけ | 全体量は親が見ればよい |
全体の残量・ペース・遅れは親が見る。本人が見るのは今日やる分と、終わりまでの距離。同じ元データから2つのビューを作るだけですが、これをやるかどうかで運用の空気がかなり変わります。
6. 落とし穴
- 全部スキャンしようとする: 途中で止まり、中途半端な資産だけが残る
- 課題を分割しないまま管理する: 「問題集1冊」では残量が計算できない
- やった量だけを見る: 頑張りは見えるが間に合うかは見えない
- バッファを取らない: 体調不良は起きる。起きても崩れない計画にする
- 理想の復習間隔に固執する: 期限が優先。入らないなら詰める
- 本人に全体量を見せる: 圧になる。今日の分だけ渡す
- 私的複製の範囲を超える: 共有範囲は家庭内に閉じる
7. ふくふくの進め方
残量で見る、期限から逆算する、バッファを持つ。ここで書いたことは、納期のあるプロジェクト管理そのものです。違うのは、対象が仕事ではなく子どもであること。だからこそ数字の見せ方に配慮が要る、というのが家庭に持ち込んだときの最大の学びでした。
8. ここまでのまとめ
- やった量ではなく残った量を見る。判断に使えるのは の側
- 課題は数えられる単位に分割しておく。ここだけは人がやる
- スキャンは 間違えた問題・繰り返し参照するもの・結果票 に限定する
- 計画は 。テスト日を基準に逆向きに配り、バッファを1〜2日置く
- は機械に計算させる。ただし期限が優先
- 親が見るビューと本人が見るビューを分ける。本人には今日の分だけ
次回 EP.4 は、テストの結果から次の方針を決める話です。点数ではなく取りこぼしの構造を見て、対応方針を1枚にまとめるところまで扱います。この連載は、読者リアクションに応じて随時追加していきます。
この記事の感想を教えてください
あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。