읽는 시간 6분개발 회고

Next.js 초보자의 첫 토이 프로젝트 회고:
실시간 글자 수 계산기 개발기 (ft. 바이트 계산 로직)

매번 남의 코드만 따라 치는 '튜토리얼 지옥'에서 벗어나고 싶으신가요? 취준생 시절 제게 꼭 필요했던 가벼운 툴을 직접 만들어본 경험을 나눕니다.

1. 왜 하필 '글자 수 계산기'였을까?

React나 Next.js를 처음 배우면 다들 Todo 리스트부터 만들죠. 저도 그랬습니다. 하지만 막상 만들어놓고 나면 제가 쓰질 않더라고요. 그래서 "내가 진짜로 매일 쓸 만한, 아주 작고 실용적인 툴을 만들어보자!"라고 결심했습니다.

마침 취업 준비를 하면서 자소서 글자 수와 바이트(Byte) 제한 때문에 스트레스를 받던 터라, 잡코리아나 사람인보다 훨씬 가볍고 광고 없는 '나만의 실시간 글자 수 계산기'를 첫 토이 프로젝트로 낙점했습니다.

Next.js 초기 세팅과 VS Code 실행 화면
설레는 마음으로 `npx create-next-app`을 치던 순간

2. 핵심 로직: 실시간 상태 관리와 정규식

가장 먼저 해야 할 일은 사용자가 텍스트를 입력할 때마다 즉각적으로 글자 수를 세는 것이었습니다. React의 useState를 사용해 텍스트 상태를 관리하는 건 어렵지 않았습니다.

// 공백 포함 글자 수
const countWithSpaces = text.length;

// 공백 제외 글자 수 (정규식 활용)
const countWithoutSpaces = text.replace(/\s/g, '').length;

공백 제외 글자 수는 자바스크립트의 정규표현식 /\s/g를 사용해 모든 공백 문자(스페이스, 탭, 줄바꿈)를 빈 문자열로 치환한 뒤 길이를 측정했습니다. 코드는 한 줄이지만 이 작은 로직이 자소서 작성할 때 얼마나 큰 도움이 되는지 모릅니다.

3. 가장 큰 난관: 한글과 영문의 바이트(Byte) 차이

단순히 글자 수를 세는 건 금방 끝났지만, 기업 제출용 DB 용량 제한 기준인 바이트(Byte) 계산에서 멘붕이 왔습니다. 영문과 숫자는 1Byte지만, 한글은 인코딩 방식(EUC-KR vs UTF-8)에 따라 2Byte나 3Byte로 계산되기 때문이죠.

보통 국내 채용 포털이나 기업 DB는 EUC-KR 기준을 많이 사용하므로, 한글은 2Byte, 영문/숫자/공백은 1Byte로 취급해야 했습니다. charCodeAt() 메서드를 활용해 아스키코드 값을 비교하는 방식으로 해결했습니다.

charCodeAt을 활용한 한글 바이트 계산 자바스크립트 코드 스니펫
문자 코드가 127을 넘어가면 한글(2바이트)로 처리하는 핵심 로직

4. Next.js를 선택한 이유와 배포

"단순한 계산기면 그냥 바닐라 JS로 만들지 왜 Next.js를 썼냐?"라고 물으실 수 있습니다. 가장 큰 이유는 SEO(검색엔진 최적화)라우팅의 편리함 때문이었습니다.

폴더 기반 라우팅 덕분에 /tools/word-counter라는 깔끔한 URL을 금방 만들 수 있었고, Next.js의 내장 Metadata API를 사용해 검색 노출을 위한 세팅도 수월했습니다. Vercel을 통한 배포는 깃허브 연결 버튼 몇 번만 누르니 끝나버려서 허무할(?) 정도였고요.

🚀 직접 만든 결과물을 확인해보세요!

로딩 딜레이 0.1초도 없는 초경량 실시간 글자 수 계산기입니다. 취준생, 블로거 분들 모두 자유롭게 사용해 보세요!

실시간 글자 수 계산기 사용해보기

마치며

거창한 프로젝트는 아니지만, 머릿속에 있던 아이디어를 내 손으로 직접 구현하고 배포까지 해봤다는 점에서 엄청난 자신감을 얻었습니다. 혹시 지금 프론트엔드 공부를 막 시작하셨다면, 남들 다 하는 클론 코딩 말고 아주 작더라도 '내가 쓸 도구'를 만들어보시길 강력히 추천합니다!