AIで研修の受講進捗を整理するときは、教材を開いたこと、小テストを受けたこと、必要条件をすべて満たしたことを分けます。記録が取得できていない人を未受講へ入れると、誤った案内や、実態と違う完了率につながります。
この記事では、架空の受講者6人から、完了確認・進行中・未着手・確認不能の一覧を作ります。成果物は、状態の根拠と次の確認先が分かる進捗表です。実際の受講記録、AI分類、LMS設定、受講者への連絡は検証していません。
目次
教材単体の完了と、研修全体の完了を分ける
Moodleの公式資料では、活動ごとの完了条件に閲覧、評点、合格点などがあり、条件は設定に依存します。また、コース全体では指定した条件をすべて満たすのか、一つでもよいのかを選べます。教材の完了表示が一つあるだけで、コース全体も完了とは限りません。Moodle:活動の完了条件(新しいタブで開く)、コースの完了条件(新しいタブで開く)
今回の架空研修は、教材A完了、教材B完了、小テスト80点以上の3条件をすべて満たしたら「完了確認」とします。80点は独自例の条件で、一般の研修やMoodleの共通基準ではありません。活動アイコンや受験回数による製品側の完了判定を、そのまま再現した例でもありません。
最初に、研修ID、教材版、対象者一覧、判定条件の版、集計時点を固定します。以下は同じ研修・同じ教材版について、2026年10月20日15時、日本時間で整理した設定です。
不完全な記録と、未実施の記録を区別する
表は横にスクロールできます
| 受講者 | 教材A | 教材B | 小テスト | 着手記録 | 判定用記録 |
|---|---|---|---|---|---|
| L01 | 完了 | 完了 | 85点 | あり | 取得済み |
| L02 | 完了 | 未完了 | 90点 | あり | 取得済み |
| L03 | 未完了 | 未完了 | 未受験 | なし | 取得済み |
| L04 | 完了 | 未取得 | 80点 | あり | Bの記録未取得 |
| L05 | 完了 | 未完了 | 70点 | あり | 取得済み |
| L06 | 完了 | 完了 | 80点 | あり | 取得済み |
この表は独自の架空データです。L03の「未受験」は、記録を確認して受験がない状態です。L04の「未取得」は、教材Bを完了したか判断する材料がない状態です。空欄という見た目だけで同じ値へ変換しません。
また、未完了は未着手と同義ではありません。教材を途中まで進めても、完了条件に届かなければ未完了です。今回、未着手と判定するには、取得済み記録で着手がないことも確認します。完了欄がすべて未完了だから、という理由だけでは決めません。
状態ごとに、残っていることを示す
表は横にスクロールできます
| 受講者 | 今回の状態 | 根拠・次の確認 |
|---|---|---|
| L01 | 完了確認 | A・B完了、85点で条件を満たす |
| L02 | 進行中 | 90点でもBが未完了。Bの完了が残る |
| L03 | 未着手 | 記録取得済みで着手なし、未受験 |
| L04 | 確認不能 | Bの記録を先に確認。未完了と決めない |
| L05 | 進行中 | B未完了と、80点以上の条件が残る |
| L06 | 完了確認 | A・B完了、80点で境界を満たす |
L02は小テストに合格する値ですが、研修全体の条件は満たしていません。L06は80点以上という条件なので、80点ちょうどを除外しません。L04は80点でも、Bの記録がないため全条件の成立を確認できません。
この分類は研修事務の記録整理であり、受講者の能力や勤務評価を決めるものではありません。完了条件を満たしたことと、実務で知識を使いこなせることも別です。学習成果を測るなら、目的に合った評価を別に設計します。
確認不能を除く場合は、分母を示す
今回の状態は、完了確認2人、進行中2人、未着手1人、確認不能1人で、合計6人です。全対象6人のうち完了を確認できたのは2人なので、2 ÷ 6で約33.3%です。確認不能の1人の実際の完了状態は、この割合から決まりません。
判定できる5人だけを分母にすれば2 ÷ 5=40%ですが、それは「判定可能な5人内」の値です。40%を対象者6人全体の完了率として報告しません。人数、分母、記録の不足を一緒に残します。
表は横にスクロールできます
| 報告項目 | 今回の値 |
|---|---|
| 対象者 | 6人 |
| 完了確認 | 2人/対象6人、約33.3% |
| 進行中 | 2人 |
| 未着手 | 1人 |
| 確認不能 | 1人 |
| 判定可能者に限定した値 | 完了確認2人/判定可能5人、40% |
任意教材や対象外の研修を分母へ混ぜず、対象者が追加された場合は、同じ名簿の進捗が変わったことと名簿自体の変更を区別します。未完了者だけを抽出した一覧から、全体の割合を逆算しないでください。
固定例の状態と人数を検算する
次のPythonは、上の架空条件を使います。取得済みかを最初に見て、記録不明を未完了へ変換しません。小テストのNoneは、この固定例では取得済み記録に受験がないことを表します。
from collections import Counter
from fractions import Fraction as F
# A complete, B complete, quiz score, started, records complete
rows = {
"L01": (True, True, 85, True, True),
"L02": (True, False, 90, True, True),
"L03": (False, False, None, False, True),
"L04": (True, None, 80, True, False),
"L05": (True, False, 70, True, True),
"L06": (True, True, 80, True, True),
}
def classify(row):
a, b, score, started, records_complete = row
if not records_complete:
return "UNKNOWN"
if a and b and score is not None and score >= 80:
return "COMPLETE"
return "IN_PROGRESS" if started else "NOT_STARTED"
status = {key: classify(row) for key, row in rows.items()}
assert status == {
"L01": "COMPLETE", "L02": "IN_PROGRESS", "L03": "NOT_STARTED",
"L04": "UNKNOWN", "L05": "IN_PROGRESS", "L06": "COMPLETE",
}
counts = Counter(status.values())
assert counts == {"COMPLETE": 2, "IN_PROGRESS": 2, "NOT_STARTED": 1, "UNKNOWN": 1}
assert sum(counts.values()) == len(rows) == 6
assert F(counts["COMPLETE"], len(rows)) == F(1, 3)
assert F(counts["COMPLETE"], len(rows) - counts["UNKNOWN"]) == F(2, 5)
print(status, counts)
これは条件を固定した例の計算で、LMSのログを取得する処理ではありません。ID重複、得点の範囲、型、完了と着手の矛盾、すべての欠損表現を検出する汎用検査も含みません。実記録では、同じ受講者の複数受験、採点待ち、免除、教材版の変更などを、正式な研修条件へ照らして確認します。
連絡が必要な人と、データ確認が必要な人を分ける
L04は、受講者へ未完了の案内をする前に、記録の取得元を確認する対象です。取得に遅延があるのか、別の教材IDで記録されたのか、そもそも完了していないのかは、この表から分かりません。
L02とL05も同じ内容を一律に案内せず、残っている条件を分けます。ただし、期限、免除、再受験の可否、送付先の確認がないため、今回の表だけで督促や再受験案内を確定しません。ここで作るのは確認候補で、実際に通知した結果ではありません。
担当者が記録を補ったら、元の確認不能を消して説明不能にするのではなく、集計版と更新理由を残します。完了確認の人数が増えても、新たに受講したのか、既存の記録が届いたのかを区別します。
AIへは、不足と根拠を返させる
架空の受講者L01~L06を、教材A・B完了かつ小テスト80点以上で整理してください。
判定用記録が取得できていない場合は確認不能とし、未完了や未着手へ置き換えないでください。
未着手には、取得済み記録で着手なしという根拠を使ってください。
各人の状態、根拠、残条件、先に確認することを分けて返してください。
全対象者数と確認不能を示し、分母を変えた割合を全体の値として使わないでください。
完了を理解度や勤務評価へ読み替えないでください。
出力:個別確認表、状態別人数、分母付きの割合、未確認事項。
この依頼ではLMS更新、証明書発行、受講者への連絡は行いません。
この依頼と分類は手製例で、AIの正答率を測った結果ではありません。報告前に、対象者6人が一つずつ状態へ対応するか、80点の境界、未取得と未実施、分母の説明を確認します。教材の一つの表示から全体を決めず、正式な条件と記録へ戻れる表として渡してください。
参考資料
公式資料の確認日:2026年10月20日。受講者、教材、得点、条件、進捗表は独自の架空例です。掲載Pythonと人数計算をローカルで検査しました。実受講、LMS設定・ログ取得、AI分類、学習成果、通知、証明書、画面表示は未検証です。
