글자 크기

Rails 8에서 건강기록 입력 폼을 고치며

— 시니어를 위한 UX, 그리고 나 자신을 위한 앱

들어가며

며칠 동안 이런 말을 계속 들었다.

“뭐가 바뀐 거야?”

기능은 고쳤다고 생각했는데,
사용자 입장에서는 아무것도 달라진 게 없어 보였던 순간.
그 말이 괜히 더 아프더라.

오늘은 그 질문에서 시작해서,
“아, 이제 된다”라는 말이 나올 때까지의 기록을 남겨보려 한다.

이 글은 기술 자랑이 아니라,
늦게 배운 개발자가
늦게라도 제대로 만들고 싶어서
버티며 고친 하루의 기록이다.

문제는 생각보다 단순했다

1. 혈압을 누르는데… 왜 또 그냥 ‘건강기록’이지?

대시보드에서 혈압 카드를 눌렀는데,
화면은 늘 똑같은 건강기록 입력창.

사용자 입장에서는
“지금 내가 혈압을 입력하라는 거야, 뭘 하라는 거야?”
이게 너무 당연한 혼란이었다.

2. 슬라이더는 있는데, 말을 안 듣고

수면 시간을 조절하는 슬라이더.
보이긴 하는데, 움직여도 반응이 없거나
값이 저장되지 않거나.

Turbo 환경에서
이벤트 리스너가 조용히 사라지고 있었던 거다.
말 그대로 있는 척만 하는 UI였다.

3. 파라미터는 서로 다른 말을 하고 있었고

뷰는 이렇게 보내고,

params[:health_record][:metrics][:sleep_hours]

모델은 이렇게 기다리고 있었다.

metrics['sleep']['hours']

서로 다른 언어를 쓰는 두 사람이
같은 방에 앉아 있는 꼴이었다.

그래서 이렇게 고쳤다

1. “지금 뭘 입력하는지”부터 분명하게

혈압을 누르면 혈압 기록 화면,
혈당을 누르면 혈당 기록 화면.

당연한 걸 이제야 했다.

<%= link_to new_health_record_path(type: 'blood_pressure') %>

그리고 화면 위에 이렇게 말해줬다.

“혈압 측정 기록입니다.
오늘 측정한 수치를 편하게 적어주세요.”

기능보다 먼저 사람의 상황을 설명하는 문장을 올려두었다.

2. 슬라이더는 Stimulus에게 맡겼다

Rails 8, Turbo 환경에서는
인라인 스크립트보다 Stimulus가 훨씬 정직하다.

export default class extends Controller {
  static targets = ["slider", "display"]

  connect() {
    this.updateValue()
  }

  updateValue() {
    const value = this.sliderTarget.value
    this.displayTarget.textContent = value
  }
}

이제 슬라이더를 움직이면
숫자가 바로 커졌다가, 다시 돌아온다.

작은 변화지만,
“아, 이게 먹히는구나”라는 감각을 주는 순간이다.

3. 데이터는 컨트롤러에서 통역하게 했다

뷰와 모델이 서로 못 알아듣는다면,
누군가는 통역을 해야 한다.

그래서 컨트롤러가 중간에서 정리해줬다.

processed_metrics['sleep'] = {
  'hours' => metrics[:sleep_hours].to_f,
  'quality' => metrics[:sleep_quality]
}

이제 데이터는 더 이상 싸우지 않는다.
그냥 조용히, 제자리를 찾는다.

이번 작업에서 내가 가장 중요하게 생각한 것

1. 명확함

시니어에게는 “알아서”보다
“이건 이런 거예요”가 훨씬 중요하다.

제목, 안내 문구, 버튼 이름.
전부 다시 읽어보며
“이거, 우리 아버지가 봐도 이해할까?”
그 질문을 계속 던졌다.

2. 즉각적인 반응

저장 버튼을 눌렀는데
아무 말도 안 하면 사람은 불안해진다.

그래서 이제는
저장하면 바로 말해준다.

“혈압이 기록되었습니다.”
“혈당이 저장되었습니다.”

이 한 줄이
기술적으로는 사소하지만,
사용자에게는 안심이다.

3. 강요하지 않는 입력

정확한 시간, 정확한 수치.
중요하지만, 늘 기억할 수는 없다.

그래서 이 앱은 이렇게 말한다.

“대충 기억나는 만큼만 적어도 괜찮아요.”

이게 이 앱의 철학이다.

관리 앱이 아니라,
기억을 붙잡아주는 동행 앱.

배운 것

이번 작업은 버그 수정이 아니라
사고방식 수정이었다.
• “정확해야 한다”에서
→ “사람은 원래 이렇게 입력한다”로
• “기능이 있으면 된다”에서
→ “쓰는 순간이 편해야 한다”로
• “일단 만들자”에서
→ “누가 쓸지 먼저 생각하자”로

마무리

1월 6일, 병원에서
직접 이 앱을 쓰며 느꼈던 불편함이
오늘에서야 정리됐다.

그동안 계속 이런 생각이 들었다.

이 앱, 내가 쓰기에도 불편하면
남은 더 불편하지 않을까?

그래서 결국 이건
사용자를 위한 개선이면서
나 자신을 위한 개선이었다.

이제는 조금 자신 있게 말할 수 있다.

“이제는, 기록할 때 불안하지 않다.”

그리고 이게
내가 만들고 싶었던 앱의 모습이다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다