안녕하세요, まさきん입니다.
미취학 아이가 있으면 히라가나 연습 프린트를 추가로 사는 일이 많습니다. 다만 시중 학습지는 “그 아이가 이미 쓸 수 있는 글자”도 똑같이 출제합니다.
그래서 틀린 글자만 반복해서 출제하는 프린트를 AI로 자동 생성하는 구조를 만들었습니다. 이번에는 출제 풀 관리 방법부터 채점 데이터 구조까지 구체적으로 소개합니다.
계기는 “할 수 있는 글자까지 매번 시켜야 한다”는 것
시중 학습지는 오십음을 순서대로 연습하는 구성이 많습니다. 이미 쓸 수 있는 글자도, 못 쓰는 글자도 같은 횟수만큼 나옵니다.
아이 입장에서는 할 수 있는 글자 연습은 지루합니다. 못 쓰는 글자에 더 시간을 쓰고 싶은데 학습지 구성이 그걸 허락하지 않습니다.
그래서 틀린 글자만 기록하고, 잊어버릴 때쯤 다시 출제하는 구조를 만들었습니다.
출제를 여러 섹션으로 나누고 있다
한 장의 프린트에 성격이 다른 연습을 조합하고 있습니다.
- 따라 쓰기: 흐린 예시를 따라 쓰며 운필 자체를 연습하는 섹션
- 그림→히라가나: 그림을 보고 단어의 첫 글자를 쓰는 섹션. 소리와 글자의 연결을 훈련한다
- 비슷한 글자 구별: “さ・ち”, “ぬ・ね”처럼 모양이 비슷한 히라가나를 구별하는 섹션
- 단어 쓰기: 2~3글자 단어를 흐린 예시와 함께 따라 쓴 뒤 직접 옮겨 쓰는 섹션
각 섹션의 출제 수는 환경 변수 같은 형태로 조정할 수 있게 하고 있습니다. “따라 쓰기 4문제·비슷한 글자 2문제·단어 쓰기 4문제”처럼, 섹션별 문제 수를 설정 파일의 숫자만으로 바꿀 수 있는 구조입니다. 출제 수를 0으로 한 섹션은 프린트에 그려지지 않고, 제목 기호는 표시되는 섹션만으로 다시 붙여집니다.
출제를 멈추고 늘리는 판단도 풀의 숫자만으로 끝난다
각 섹션의 출제 후보는 코드 앞부분에 정리한 “풀”이라는 딕셔너리에 담아두고 있습니다. 새로운 글자나 단어를 추가하고 싶을 때는 이 딕셔너리에 한 줄 더하기만 하면 됩니다.
# 출제 풀의 예(실제 키나 단어는 간략화했습니다)
POOL_TRACE = {
"a1": {"char": "あ", "word": "あひる"},
"a2": {"char": "い", "word": "いぬ"},
# ...
}
POOL_WORD = {
"w1": {"word": "くつ", "len": 2},
"w2": {"word": "さかな", "len": 3},
# ...
}
각 id를 고유하게 해두면, 이후에는 복습 대상 목록과 대조하기만 하면 출제가 완성됩니다. 출제 범위를 넓히고 싶을 때도 코드 전체를 손댈 필요는 없습니다.
구조의 기반은 “망각 곡선”
하고 있는 일의 핵심은 틀린 글자를 단계별로 관리하는 것입니다. 맞힐 때마다 단계가 올라가고, 다음 출제까지의 간격이 늘어납니다.
| 단계 | 다음 출제까지의 간격 |
|---|---|
| 0(첫 오답) | 다음 날 |
| 1 | 3일 후 |
| 2 | 1주일 후 |
| 3 | 2주일 후 |
| 4 | ”졸업”(이후 출제하지 않음) |
맞히면 단계가 1 올라가고, 틀리면 0으로 돌아갑니다. 단계 4까지 도달한 글자는 연습 프린트에 더 이상 나오지 않습니다.
이 상태는 다음과 같은 단순한 JSON으로 유지하고 있습니다.
{
"あ": {"stage": 2, "due": "2026-09-20"},
"ぬ": {"stage": 0, "due": "2026-09-13"},
"ね": {"stage": 4, "due": null}
}
매일 프린트를 생성할 때는 이 due, 즉 다음 출제일이 오늘 이전인 글자만 “오늘의 복습 대상”으로 추출합니다. 복습 대상이 되는 글자의 전체 모집단이 늘어도, 실제로 출제하는 것은 “지금 내야 할 글자”만으로 좁혀지므로 프린트가 끝없이 길어지지 않습니다.
명령줄에서는 다음과 같은 조작으로 상태를 갱신하고 있습니다.
# 오늘의 학습지를 생성한다
python3 daily_hiragana_drill.py generate
# 맞힌 글자의 단계를 올린다(출제 간격이 늘어난다)
python3 daily_hiragana_drill.py mark-correct あ い
# 틀린 글자는 단계 0으로 리셋한다(다음 날 다시 출제된다)
python3 daily_hiragana_drill.py mark-miss の は
# 지금의 복습 대상·졸업 현황을 목록으로 확인한다
python3 daily_hiragana_drill.py srs-status
이 구조의 좋은 점은 “그날 마침 복습해야 할 글자”만 자동으로 선택된다는 것입니다. 부모가 “이제 이 글자도 복습시켜야지”라고 생각할 필요가 없습니다.
가계 안에도 방치하면 재검토를 잊기 쉬운 것이 있습니다. 휴대폰 요금도 그중 하나일지 모릅니다.
채점 기준은 역시 “체크만으로”
프린트의 채점도 기준을 통일하고 있습니다. 각 문제 왼쪽에 있는 체크란이 칠해져 있는지 여부만으로 정답·오답을 판단합니다.
글자 모양이 다소 흐트러져 있어도 체크란이 비어 있으면 정답으로 취급합니다. 미취학 아이의 글자는 아직 모양이 안정되지 않았습니다. 너무 엄격하게 평가하면 연습 자체가 싫어질 수 있다고 느낍니다.
채점 완료된 프린트를 촬영해서 AI에게 읽히는 경우, 체크란 열만 잘라내어 확대한 다음 판정시키고 있습니다. 전체를 축소한 채로 두면 칠해짐이 뭉개져 보이지 않을 수 있기 때문입니다.
섹션이 여러 개 있으면 같은 글자가 다른 섹션에서 “정답”과 “오답” 양쪽으로 읽히는 경우가 있습니다. 이 경우는 오답을 우선해서 한 번만 반영하도록 하고 있습니다. “다 한 것 같다”고 놓치는 것보다 신중하게 다루는 쪽이 안전하다는 판단입니다.
또한 정답·오답의 기준이 되는 답안 예시는 아이에게 보여주지 않습니다. 답을 보면서 쓰는 것이 아니라, 먼저 스스로 써보는 것을 우선하고 있습니다.
아이가 거부감을 가졌을 때의 대처
운영하는 과정에서 어떤 발전적인 출제 패턴만 아이가 강하게 싫어하게 된 적이 있었습니다. 억지로 시키면 연습 전체에 대한 거부감으로 이어질 수 있습니다.
그래서 그 출제 패턴만 출제 수 0으로 설정하고 일시적으로 멈췄습니다. 남은 출제 몫은 다른 하기 쉬운 섹션으로 나누고 있습니다. 풀과 로직 자체는 남겨두었으므로, 다시 시작하고 싶을 때는 출제 수 설정을 원래대로 되돌리기만 하면 됩니다.
“정한 커리큘럼을 무너뜨리지 않는” 것보다 “연습 자체를 싫어하게 만들지 않는” 것을 우선했습니다. 구조는 아이의 상태를 보면서 조정해도 되는 것이라고 생각합니다.
생성하는 프린트의 내용
AI에게 전달하고 있는 지시를 일반화해서 소개합니다.
미취학 아동용 히라가나 연습 프린트를 한 장 작성해주세요.
- 출제할 글자·단어는 전달받은 "복습 대상 목록"에서만 고를 것
- 섹션별 출제 수는 지정된 숫자를 따를 것
- 따라 쓰기용 흐린 글자와, 직접 쓰는 칸 모두를 준비할 것
- 글자의 균형을 잡기 쉽도록 줄을 크게 설정할 것
복습 대상 목록은 앞서 설명한 단계 관리로부터 자동으로 만들고 있습니다. 프린트 자체는 인쇄해서 그대로 쓸 수 있는 형식으로 출력하고, 채점용 답안표는 별도 파일로 출력하고 있습니다. 답안표는 아이에게 주지 않고 채점하는 쪽만 쓰는 용도입니다.
해보고 느낀 점
가장 큰 변화는 연습의 밀도가 올라간 것입니다. 할 수 있는 글자를 여러 번 쓰게 하는 시간이 없어지고, 못하는 글자에만 집중할 수 있게 되었습니다.
한편 책상에 앉는 시간 자체를 무리하게 늘리려고는 생각하지 않습니다. 짧은 시간이라도 목표로 한 글자만 연습할 수 있으면 충분하다고 생각합니다.
이런 분에게 추천합니다
- 시중 학습지가 “우리 아이에게 안 맞는다”고 느끼는 분
- 망각 곡선 같은 개념을 가정 학습에 도입해보고 싶은 분
- 출제 풀을 코드로 관리하는 정도의 가벼운 작업에 거부감이 없는 분
정리
틀린 글자만 단계별로 관리하고, 잊어버릴 때쯤 복습시키는 구조를 만들었습니다. 시중 학습지에는 없는 “그 아이 전용” 출제가 가능한 것이 가장 큰 장점이라고 느낍니다.
잘 안 되는 부분이 있으면 억지로 밀어붙이지 않고 출제 내용을 조정한다. 구조화라고 해도 아이의 상태를 보면서 계속 손을 대는 것이 중요하지 않을까요.
학습지뿐만 아니라 집 안의 구조는 이렇게 조금씩 재검토하고 있습니다. 휴대폰 요금 같은 매달의 고정비도 마찬가지로 방치하기 쉽습니다. 가끔은 구조째 재검토해봐도 좋을지 모릅니다.
이 글에는 제휴 광고가 포함되어 있습니다. 이 사이트의 링크를 통해 상품·서비스에 신청하시면 제휴사로부터 보상을 받을 수 있습니다. 또한 운영자는 라쿠텐 그룹 소속 직원으로, 사원 추천 프로그램을 통해 보상을 받는 경우가 있습니다. 기사 내용과 평가는 광고 유무와 관계없이 운영자의 실제 경험과 조사를 바탕으로 작성했지만, 위 관계를 이해하신 후 읽어 주시기 바랍니다. 자세한 내용은 면책조항·제휴 링크 안내를 참고해 주세요. 면책조항·제휴 링크 안내
이 글에는 기계 번역이 포함되어 있습니다. 정확한 조건은 라쿠텐 모바일 공식 사이트의 다국어 페이지에서 확인해 주세요.
라쿠텐 모바일의 통신 지역·전파 상황이 궁금하신 분은, 공식 전파 개선·조사 요청 양식 을 통해 문의하실 수 있습니다.