[독일어 학습 앱 개발기 12편] 쓰기 학습 ② 필기 입력은 왜 분리했을까 – 손으로 쓰는 학습의 기준

2026. 1. 24. 05:12AI Product Building/HalloGerman

반응형

이 글의 핵심
- 독일어 학습 앱에서 필기 입력을 타이핑과 분리한 이유
- Android에서 필기 입력을 안정적으로 구현하기 위한 설계 기준


11편에서 타이핑 기반 쓰기 학습을 다뤘다면, 이번 12편에서는 두 번째 쓰기 학습 방식인 필기 입력을 다룬다.

HalloGerman에서 필기 학습은 ‘보조 기능’이 아니라, 특정 사용자에게는 가장 강력한 기억 강화 도구다. 다만, 이 기능은 반드시 분리해서 설계해야 한다.


1. 필기 학습은 왜 별도 기능이어야 할까

많은 학습 앱들이 타이핑과 필기를 하나의 쓰기 기능으로 묶는다. 하지만 실제 사용성은 전혀 다르다.

  • 타이핑은 빠르고 반복에 적합하다
  • 필기는 느리지만 기억에 오래 남는다
  • 사용자 선호도가 극단적으로 갈린다

이 차이를 무시하고 하나로 묶으면, 결국 둘 다 어중간해진다. 그래서 HalloGerman에서는 필기 학습을 완전히 분리된 단계로 설계했다.


2. 필기 입력의 현실적인 한계

필기 입력은 학습 효과는 높지만, 기술적으로는 매우 까다롭다.

  • 손글씨 인식 정확도 문제
  • 기기별 성능 차이
  • 사용자 필체 편차

특히 외국어 학습에서는 필기 인식 오류가 학습 스트레스로 직결된다. 그래서 이 기능은 ‘정답 판별’보다 쓰기 행위 자체에 초점을 맞췄다.


3. HalloGerman의 필기 학습 설계 원칙

필기 학습을 구현하면서 정한 원칙은 명확하다.

  • 인식 정확도를 강제하지 않는다
  • 틀림을 오류로 취급하지 않는다
  • ‘써보는 경험’을 최우선으로 둔다

즉, 필기 학습은 검사(test)가 아니라 연습(practice)다.


4. 필기 입력 UI 구조

필기 입력 화면은 손글씨에 집중할 수 있도록 단순하게 구성했다.

  • Canvas 영역 (손글씨 입력)
  • 지우기 버튼
  • 다음으로 이동 버튼

텍스트 입력 필드나 자동 변환 결과는 의도적으로 노출하지 않았다. 필기의 목적은 ‘보여주기’가 아니라 ‘기억 강화’이기 때문이다.


4-1. Canvas 기반 필기 입력 코드 예시

override fun onTouchEvent(event: MotionEvent): Boolean {
    val x = event.x
    val y = event.y

    when (event.action) {
        MotionEvent.ACTION_DOWN -> path.moveTo(x, y)
        MotionEvent.ACTION_MOVE -> path.lineTo(x, y)
    }

    invalidate()
    return true
}

// Compose Canvas에서 MotionEvent를 직접 처리한다.
// 필기는 "그려지는 것"과 "학습 완료 여부"를 분리한다.

.pointerInteropFilter { event ->
    when (event.actionMasked) {
        MotionEvent.ACTION_DOWN -> {
            currentPath.moveTo(event.x, event.y)
            true
        }
        MotionEvent.ACTION_MOVE -> {
            currentPath.lineTo(event.x, event.y)
            true
        }
        MotionEvent.ACTION_UP -> {
            // 하나의 획(stroke)이 끝났다고 판단
            paths.add(Path().apply { addPath(currentPath) })
            currentPath.reset()
            true
        }
        else -> false
    }
}

이 방식은 정교한 손글씨 인식보다 ‘직접 쓰는 행위’에 집중할 수 있게 해준다.


5. 필기 결과를 저장하지 않은 이유

처음에는 필기 결과를 이미지로 저장하는 방식도 고민했다. 하지만 곧 한계가 명확해졌다.

  • 저장 데이터 용량 증가
  • 학습 효과 대비 유지 비용 증가
  • 개인정보·보안 이슈

그래서 HalloGerman에서는 필기 결과를 서버나 로컬에 저장하지 않는다. 필기 학습은 그 순간의 학습 경험으로 충분하다고 판단했다.


6. 타이핑 학습과 필기 학습의 역할 분담

쓰기 학습은 하나지만, 역할은 명확히 다르다.

  • 타이핑 → 정확한 철자 훈련
  • 필기 → 기억 강화 및 집중

이 두 가지가 분리되어 있기 때문에, 사용자는 자신의 학습 성향에 맞게 선택할 수 있다. 이 선택권이 학습 지속성을 만든다.


7. 필기 학습이 다른 기능과 연결되는 방식

필기 학습은

  • 플래시 카드 암기
  • 말하기 학습
  • 홈 화면 진도 모니터링

과 함께 작동하며, 단어를 여러 감각으로 반복 노출시킨다. 이 다중 자극이 장기 기억 형성에 결정적인 역할을 한다.


8. 다음 편 예고

다음 13편에서는 쓰기·말하기와 연결되는 플래시 카드 기반 암기 기능을 다룬다. 단어를 ‘외우게 만드는 구조’를 어떻게 설계했는지 설명할 예정이다.


참고 자료

 

반응형